1
0
mirror of https://github.com/djhackersdev/bemanitools.git synced 2024-11-28 00:10:51 +01:00

Properly save/load the new analog invert option

This commit is contained in:
ahnada 2023-12-09 01:38:07 -08:00 committed by icex2
parent f37f216c69
commit 329d6a80a3
7 changed files with 39 additions and 1 deletions

View File

@ -49,6 +49,7 @@ static INT_PTR analog_ui_handle_init(HWND hwnd, struct analog_def *def);
static void analog_ui_handle_init_label(HWND hwnd);
static void analog_ui_handle_init_dev(HWND hwnd);
static void analog_ui_handle_init_sensitivity(HWND hwnd);
static void analog_ui_handle_init_invert(HWND hwnd);
static bool analog_ui_match_device(struct hid_stub *hid);
static void analog_ui_populate_controls(HWND hwnd);
static INT_PTR analog_ui_handle_device_change(HWND hwnd);
@ -258,6 +259,7 @@ static INT_PTR analog_ui_handle_init(HWND hwnd, struct analog_def *def)
analog_ui_handle_init_label(hwnd);
analog_ui_handle_init_dev(hwnd);
analog_ui_handle_init_sensitivity(hwnd);
analog_ui_handle_init_invert(hwnd);
return TRUE;
}
@ -353,6 +355,17 @@ static void analog_ui_handle_init_sensitivity(HWND hwnd)
EnableWindow(slider, !mapper_is_analog_absolute(ui->def->tag));
}
static void analog_ui_handle_init_invert(HWND hwnd)
{
struct analog_ui *ui;
ui = (struct analog_ui *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
if (mapper_get_analog_invert(ui->def->tag)) {
SendMessage(GetDlgItem(hwnd, IDC_ANALOG_INVERT), BM_SETCHECK, BST_CHECKED, 0);
}
}
static bool analog_ui_match_device(struct hid_stub *hid)
{
struct hid_control *controls;

View File

@ -35,6 +35,7 @@ EXPORTS
mapper_get_action_map
mapper_get_analog_map
mapper_get_analog_sensitivity
mapper_get_analog_invert
mapper_get_npages
mapper_get_nanalogs
mapper_get_nlights

View File

@ -15,6 +15,7 @@ bool mapper_get_action_map(
uint8_t action, uint8_t page, struct mapped_action *ma);
bool mapper_get_analog_map(uint8_t analog, struct mapped_analog *ma);
int32_t mapper_get_analog_sensitivity(uint8_t analog);
bool mapper_get_analog_invert(uint8_t analog);
uint8_t mapper_get_nanalogs(void);
uint8_t mapper_get_nlights(void);
uint8_t mapper_get_npages(void);

View File

@ -144,6 +144,11 @@ int32_t mapper_get_analog_sensitivity(uint8_t analog)
return mapper_impl_get_analog_sensitivity(mapper_inst, analog);
}
bool mapper_get_analog_invert(uint8_t analog)
{
return mapper_impl_get_analog_invert(mapper_inst, analog);
}
uint8_t mapper_get_nanalogs(void)
{
return mapper_impl_get_nanalogs(mapper_inst);

View File

@ -74,6 +74,7 @@ static bool mapper_impl_config_load_analogs(struct mapper *m, FILE *f)
char *dev_node;
struct mapped_analog ma;
int32_t sensitivity;
bool invert;
uint8_t nanalogs;
uint8_t i;
@ -101,8 +102,13 @@ static bool mapper_impl_config_load_analogs(struct mapper *m, FILE *f)
return false;
}
if (!read_u8(f, &invert)) {
return false;
}
mapper_impl_set_analog_map(m, i, &ma);
mapper_impl_set_analog_sensitivity(m, i, sensitivity);
mapper_impl_set_analog_invert(m, i, invert);
}
free(dev_node);
@ -211,6 +217,7 @@ static void mapper_impl_config_save_analogs(struct mapper *m, FILE *f)
{
struct mapped_analog ma;
int32_t sensitivity;
bool invert;
uint8_t nanalogs;
uint8_t i;
@ -224,10 +231,12 @@ static void mapper_impl_config_save_analogs(struct mapper *m, FILE *f)
write_str(f, "");
} else {
sensitivity = mapper_impl_get_analog_sensitivity(m, i);
invert = mapper_impl_get_analog_invert(m, i);
write_str(f, hid_stub_get_dev_node(ma.hid));
write_u32(f, &ma.control_no);
write_u32(f, &sensitivity);
write_u8(f, &invert);
}
}
}

View File

@ -175,7 +175,6 @@ static void analog_mapping_bind(struct analog_mapping *am)
am->analog_max = ctl->value_max;
am->inv_analog_range = 1.0 / ((int64_t)ctl->value_max - ctl->value_min);
am->absolute = !(ctl->flags & HID_FLAG_RELATIVE);
am->invert = false;
am->valid = true;
read_fail:
@ -425,6 +424,15 @@ int32_t mapper_impl_get_analog_sensitivity(struct mapper *m, uint8_t analog)
return m->analogs[analog].sensitivity;
}
bool mapper_impl_get_analog_invert(struct mapper* m, uint8_t analog)
{
if (analog >= m->nanalogs) {
return 0;
}
return m->analogs[analog].invert;
}
uint8_t mapper_impl_get_nanalogs(struct mapper *m)
{
return m->nanalogs;

View File

@ -57,6 +57,7 @@ bool mapper_impl_get_analog_map(
bool mapper_impl_get_action_map(
struct mapper *m, uint8_t action, uint8_t page, struct mapped_action *ma);
int32_t mapper_impl_get_analog_sensitivity(struct mapper *m, uint8_t analog);
bool mapper_impl_get_analog_invert(struct mapper *m, uint8_t analog);
uint8_t mapper_impl_get_nanalogs(struct mapper *m);
uint8_t mapper_impl_get_nlights(struct mapper *m);
uint8_t mapper_impl_get_npages(struct mapper *m);