All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hansg@kernel.org>
To: "Anton Khirnov" <anton@khirnov.net>,
	"Corentin Chary" <corentin.chary@gmail.com>,
	"Luke D. Jones" <luke@ljones.dev>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] platform/x86: asus-wmi: map more keys on ExpertBook B9
Date: Mon, 14 Jul 2025 15:27:58 +0200	[thread overview]
Message-ID: <62871f1b-85aa-4d8c-82a1-2fb65be83094@kernel.org> (raw)
In-Reply-To: <175249787152.21445.16925102541286211351@lain.khirnov.net>

Hi,

On 14-Jul-25 14:57, Anton Khirnov wrote:
> Hi Hans,
> Quoting Hans de Goede (2025-07-14 14:34:04)
>> Hi,
>>
>> On 2-Jul-25 09:02, Anton Khirnov wrote:
>>> * there is a dedicated "noise cancel" key in top row, between mic mute
>>>   and PrintScreen; it sends 0xCA when pressed by itself (mapped to F14),
>>>   0xCB with Fn (mapped to F15)
>>> * Fn+f sends 0x9D; it is not documented in the manual, but some web
>>>   search results mention "asus intelligent performance"; mapped to PROG2
>>> * Fn+space sends 0x5B; it is not documented or mentioned anywhere I
>>>   could find; mapped to PROG3
>>>
>>> Signed-off-by: Anton Khirnov <anton@khirnov.net>
>>> ---
>>>  drivers/platform/x86/asus-nb-wmi.c | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>>
>>> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
>>> index 3f8b2a324efd..42d7b435ba63 100644
>>> --- a/drivers/platform/x86/asus-nb-wmi.c
>>> +++ b/drivers/platform/x86/asus-nb-wmi.c
>>> @@ -573,6 +573,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = {
>>>  	{ KE_KEY, 0x55, { KEY_CALC } },
>>>  	{ KE_IGNORE, 0x57, },  /* Battery mode */
>>>  	{ KE_IGNORE, 0x58, },  /* AC mode */
>>> +	{ KE_KEY, 0x5B, { KEY_PROG3 } }, /* Fn+space */
>>
>> What is this key-combo supposed to do, is there any icon for this on
>> the spacebar? What does it do under Windows?
> 
> I don't have Windows installed, so I cannot test what any of these keys
> do there.
> 
> I searched the web for any mentions of this key combination and found
> nothing whatsoever, the manual is also silent. But it does generate an
> event, so it seemed reasonable to make use of it.
>
>> Based on other laptops I would expect this to maybe need to be
>> KEY_KBDILLUMTOGGLE, which toggles the kbd backlight on/off ?
> 
> Keyboard backlight is Fn+F7 on this laptop. That said, I'm fine with any
> key that is acceptable to you and/or other maintainers.

Ok, so no KEY_KBDILLUMTOGGLE then if that already is at Fn+F7

So lets stick with a KEY_PROG# option here,
note asus-nb-wmi already used PROG# for:

        { KE_KEY, 0x38, { KEY_PROG3 } }, /* Armoury Crate */
        { KE_KEY, 0x86, { KEY_PROG1 } }, /* MyASUS Key */
        { KE_KEY, 0xB3, { KEY_PROG4 } }, /* AURA */
        { KE_KEY, 0xFA, { KEY_PROG2 } }, /* Lid flip action */
        { KE_KEY, 0xBD, { KEY_PROG2 } }, /* Lid flip action on ROG xflow */
 
I guess you checked that this laptop does not send the 0x83 / "Armoury Crate"
events? What about 0x86 / "MyAsus"? If there is no MyAsus key I would prefer
to use KEY_PROG1 here.

Or you can add a KEY_FN_SPACE to input-event-codes.h grouping it together
with the existing Fn + X combos there.

> 
>>
>>>  	{ KE_KEY, 0x5C, { KEY_F15 } },  /* Power Gear key */
>>
>> Why KEY_F15, Why not some other KEY_ ? Generally speaking
>> the key-code send should match the intended purpose of
>> they key / key-combo. E.g. If the button opens
>> the control-panel under Windows use KEY_CONTROLPANEL
> 
> Err I'm not doing anything to this one.

My bad, sorry.

>>> @@ -609,6 +610,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = {
>>>  	{ KE_KEY, 0x93, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + CRT + TV + DVI */
>>>  	{ KE_KEY, 0x95, { KEY_MEDIA } },
>>>  	{ KE_KEY, 0x99, { KEY_PHONE } }, /* Conflicts with fan mode switch */
>>> +	{ KE_KEY, 0X9D, { KEY_PROG2 } }, /* Fn+f */
>>
>> Same remark as on the other keys. what does this do under Windows ?
> 
> As per above, cannot test. But in this case a web search suggests that
> (on some other Asus laptop) it switches between performance profiles.

You can use KEY_FN_F for this one then.

>>> @@ -623,6 +625,8 @@ static const struct key_entry asus_nb_wmi_keymap[] = {
>>>  	{ KE_IGNORE, 0xC0, }, /* External display connect/disconnect notification */
>>>  	{ KE_KEY, 0xC4, { KEY_KBDILLUMUP } },
>>>  	{ KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } },
>>> +	{ KE_KEY, 0xCA, { KEY_F14 } }, /* Noise cancelling on Expertbook B9 */
>>
>> KEY_SOUND ?
> 
> Can do, but then what about the fn+ version? Ideally they should be
> related.

Hmm, can use KEY_PROG3 + KEY_PROG4, assuming that the Fn+ spacebar becomes
KEY_PROG1 and that KEY_PROG3 / PROG4 are otherwise free ?

If not then why start at KEY_F14 and not at KEY_F13, does this laptop's
keyboard has a key which sends:


        { KE_KEY, 0x71, { KEY_F13 } }, /* General-purpose button */

Also are there no conflicts with some of the other entries which send
F14 / F15 ?

As in no other keys which generate the existing codes mapped
to F13 / F14 / F15 ?
 
>>> +	{ KE_KEY, 0xCB, { KEY_F15 } }, /* Fn+noise-cancel */
>>
>> What does Fn + noise-cancel do under Windows ?
> 
> As per the manual:
> 
>   Built-in microphone: Toggles between single presenter conference call
>                        mode or multi presenter conference call mode.
>   External microphone: Toggles ASUS AI Noise-Canceling.

Thanks.

Regards,

Hans


  reply	other threads:[~2025-07-14 13:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-02  7:02 [PATCH] platform/x86: asus-wmi: map more keys on ExpertBook B9 Anton Khirnov
2025-07-14 12:23 ` Anton Khirnov
2025-07-14 12:34 ` Hans de Goede
2025-07-14 12:57   ` Anton Khirnov
2025-07-14 13:27     ` Hans de Goede [this message]
2025-07-14 13:53       ` Anton Khirnov
2025-07-14 14:10         ` Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=62871f1b-85aa-4d8c-82a1-2fb65be83094@kernel.org \
    --to=hansg@kernel.org \
    --cc=anton@khirnov.net \
    --cc=corentin.chary@gmail.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luke@ljones.dev \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.