mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
HID: fix generic desktop D-Pad controls
The addition of the "System Do Not Disturb" event code caused the Generic Desktop D-Pad configuration to be skipped. This commit allows both to be configured without conflicting with each other. Fixes: 22d6d060ac77 ("input: Add support for "Do Not Disturb"") Signed-off-by: Terry Tritton <terry.tritton@linaro.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Carlos Llamas <cmllamas@google.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
b5e65ae557
commit
80818fdc06
@ -810,10 +810,23 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
||||
break;
|
||||
}
|
||||
|
||||
if ((usage->hid & 0xf0) == 0x90) { /* SystemControl*/
|
||||
switch (usage->hid & 0xf) {
|
||||
case 0xb: map_key_clear(KEY_DO_NOT_DISTURB); break;
|
||||
default: goto ignore;
|
||||
if ((usage->hid & 0xf0) == 0x90) { /* SystemControl & D-pad */
|
||||
switch (usage->hid) {
|
||||
case HID_GD_UP: usage->hat_dir = 1; break;
|
||||
case HID_GD_DOWN: usage->hat_dir = 5; break;
|
||||
case HID_GD_RIGHT: usage->hat_dir = 3; break;
|
||||
case HID_GD_LEFT: usage->hat_dir = 7; break;
|
||||
case HID_GD_DO_NOT_DISTURB:
|
||||
map_key_clear(KEY_DO_NOT_DISTURB); break;
|
||||
default: goto unknown;
|
||||
}
|
||||
|
||||
if (usage->hid <= HID_GD_LEFT) {
|
||||
if (field->dpad) {
|
||||
map_abs(field->dpad);
|
||||
goto ignore;
|
||||
}
|
||||
map_abs(ABS_HAT0X);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -844,22 +857,6 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
||||
if (field->application == HID_GD_SYSTEM_CONTROL)
|
||||
goto ignore;
|
||||
|
||||
if ((usage->hid & 0xf0) == 0x90) { /* D-pad */
|
||||
switch (usage->hid) {
|
||||
case HID_GD_UP: usage->hat_dir = 1; break;
|
||||
case HID_GD_DOWN: usage->hat_dir = 5; break;
|
||||
case HID_GD_RIGHT: usage->hat_dir = 3; break;
|
||||
case HID_GD_LEFT: usage->hat_dir = 7; break;
|
||||
default: goto unknown;
|
||||
}
|
||||
if (field->dpad) {
|
||||
map_abs(field->dpad);
|
||||
goto ignore;
|
||||
}
|
||||
map_abs(ABS_HAT0X);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (usage->hid) {
|
||||
/* These usage IDs map directly to the usage codes. */
|
||||
case HID_GD_X: case HID_GD_Y: case HID_GD_Z:
|
||||
|
@ -218,6 +218,7 @@ struct hid_item {
|
||||
#define HID_GD_DOWN 0x00010091
|
||||
#define HID_GD_RIGHT 0x00010092
|
||||
#define HID_GD_LEFT 0x00010093
|
||||
#define HID_GD_DO_NOT_DISTURB 0x0001009b
|
||||
/* Microsoft Win8 Wireless Radio Controls CA usage codes */
|
||||
#define HID_GD_RFKILL_BTN 0x000100c6
|
||||
#define HID_GD_RFKILL_LED 0x000100c7
|
||||
|
Loading…
x
Reference in New Issue
Block a user