Re: [PATCH v2 1/7] Input: Add event-codes for macro keys found on various keyboards

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

On Wed, Aug 21, 2019 at 10:59:31PM +0200, Hans de Goede wrote:
> Various keyboards have macro keys, which are intended to have user
> programmable actions / key-sequences bound to them. In some cases these
> macro keys are actually programmable in hardware, but more often they
> basically are just extra keys and the playback of the key-sequence is done
> by software running on the host.
> 
> One example of keyboards with macro-keys are various "internet" / "office"
> keyboards have a set of so-called "Smart Keys", typically a set of 4 keys
> labeled "[A]" - "[D]".
> 
> Another example are gaming keyboards, such as the Logitech G15 Gaming
> keyboard, which has 18 "G"aming keys labeled "G1" to G18", 3 keys to select
> macro presets labeled "M1" - "M3" and a key to start recording a macro
> called "MR" note that even though there us a record key everything is
> handled in sw on the host.
> 
> Besides macro keys the G15 (and other gaming keyboards) also has a buildin
> LCD panel where the contents are controlled by the host. There are 5 keys
> directly below the LCD intended for controlling a menu shown on the LCD.
> 
> The Microsoft SideWinder X6 keyboard is another gaming keyboard example,
> this keyboard has 30 "S"idewinder keys and a key to cycle through
> macro-presets.
> 
> After discussion between various involved userspace people we've come to
> the conclusion that since these are all really just extra keys we should
> simply treat them as such and give them their own event-codes, see:
> https://github.com/libratbag/libratbag/issues/172
> 
> This commit adds the following new KEY_ defines for this:
> 
> KEY_LCD_MENU1 - KEY_LCD_MENU5, KEY_MACRO_RECORD, KEY_MACRO_PRESET_CYCLE,
> KEY_MACRO_PRESET1 - KEY_MACRO_PRESET3, KEY_MACRO1 - KEY_MACRO30.
> 
> The defines leave room for adding some more LCD-menu, preset or macro keys,
> the maximum values above are based on the maximum values to support all
> currently known internet, office and gaming keyboards.

I must say that I am not too hot on having these in the keys space,
with the exception of KEY_MACRO_RECORD_* as we were trying to allow
userspace consumers to know what keys are supposed to mean, instead of
just blanked "programmable" keys. Still, we have the BTN_TRIGGER_HAPPY.

I guess as long as we do not try to use the new range for keys that have
a defined meaning but lack their own button code it is OK.

> 
> BugLink: https://github.com/libratbag/libratbag/issues/172
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  include/uapi/linux/input-event-codes.h | 54 ++++++++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> index 85387c76c24f..80df3a6d6bcb 100644
> --- a/include/uapi/linux/input-event-codes.h
> +++ b/include/uapi/linux/input-event-codes.h
> @@ -650,6 +650,60 @@
>  #define KEY_DATA			0x277
>  #define KEY_ONSCREEN_KEYBOARD		0x278
>  
> +/*
> + * Some keyboards have a buildin LCD panel where the contents are controlled
> + * by the host. Often these have a number of keys directly below the LCD
> + * intended for controlling a menu shown on the LCD. These keys often don't
> + * have any labelling so we just name them KEY_LCD_MENU#
> + */
> +#define KEY_LCD_MENU1			0x280

KEY_KBD_LCD_MENUn to show that it is supposed to control the LCD *on*
the keyboard?

I also wonder if we could move it down by 16 to start with 0x290? This
will give us more buffer for new keycodes.

Thanks.

-- 
Dmitry



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux