Hi All, On 4/24/24 2:28 PM, Hans de Goede wrote: > Hi All, > > Here is v2 of my patch-series to refactor thinkpad_acpi's hotkey handling > and to add support for some new hotkeys on new models. > > Changes in v2: > - Some small code style tweaks in response to reviews > - Add various Reviewed-by and Tested-by tags > > Relevant parts of v1 cover-letter: > > I have been very careful to not introduce any changes wrt support for > the original ThinkPad models / hotkeys which use the hotkey_*_mask > related code. > > I've also done my best to avoid any *significant* functional change but > there are still some functional changes, which should all not impact > userspace compatibility: > > 1. Adaptive keyboard special keys will now also send EV_MSC events with > the scancode, just like all the other hotkeys. > > 2. Rely on the input core for KEY_RESERVED suppression. This means that > keys marked as KEY_RESERVED will still send EV_MSC evdev events when > pressed (which helps users with mapping them to non reserved KEY_FOO > values if desired). > > 3. Align the keycodes for volume up/down/mute and brightness up/down with > those set by userspace through udev upstream's hwdb. Note these are all > for keys which are suppressed by hotkey_reserved_mask by default. > So this is only a functional change for users who override the default > hotkey-mask *and* who do not have udev's default hwdb installed. > > 4. Suppress ACPI netlink event generation for unknown 0x1xxx hkey events to > avoid userspace starting to rely on the netlink events for new hotkeys > before these have been added to the keymap, only to have the netlink > events get disabled by the adding of the new hotkeys to the keymap. > > This should not cause a behavior change for existing models since all > currently known 0x1xxx events have a mapping. > > Here is a quick breakdown of the patches in this series: > > Patch 1 - 2: Fix a small locking issue on rmmod the only problem here > really is a lockdep warning, so I plan to route these fixes through > for-next together with the rest to keep things simple. > > Patch 3 - 14: Do a bunch of cleanups and refactoring > > Patch 15: Implements functional change no 4. I really kinda want to just > completely disable ACPI netlink event generation when also sending evdev > events instead of reporting these twice. But for the 0x11xx / 0x13xx > hkey events the kernel has send ACPI netlink events for years now. So > this disables ACPI netlink events for any new hotkeys going forward. > > Patch 16 - 18: Refactor / cleanup reserved key handling > > Patch 19: Actually move to sparse-keymaps > > Patch 20: Update the keymap for 2 adaptive kbd Fn row keys > > Patch 21 - 24: Mark's original patches adding support for the new Fn + N > key combo and for trackpoint doubletap slightly reworked to use > the new sparse-keymap. I've added this series to my review-hans (soon to be for-next) branch now. Regards, Hans > Hans de Goede (20): > platform/x86: thinkpad_acpi: Take hotkey_mutex during hotkey_exit() > platform/x86: thinkpad_acpi: Provide hotkey_poll_stop_sync() dummy > platform/x86: thinkpad_acpi: Drop setting send_/ignore_acpi_ev > defaults twice > platform/x86: thinkpad_acpi: Drop ignore_acpi_ev > platform/x86: thinkpad_acpi: Use tpacpi_input_send_key() in adaptive > kbd code > platform/x86: thinkpad_acpi: Do hkey to scancode translation later > platform/x86: thinkpad_acpi: Make tpacpi_driver_event() return if it > handled the event > platform/x86: thinkpad_acpi: Move adaptive kbd event handling to > tpacpi_driver_event() > platform/x86: thinkpad_acpi: Move special original hotkeys handling > out of switch-case > platform/x86: thinkpad_acpi: Move hotkey_user_mask check to > tpacpi_input_send_key() > platform/x86: thinkpad_acpi: Always call tpacpi_driver_event() for > hotkeys > platform/x86: thinkpad_acpi: Drop tpacpi_input_send_key_masked() and > hotkey_driver_event() > platform/x86: thinkpad_acpi: Move hkey > scancode mapping to > tpacpi_input_send_key() > platform/x86: thinkpad_acpi: Move tpacpi_driver_event() call to > tpacpi_input_send_key() > platform/x86: thinkpad_acpi: Do not send ACPI netlink events for > unknown hotkeys > platform/x86: thinkpad_acpi: Change hotkey_reserved_mask > initialization > platform/x86: thinkpad_acpi: Use correct keycodes for volume and > brightness keys > platform/x86: thinkpad_acpi: Drop KEY_RESERVED special handling > platform/x86: thinkpad_acpi: Switch to using sparse-keymap helpers > platform/x86: thinkpad_acpi: Add mappings for adaptive kbd > clipping-tool and cloud keys > > Mark Pearson (4): > platform/x86: thinkpad_acpi: Simplify known_ev handling > platform/x86: thinkpad_acpi: Support for trackpoint doubletap > platform/x86: thinkpad_acpi: Support for system debug info hotkey > platform/x86: thinkpad_acpi: Support hotkey to disable trackpoint > doubletap > > drivers/platform/x86/thinkpad_acpi.c | 854 +++++++++++---------------- > 1 file changed, 353 insertions(+), 501 deletions(-) >