My apologies for this second message. I had an unexpected HTML mail bounce from the list. My Reviewed-by still stands. On 12/18/16, Jason Gerecke <killertofu@xxxxxxxxx> wrote: > Thanks for the patch, Ping. This version looks good to me. > Reviewed-by: Jason Gerecke <jason.gerecke@xxxxxxxxx> > > > -- > Jason > --- > Now instead of four in the eights place / > you’ve got three, ‘Cause you added one / > (That is to say, eight) to the two, / > But you can’t take seven from three, / > So you look at the sixty-fours.... > > On Dec 16, 2016 3:26 PM, "Ping Cheng" <pinglinux@xxxxxxxxx> wrote: > >> Wacom Cintiq Pro [1] is a series of display tablets. They support >> 5 touch keys on the tablet. Those keys represent specific functions. >> They turn display off; bring up OSD; bring up On Screen Keyboard; >> bring up desktop control panel; and turn touch on/off. >> >> The most left touch key, that turns display on/off, is controlled by >> firmware. When the display is on, the mode is set. Otherwise, the >> mode is off. So, it works like a switch. That's why we introduced a >> new switch: SW_INDIRECT. The switch defauts to INDIRECT instead of DIRECT >> was a request from useland, more specifically Gnome, developers. >> >> Other four touch keys are true software keys. We use the existing >> KEY_BUTTONCONFIG and KEY_CONTROLPANEL for OSD and control panel. But, >> we have to request two new keys: KEY_ONSCREEN_KEYBOARD and >> KEY_MUTE_DEVICE >> since none of the existing keys support those two actions. >> >> [1] http://www.wacom.com/en-us/products/pen-displays/wacom-cintiq-pro >> >> Signed-off-by: Ping Cheng <ping.cheng@xxxxxxxxx> >> --- >> v3: Since no one has followed up with v2, let's add some more comments >> for >> SW_INDIRECT so we keep the offlist decision public ;). >> --- >> drivers/hid/wacom_wac.c | 25 +++++++++++++++++++++++++ >> drivers/hid/wacom_wac.h | 5 +++++ >> include/linux/mod_devicetable.h | 2 +- >> include/uapi/linux/input-event-codes.h | 6 +++++- >> 4 files changed, 36 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c >> index b1a9a3c..739c592 100644 >> --- a/drivers/hid/wacom_wac.c >> +++ b/drivers/hid/wacom_wac.c >> @@ -1578,6 +1578,26 @@ static void wacom_wac_pad_usage_mapping(struct >> hid_device *hdev, >> wacom_map_usage(input, usage, field, EV_ABS, ABS_WHEEL, >> 0); >> features->device_type |= WACOM_DEVICETYPE_PAD; >> break; >> + case WACOM_HID_WD_DIRECT: >> + wacom_map_usage(input, usage, field, EV_SW, SW_INDIRECT, >> 0); >> + features->device_type |= WACOM_DEVICETYPE_PAD; >> + break; >> + case WACOM_HID_WD_BUTTONCONFIG: >> + wacom_map_usage(input, usage, field, EV_KEY, >> KEY_BUTTONCONFIG, 0); >> + features->device_type |= WACOM_DEVICETYPE_PAD; >> + break; >> + case WACOM_HID_WD_ONSCREEN_KEYBOARD: >> + wacom_map_usage(input, usage, field, EV_KEY, >> KEY_ONSCREEN_KEYBOARD, 0); >> + features->device_type |= WACOM_DEVICETYPE_PAD; >> + break; >> + case WACOM_HID_WD_CONTROLPANEL: >> + wacom_map_usage(input, usage, field, EV_KEY, >> KEY_CONTROLPANEL, 0); >> + features->device_type |= WACOM_DEVICETYPE_PAD; >> + break; >> + case WACOM_HID_WD_MUTE_DEVICE: >> + wacom_map_usage(input, usage, field, EV_KEY, >> KEY_MUTE_DEVICE, 0); >> + features->device_type |= WACOM_DEVICETYPE_PAD; >> + break; >> } >> >> switch (equivalent_usage & 0xfffffff0) { >> @@ -1629,6 +1649,11 @@ static void wacom_wac_pad_event(struct hid_device >> *hdev, struct hid_field *field >> case WACOM_HID_WD_TOUCHRINGSTATUS: >> break; >> >> + case WACOM_HID_WD_DIRECT: >> + features->input_event_flag = true; >> + input_event(input, usage->type, usage->code, !value); >> + break; >> + >> default: >> features->input_event_flag = true; >> input_event(input, usage->type, usage->code, value); >> diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h >> index fb0e50a..7a7b0f1 100644 >> --- a/drivers/hid/wacom_wac.h >> +++ b/drivers/hid/wacom_wac.h >> @@ -105,6 +105,11 @@ >> #define WACOM_HID_WD_ACCELEROMETER_Z (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0403) >> #define WACOM_HID_WD_BATTERY_CHARGING (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0404) >> #define WACOM_HID_WD_BATTERY_LEVEL (WACOM_HID_UP_WACOMDIGITIZER | >> 0x043b) >> +#define WACOM_HID_WD_DIRECT (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0980) >> +#define WACOM_HID_WD_MUTE_DEVICE (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0981) >> +#define WACOM_HID_WD_CONTROLPANEL (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0982) >> +#define WACOM_HID_WD_ONSCREEN_KEYBOARD (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0983) >> +#define WACOM_HID_WD_BUTTONCONFIG (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0986) >> #define WACOM_HID_WD_EXPRESSKEY00 (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0910) >> #define WACOM_HID_WD_EXPRESSKEYCAP00 (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0950) >> #define WACOM_HID_WD_BUTTONHOME (WACOM_HID_UP_WACOMDIGITIZER | >> 0x0990) >> diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_ >> devicetable.h >> index ed84c07..342ddd6 100644 >> --- a/include/linux/mod_devicetable.h >> +++ b/include/linux/mod_devicetable.h >> @@ -291,7 +291,7 @@ struct pcmcia_device_id { >> #define INPUT_DEVICE_ID_LED_MAX 0x0f >> #define INPUT_DEVICE_ID_SND_MAX 0x07 >> #define INPUT_DEVICE_ID_FF_MAX 0x7f >> -#define INPUT_DEVICE_ID_SW_MAX 0x0f >> +#define INPUT_DEVICE_ID_SW_MAX 0x1f >> >> #define INPUT_DEVICE_ID_MATCH_BUS 1 >> #define INPUT_DEVICE_ID_MATCH_VENDOR 2 >> diff --git a/include/uapi/linux/input-event-codes.h >> b/include/uapi/linux/input-event-codes.h >> index d6d071f..32ef894 100644 >> --- a/include/uapi/linux/input-event-codes.h >> +++ b/include/uapi/linux/input-event-codes.h >> @@ -641,6 +641,9 @@ >> * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.) >> */ >> #define KEY_DATA 0x275 >> +/* same as SW_MUTE_DEVICE but triggered by a key */ >> +#define KEY_MUTE_DEVICE 0x278 >> +#define KEY_ONSCREEN_KEYBOARD 0x279 >> >> #define BTN_TRIGGER_HAPPY 0x2c0 >> #define BTN_TRIGGER_HAPPY1 0x2c0 >> @@ -781,7 +784,8 @@ >> #define SW_LINEIN_INSERT 0x0d /* set = inserted */ >> #define SW_MUTE_DEVICE 0x0e /* set = device disabled */ >> #define SW_PEN_INSERTED 0x0f /* set = pen inserted */ >> -#define SW_MAX 0x0f >> +#define SW_INDIRECT 0x10 /* set = not a direct input device >> */ >> +#define SW_MAX 0x1f >> #define SW_CNT (SW_MAX+1) >> >> /* >> -- >> 1.8.3.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-input" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > -- Jason --- Now instead of four in the eights place / you’ve got three, ‘Cause you added one / (That is to say, eight) to the two, / But you can’t take seven from three, / So you look at the sixty-fours.... -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html