* [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command
@ 2025-03-21 19:30 Mario Limonciello
2025-03-21 21:16 ` Armin Wolf
0 siblings, 1 reply; 6+ messages in thread
From: Mario Limonciello @ 2025-03-21 19:30 UTC (permalink / raw)
To: mario.limonciello, Shyam-sundar.S-k, hdegoede, ilpo.jarvinen
Cc: platform-driver-x86
From: Mario Limonciello <mario.limonciello@amd.com>
In practice userspace software doesn't react to KEY_SCREENLOCK by
default. So any time that the PMF policies would suggest to lock
the screen (for example from an HPD sensor event) userspace isn't
configured to do it properly.
However userspace is configured for meta + L as this is the default
in the ecosystem. Adjust the PMF driver to send meta + L.
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
drivers/platform/x86/amd/pmf/tee-if.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/platform/x86/amd/pmf/tee-if.c
index 8c88769ea1d87..2c00f2baeec7b 100644
--- a/drivers/platform/x86/amd/pmf/tee-if.c
+++ b/drivers/platform/x86/amd/pmf/tee-if.c
@@ -151,7 +151,13 @@ static void amd_pmf_apply_policies(struct amd_pmf_dev *dev, struct ta_pmf_enact_
amd_pmf_update_uevents(dev, KEY_SUSPEND);
break;
case 2:
- amd_pmf_update_uevents(dev, KEY_SCREENLOCK);
+ input_report_key(dev->pmf_idev, KEY_LEFTMETA, 1);
+ input_report_key(dev->pmf_idev, KEY_L, 1);
+ input_sync(dev->pmf_idev);
+ input_report_key(dev->pmf_idev, KEY_L, 0);
+ input_sync(dev->pmf_idev);
+ input_report_key(dev->pmf_idev, KEY_LEFTMETA, 0);
+ input_sync(dev->pmf_idev);
break;
default:
dev_err(dev->dev, "Invalid PMF policy system state: %d\n", val);
@@ -422,8 +428,9 @@ static int amd_pmf_register_input_device(struct amd_pmf_dev *dev)
dev->pmf_idev->phys = "amd-pmf/input0";
input_set_capability(dev->pmf_idev, EV_KEY, KEY_SLEEP);
- input_set_capability(dev->pmf_idev, EV_KEY, KEY_SCREENLOCK);
input_set_capability(dev->pmf_idev, EV_KEY, KEY_SUSPEND);
+ input_set_capability(dev->pmf_idev, EV_KEY, KEY_L);
+ input_set_capability(dev->pmf_idev, EV_KEY, KEY_LEFTMETA);
err = input_register_device(dev->pmf_idev);
if (err) {
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command
2025-03-21 19:30 [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command Mario Limonciello
@ 2025-03-21 21:16 ` Armin Wolf
2025-03-21 22:25 ` Mario Limonciello
0 siblings, 1 reply; 6+ messages in thread
From: Armin Wolf @ 2025-03-21 21:16 UTC (permalink / raw)
To: Mario Limonciello, mario.limonciello, Shyam-sundar.S-k, hdegoede,
ilpo.jarvinen
Cc: platform-driver-x86
Am 21.03.25 um 20:30 schrieb Mario Limonciello:
> From: Mario Limonciello <mario.limonciello@amd.com>
>
> In practice userspace software doesn't react to KEY_SCREENLOCK by
> default. So any time that the PMF policies would suggest to lock
> the screen (for example from an HPD sensor event) userspace isn't
> configured to do it properly.
>
> However userspace is configured for meta + L as this is the default
> in the ecosystem. Adjust the PMF driver to send meta + L.
Hi,
KEY_SCREENLOCK is used by other drivers too, so it would make sense
to instead add support for KEY_SCREENLOCK to the userspace software
instead of having this workaround inside the driver.
Also please add a comment explaining what meta + L is supposed to achieve.
Thanks,
Armin Wolf
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> drivers/platform/x86/amd/pmf/tee-if.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/platform/x86/amd/pmf/tee-if.c
> index 8c88769ea1d87..2c00f2baeec7b 100644
> --- a/drivers/platform/x86/amd/pmf/tee-if.c
> +++ b/drivers/platform/x86/amd/pmf/tee-if.c
> @@ -151,7 +151,13 @@ static void amd_pmf_apply_policies(struct amd_pmf_dev *dev, struct ta_pmf_enact_
> amd_pmf_update_uevents(dev, KEY_SUSPEND);
> break;
> case 2:
> - amd_pmf_update_uevents(dev, KEY_SCREENLOCK);
> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 1);
> + input_report_key(dev->pmf_idev, KEY_L, 1);
> + input_sync(dev->pmf_idev);
> + input_report_key(dev->pmf_idev, KEY_L, 0);
> + input_sync(dev->pmf_idev);
> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 0);
> + input_sync(dev->pmf_idev);
> break;
> default:
> dev_err(dev->dev, "Invalid PMF policy system state: %d\n", val);
> @@ -422,8 +428,9 @@ static int amd_pmf_register_input_device(struct amd_pmf_dev *dev)
> dev->pmf_idev->phys = "amd-pmf/input0";
>
> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SLEEP);
> - input_set_capability(dev->pmf_idev, EV_KEY, KEY_SCREENLOCK);
> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SUSPEND);
> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_L);
> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_LEFTMETA);
>
> err = input_register_device(dev->pmf_idev);
> if (err) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command
2025-03-21 21:16 ` Armin Wolf
@ 2025-03-21 22:25 ` Mario Limonciello
2025-03-31 17:49 ` Mario Limonciello
0 siblings, 1 reply; 6+ messages in thread
From: Mario Limonciello @ 2025-03-21 22:25 UTC (permalink / raw)
To: Armin Wolf, mario.limonciello, Shyam-sundar.S-k, hdegoede,
ilpo.jarvinen
Cc: platform-driver-x86
On 3/21/25 16:16, Armin Wolf wrote:
> Am 21.03.25 um 20:30 schrieb Mario Limonciello:
>
>> From: Mario Limonciello <mario.limonciello@amd.com>
>>
>> In practice userspace software doesn't react to KEY_SCREENLOCK by
>> default. So any time that the PMF policies would suggest to lock
>> the screen (for example from an HPD sensor event) userspace isn't
>> configured to do it properly.
>>
>> However userspace is configured for meta + L as this is the default
>> in the ecosystem. Adjust the PMF driver to send meta + L.
>
> Hi,
>
> KEY_SCREENLOCK is used by other drivers too, so it would make sense
> to instead add support for KEY_SCREENLOCK to the userspace software
> instead of having this workaround inside the driver.
Right; that's actually that's the first thing I looked at when I came to
this issue.
I had "expected" GNOME for example to work with KEY_SCREENLOCK, but even
when you program it to do so it doesn't work.
https://gitlab.gnome.org/GNOME/mutter/-/issues/3990
The ecosystem has moved to META + L. My last employer (Dell) I remember
there was a FN + F key that would issue a screen lock. It had a
silkscreen of a lock symbol.
How did it work? Not KEY_SCREENLOCK - it emulated META + L.
This is what works in Windows, GNOME and KDE. So I am of the opinion
that KEY_SCREENLOCK is likely a dinosaur that doesn't really exist anymore.
>
> Also please add a comment explaining what meta + L is supposed to achieve.
>
Sure if we can align on doing this I will spin a V2 with a comment
better explaining the situation.
> Thanks,
> Armin Wolf
>
>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>> ---
>> drivers/platform/x86/amd/pmf/tee-if.c | 11 +++++++++--
>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/platform/
>> x86/amd/pmf/tee-if.c
>> index 8c88769ea1d87..2c00f2baeec7b 100644
>> --- a/drivers/platform/x86/amd/pmf/tee-if.c
>> +++ b/drivers/platform/x86/amd/pmf/tee-if.c
>> @@ -151,7 +151,13 @@ static void amd_pmf_apply_policies(struct
>> amd_pmf_dev *dev, struct ta_pmf_enact_
>> amd_pmf_update_uevents(dev, KEY_SUSPEND);
>> break;
>> case 2:
>> - amd_pmf_update_uevents(dev, KEY_SCREENLOCK);
>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 1);
>> + input_report_key(dev->pmf_idev, KEY_L, 1);
>> + input_sync(dev->pmf_idev);
>> + input_report_key(dev->pmf_idev, KEY_L, 0);
>> + input_sync(dev->pmf_idev);
>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 0);
>> + input_sync(dev->pmf_idev);
>> break;
>> default:
>> dev_err(dev->dev, "Invalid PMF policy system state:
>> %d\n", val);
>> @@ -422,8 +428,9 @@ static int amd_pmf_register_input_device(struct
>> amd_pmf_dev *dev)
>> dev->pmf_idev->phys = "amd-pmf/input0";
>>
>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SLEEP);
>> - input_set_capability(dev->pmf_idev, EV_KEY, KEY_SCREENLOCK);
>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SUSPEND);
>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_L);
>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_LEFTMETA);
>>
>> err = input_register_device(dev->pmf_idev);
>> if (err) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command
2025-03-21 22:25 ` Mario Limonciello
@ 2025-03-31 17:49 ` Mario Limonciello
2025-04-03 1:48 ` Armin Wolf
0 siblings, 1 reply; 6+ messages in thread
From: Mario Limonciello @ 2025-03-31 17:49 UTC (permalink / raw)
To: Mario Limonciello, Armin Wolf, Shyam-sundar.S-k, hdegoede,
ilpo.jarvinen
Cc: platform-driver-x86
On 3/21/2025 5:25 PM, Mario Limonciello wrote:
>
>
> On 3/21/25 16:16, Armin Wolf wrote:
>> Am 21.03.25 um 20:30 schrieb Mario Limonciello:
>>
>>> From: Mario Limonciello <mario.limonciello@amd.com>
>>>
>>> In practice userspace software doesn't react to KEY_SCREENLOCK by
>>> default. So any time that the PMF policies would suggest to lock
>>> the screen (for example from an HPD sensor event) userspace isn't
>>> configured to do it properly.
>>>
>>> However userspace is configured for meta + L as this is the default
>>> in the ecosystem. Adjust the PMF driver to send meta + L.
>>
>> Hi,
>>
>> KEY_SCREENLOCK is used by other drivers too, so it would make sense
>> to instead add support for KEY_SCREENLOCK to the userspace software
>> instead of having this workaround inside the driver.
>
> Right; that's actually that's the first thing I looked at when I came to
> this issue.
>
> I had "expected" GNOME for example to work with KEY_SCREENLOCK, but even
> when you program it to do so it doesn't work.
>
> https://gitlab.gnome.org/GNOME/mutter/-/issues/3990
>
> The ecosystem has moved to META + L. My last employer (Dell) I remember
> there was a FN + F key that would issue a screen lock. It had a
> silkscreen of a lock symbol.
> How did it work? Not KEY_SCREENLOCK - it emulated META + L.
>
> This is what works in Windows, GNOME and KDE. So I am of the opinion
> that KEY_SCREENLOCK is likely a dinosaur that doesn't really exist anymore.
>
FWIW, I found an aftermarket keyboard (Logitech Ergo K860 [1]) that has
a "lock" key.
It also emits a KEY_LEFTMETA combination when this key is pressed and
works by default in GNOME as well with no changes.
-event11 DEVICE_ADDED Logitech ERGO K860
seat0 default group7 cap:kp left scroll-nat scroll-button
-event11 KEYBOARD_KEY +4.191s KEY_LEFTMETA (125) pressed
event11 KEYBOARD_KEY +4.231s *** (-1) pressed
event11 KEYBOARD_KEY +4.374s *** (-1) released
event11 KEYBOARD_KEY +4.412s KEY_LEFTMETA (125) released
[1] https://www.logitech.com/en-us/shop/p/k860-split-ergonomic.920-009166
>>
>> Also please add a comment explaining what meta + L is supposed to
>> achieve.
>>
>
> Sure if we can align on doing this I will spin a V2 with a comment
> better explaining the situation.
>
>> Thanks,
>> Armin Wolf
>>
>>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>>> ---
>>> drivers/platform/x86/amd/pmf/tee-if.c | 11 +++++++++--
>>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/
>>> platform/ x86/amd/pmf/tee-if.c
>>> index 8c88769ea1d87..2c00f2baeec7b 100644
>>> --- a/drivers/platform/x86/amd/pmf/tee-if.c
>>> +++ b/drivers/platform/x86/amd/pmf/tee-if.c
>>> @@ -151,7 +151,13 @@ static void amd_pmf_apply_policies(struct
>>> amd_pmf_dev *dev, struct ta_pmf_enact_
>>> amd_pmf_update_uevents(dev, KEY_SUSPEND);
>>> break;
>>> case 2:
>>> - amd_pmf_update_uevents(dev, KEY_SCREENLOCK);
>>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 1);
>>> + input_report_key(dev->pmf_idev, KEY_L, 1);
>>> + input_sync(dev->pmf_idev);
>>> + input_report_key(dev->pmf_idev, KEY_L, 0);
>>> + input_sync(dev->pmf_idev);
>>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 0);
>>> + input_sync(dev->pmf_idev);
>>> break;
>>> default:
>>> dev_err(dev->dev, "Invalid PMF policy system state:
>>> %d\n", val);
>>> @@ -422,8 +428,9 @@ static int amd_pmf_register_input_device(struct
>>> amd_pmf_dev *dev)
>>> dev->pmf_idev->phys = "amd-pmf/input0";
>>>
>>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SLEEP);
>>> - input_set_capability(dev->pmf_idev, EV_KEY, KEY_SCREENLOCK);
>>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SUSPEND);
>>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_L);
>>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_LEFTMETA);
>>>
>>> err = input_register_device(dev->pmf_idev);
>>> if (err) {
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command
2025-03-31 17:49 ` Mario Limonciello
@ 2025-04-03 1:48 ` Armin Wolf
2025-04-03 15:57 ` Mario Limonciello
0 siblings, 1 reply; 6+ messages in thread
From: Armin Wolf @ 2025-04-03 1:48 UTC (permalink / raw)
To: Mario Limonciello, Mario Limonciello, Shyam-sundar.S-k, hdegoede,
ilpo.jarvinen, dmitry.torokhov
Cc: platform-driver-x86, linux-input
Am 31.03.25 um 19:49 schrieb Mario Limonciello:
> On 3/21/2025 5:25 PM, Mario Limonciello wrote:
>>
>>
>> On 3/21/25 16:16, Armin Wolf wrote:
>>> Am 21.03.25 um 20:30 schrieb Mario Limonciello:
>>>
>>>> From: Mario Limonciello <mario.limonciello@amd.com>
>>>>
>>>> In practice userspace software doesn't react to KEY_SCREENLOCK by
>>>> default. So any time that the PMF policies would suggest to lock
>>>> the screen (for example from an HPD sensor event) userspace isn't
>>>> configured to do it properly.
>>>>
>>>> However userspace is configured for meta + L as this is the default
>>>> in the ecosystem. Adjust the PMF driver to send meta + L.
>>>
>>> Hi,
>>>
>>> KEY_SCREENLOCK is used by other drivers too, so it would make sense
>>> to instead add support for KEY_SCREENLOCK to the userspace software
>>> instead of having this workaround inside the driver.
>>
>> Right; that's actually that's the first thing I looked at when I came
>> to this issue.
>>
>> I had "expected" GNOME for example to work with KEY_SCREENLOCK, but
>> even when you program it to do so it doesn't work.
>>
>> https://gitlab.gnome.org/GNOME/mutter/-/issues/3990
>>
>> The ecosystem has moved to META + L. My last employer (Dell) I
>> remember there was a FN + F key that would issue a screen lock. It
>> had a silkscreen of a lock symbol.
>> How did it work? Not KEY_SCREENLOCK - it emulated META + L.
>>
>> This is what works in Windows, GNOME and KDE. So I am of the opinion
>> that KEY_SCREENLOCK is likely a dinosaur that doesn't really exist
>> anymore.
>>
>
> FWIW, I found an aftermarket keyboard (Logitech Ergo K860 [1]) that
> has a "lock" key.
>
> It also emits a KEY_LEFTMETA combination when this key is pressed and
> works by default in GNOME as well with no changes.
>
> -event11 DEVICE_ADDED Logitech ERGO K860 seat0 default
> group7 cap:kp left scroll-nat scroll-button
>
> -event11 KEYBOARD_KEY +4.191s KEY_LEFTMETA (125)
> pressed
> event11 KEYBOARD_KEY +4.231s *** (-1) pressed
> event11 KEYBOARD_KEY +4.374s *** (-1) released
> event11 KEYBOARD_KEY +4.412s KEY_LEFTMETA (125)
> released
>
> [1] https://www.logitech.com/en-us/shop/p/k860-split-ergonomic.920-009166
>
Interesting, i CCed the input maintainer so that he can decide whether to keep KEY_SCREENLOCK or replace it
with meta + L. Maybe the input subsystem could provide a generic meta + L emulation for KEY_SCREENLOCK?
Thanks,
Armin Wolf
>>>
>>> Also please add a comment explaining what meta + L is supposed to
>>> achieve.
>>>
>>
>> Sure if we can align on doing this I will spin a V2 with a comment
>> better explaining the situation.
>>
>>> Thanks,
>>> Armin Wolf
>>>
>>>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>>>> ---
>>>> drivers/platform/x86/amd/pmf/tee-if.c | 11 +++++++++--
>>>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/
>>>> platform/ x86/amd/pmf/tee-if.c
>>>> index 8c88769ea1d87..2c00f2baeec7b 100644
>>>> --- a/drivers/platform/x86/amd/pmf/tee-if.c
>>>> +++ b/drivers/platform/x86/amd/pmf/tee-if.c
>>>> @@ -151,7 +151,13 @@ static void amd_pmf_apply_policies(struct
>>>> amd_pmf_dev *dev, struct ta_pmf_enact_
>>>> amd_pmf_update_uevents(dev, KEY_SUSPEND);
>>>> break;
>>>> case 2:
>>>> - amd_pmf_update_uevents(dev, KEY_SCREENLOCK);
>>>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 1);
>>>> + input_report_key(dev->pmf_idev, KEY_L, 1);
>>>> + input_sync(dev->pmf_idev);
>>>> + input_report_key(dev->pmf_idev, KEY_L, 0);
>>>> + input_sync(dev->pmf_idev);
>>>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 0);
>>>> + input_sync(dev->pmf_idev);
>>>> break;
>>>> default:
>>>> dev_err(dev->dev, "Invalid PMF policy system
>>>> state: %d\n", val);
>>>> @@ -422,8 +428,9 @@ static int amd_pmf_register_input_device(struct
>>>> amd_pmf_dev *dev)
>>>> dev->pmf_idev->phys = "amd-pmf/input0";
>>>>
>>>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SLEEP);
>>>> - input_set_capability(dev->pmf_idev, EV_KEY, KEY_SCREENLOCK);
>>>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SUSPEND);
>>>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_L);
>>>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_LEFTMETA);
>>>>
>>>> err = input_register_device(dev->pmf_idev);
>>>> if (err) {
>>
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command
2025-04-03 1:48 ` Armin Wolf
@ 2025-04-03 15:57 ` Mario Limonciello
0 siblings, 0 replies; 6+ messages in thread
From: Mario Limonciello @ 2025-04-03 15:57 UTC (permalink / raw)
To: Armin Wolf, Mario Limonciello, Shyam-sundar.S-k, hdegoede,
ilpo.jarvinen, dmitry.torokhov
Cc: platform-driver-x86, linux-input
On 4/2/2025 8:48 PM, Armin Wolf wrote:
> Am 31.03.25 um 19:49 schrieb Mario Limonciello:
>
>> On 3/21/2025 5:25 PM, Mario Limonciello wrote:
>>>
>>>
>>> On 3/21/25 16:16, Armin Wolf wrote:
>>>> Am 21.03.25 um 20:30 schrieb Mario Limonciello:
>>>>
>>>>> From: Mario Limonciello <mario.limonciello@amd.com>
>>>>>
>>>>> In practice userspace software doesn't react to KEY_SCREENLOCK by
>>>>> default. So any time that the PMF policies would suggest to lock
>>>>> the screen (for example from an HPD sensor event) userspace isn't
>>>>> configured to do it properly.
>>>>>
>>>>> However userspace is configured for meta + L as this is the default
>>>>> in the ecosystem. Adjust the PMF driver to send meta + L.
>>>>
>>>> Hi,
>>>>
>>>> KEY_SCREENLOCK is used by other drivers too, so it would make sense
>>>> to instead add support for KEY_SCREENLOCK to the userspace software
>>>> instead of having this workaround inside the driver.
>>>
>>> Right; that's actually that's the first thing I looked at when I came
>>> to this issue.
>>>
>>> I had "expected" GNOME for example to work with KEY_SCREENLOCK, but
>>> even when you program it to do so it doesn't work.
>>>
>>> https://gitlab.gnome.org/GNOME/mutter/-/issues/3990
>>>
>>> The ecosystem has moved to META + L. My last employer (Dell) I
>>> remember there was a FN + F key that would issue a screen lock. It
>>> had a silkscreen of a lock symbol.
>>> How did it work? Not KEY_SCREENLOCK - it emulated META + L.
>>>
>>> This is what works in Windows, GNOME and KDE. So I am of the opinion
>>> that KEY_SCREENLOCK is likely a dinosaur that doesn't really exist
>>> anymore.
>>>
>>
>> FWIW, I found an aftermarket keyboard (Logitech Ergo K860 [1]) that
>> has a "lock" key.
>>
>> It also emits a KEY_LEFTMETA combination when this key is pressed and
>> works by default in GNOME as well with no changes.
>>
>> -event11 DEVICE_ADDED Logitech ERGO K860 seat0 default
>> group7 cap:kp left scroll-nat scroll-button
>>
>> -event11 KEYBOARD_KEY +4.191s KEY_LEFTMETA (125)
>> pressed
>> event11 KEYBOARD_KEY +4.231s *** (-1) pressed
>> event11 KEYBOARD_KEY +4.374s *** (-1) released
>> event11 KEYBOARD_KEY +4.412s KEY_LEFTMETA (125)
>> released
>>
>> [1] https://www.logitech.com/en-us/shop/p/k860-split-ergonomic.920-009166
>>
> Interesting, i CCed the input maintainer so that he can decide whether
> to keep KEY_SCREENLOCK or replace it
> with meta + L. Maybe the input subsystem could provide a generic meta +
> L emulation for KEY_SCREENLOCK?
>
> Thanks,
> Armin Wolf
Are you proposing input subsystem to provide a helper something like this?
/**
* report_lock_sequence - Report key combination to lock the screen
* @dev: input device
*
* Key combination used in the PC industry since Windows 7 for locking
display
* is META + L. This is also used in GNOME and KDE by default.
* See
https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec
*/
static void report_lock_sequence(struct input_dev *dev)
{
input_report_key(dev, KEY_LEFTMETA, 1);
input_report_key(dev, KEY_L, 1);
input_sync(dev);
input_report_key(dev, KEY_L, 0);
input_sync(dev);
input_report_key(dev, KEY_LEFTMETA, 0);
input_sync(dev);
}
Then PMF could just call that helper when it wants to do the sequence
(and likewise any other driver can as well).
>
>>>>
>>>> Also please add a comment explaining what meta + L is supposed to
>>>> achieve.
>>>>
>>>
>>> Sure if we can align on doing this I will spin a V2 with a comment
>>> better explaining the situation.
>>>
>>>> Thanks,
>>>> Armin Wolf
>>>>
>>>>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>>>>> ---
>>>>> drivers/platform/x86/amd/pmf/tee-if.c | 11 +++++++++--
>>>>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/drivers/platform/x86/amd/pmf/tee-if.c b/drivers/
>>>>> platform/ x86/amd/pmf/tee-if.c
>>>>> index 8c88769ea1d87..2c00f2baeec7b 100644
>>>>> --- a/drivers/platform/x86/amd/pmf/tee-if.c
>>>>> +++ b/drivers/platform/x86/amd/pmf/tee-if.c
>>>>> @@ -151,7 +151,13 @@ static void amd_pmf_apply_policies(struct
>>>>> amd_pmf_dev *dev, struct ta_pmf_enact_
>>>>> amd_pmf_update_uevents(dev, KEY_SUSPEND);
>>>>> break;
>>>>> case 2:
>>>>> - amd_pmf_update_uevents(dev, KEY_SCREENLOCK);
>>>>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 1);
>>>>> + input_report_key(dev->pmf_idev, KEY_L, 1);
>>>>> + input_sync(dev->pmf_idev);
>>>>> + input_report_key(dev->pmf_idev, KEY_L, 0);
>>>>> + input_sync(dev->pmf_idev);
>>>>> + input_report_key(dev->pmf_idev, KEY_LEFTMETA, 0);
>>>>> + input_sync(dev->pmf_idev);
>>>>> break;
>>>>> default:
>>>>> dev_err(dev->dev, "Invalid PMF policy system
>>>>> state: %d\n", val);
>>>>> @@ -422,8 +428,9 @@ static int amd_pmf_register_input_device(struct
>>>>> amd_pmf_dev *dev)
>>>>> dev->pmf_idev->phys = "amd-pmf/input0";
>>>>>
>>>>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SLEEP);
>>>>> - input_set_capability(dev->pmf_idev, EV_KEY, KEY_SCREENLOCK);
>>>>> input_set_capability(dev->pmf_idev, EV_KEY, KEY_SUSPEND);
>>>>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_L);
>>>>> + input_set_capability(dev->pmf_idev, EV_KEY, KEY_LEFTMETA);
>>>>>
>>>>> err = input_register_device(dev->pmf_idev);
>>>>> if (err) {
>>>
>>
>>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-04-03 15:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-21 19:30 [PATCH] platform/x86/amd: pmf: Use meta + L for screen lock command Mario Limonciello
2025-03-21 21:16 ` Armin Wolf
2025-03-21 22:25 ` Mario Limonciello
2025-03-31 17:49 ` Mario Limonciello
2025-04-03 1:48 ` Armin Wolf
2025-04-03 15:57 ` Mario Limonciello
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox