Re: [PATCH] platform/x86: thinkpad_acpi: handle HKEY 0x4012, 0x4013 events

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

 



Hi,

On 2/7/21 5:34 PM, Alexander Kobel wrote:
> Those events occur when a keyboard cover is attached to a ThinkPad
> Tablet device.  Typically, they are used to switch from normal to tablet
> mode in userspace; e.g., to offer touch keyboard choices when focus goes
> to a text box and no keyboard is attached, or to enable autorotation of
> the display according to the builtin orientation sensor.

Thank you for your patch.

> No attempt is taken to emit an EV_SW event for SW_TABLET_MODE; this is
> left to userspace.

I don't understand this part, in order for userspace to respond to these
events the thinkpad_acpi driver needs to emit events for this; and emitting
SW_TABLET_MODE seems like it is the right thing to do.

Why are you not doing this ?

Note that it is important to only advertise SW_TABLET_MODE functionality
on devices where it actually works. Which might be challenging I guess...

But we have contacts inside Lenovo now, so perhaps they can help.

Mark, Nitin, is there a way for the thinkpad_acpi code to figure out
if 0x4012 / 0x4013 events will be send by a device?

Also is there a way to get the current state of the
keyboard-cover being attached at boot or not ?

Regards,

Hans



> So this patch is mainly to avoid warnings about
> unknown and unhandled events, which are now reported as:
> 
> * Event 0x4012: attached keyboard cover
> * Event 0x4013: detached keyboard cover
> 
> Tested as working on a ThinkPad X1 Tablet Gen 2, 20JCS00C00, and as
> non-interfering with a ThinkPad X1 Carbon 7th, 20QESABM02 (normal
> clamshell, so it does not have a keyboard cover).
> 
> Signed-off-by: Alexander Kobel <a-kobel@xxxxxxxxxx>
> ---
>  drivers/platform/x86/thinkpad_acpi.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
> index c404706379d9..fd5322b5bbbd 100644
> --- a/drivers/platform/x86/thinkpad_acpi.c
> +++ b/drivers/platform/x86/thinkpad_acpi.c
> @@ -174,6 +174,8 @@ enum tpacpi_hkey_event_t {
>                                                      or port replicator */
>         TP_HKEY_EV_HOTPLUG_UNDOCK       = 0x4011, /* undocked from hotplug
>                                                      dock or port replicator */
> +       TP_HKEY_EV_KBD_COVER_ATTACH     = 0x4012, /* attached keyboard cover */
> +       TP_HKEY_EV_KBD_COVER_DETACH     = 0x4013, /* detached keyboard cover */
> 
>         /* User-interface events */
>         TP_HKEY_EV_LID_CLOSE            = 0x5001, /* laptop lid closed */
> @@ -3989,6 +3991,12 @@ static bool hotkey_notify_dockevent(const u32 hkey,
>         case TP_HKEY_EV_HOTPLUG_UNDOCK: /* undocked from port replicator */
>                 pr_info("undocked from hotplug port replicator\n");
>                 return true;
> +       case TP_HKEY_EV_KBD_COVER_ATTACH:
> +               pr_info("attached keyboard cover\n");
> +               return true;
> +       case TP_HKEY_EV_KBD_COVER_DETACH:
> +               pr_info("detached keyboard cover\n");
> +               return true;
> 
>         default:
>                 return false;
> --
> 2.30.0
> 




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux