On Wed, Apr 24, 2024, at 8:28 AM, 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.
>
> 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(-)
>
> --
> 2.44.0
For the entire v2 series:
Reviewed-by: mpearson-len...@squebb.ca
Plus a thank you. I learnt a bunch about the keymap interface/sub-system from
reviewing the patch series; and I think the new sparse-keymap is a really nice
cleanup.
Mark
_______________________________________________
ibm-acpi-devel mailing list
ibm-acpi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel