diff mbox series

[v2] HID: Add Mapping for System Microphone Mute

Message ID 20221213225328.3538581-1-jingyliang@chromium.org (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show
Series [v2] HID: Add Mapping for System Microphone Mute | expand

Commit Message

Jingyuan Liang Dec. 13, 2022, 10:53 p.m. UTC
HUTRR110 added a new usage code for a key that is supposed to
mute/unmute microphone system-wide.

Map the new usage code(0x01 0xa9) to keycode KEY_MICMUTE.
Additionally hid-debug is adjusted to recognize this keycode as well.

Signed-off-by: Jingyuan Liang <jingyliang@chromium.org>
---

V1 -> V2: Replaced "This patch maps" with "Map" in commit message and
addressed review comments
---
 drivers/hid/hid-debug.c | 1 +
 drivers/hid/hid-input.c | 8 ++++++++
 2 files changed, 9 insertions(+)

Comments

Jiri Kosina Dec. 20, 2022, 2:33 p.m. UTC | #1
On Tue, 13 Dec 2022, Jingyuan Liang wrote:

> HUTRR110 added a new usage code for a key that is supposed to
> mute/unmute microphone system-wide.
> 
> Map the new usage code(0x01 0xa9) to keycode KEY_MICMUTE.
> Additionally hid-debug is adjusted to recognize this keycode as well.
> 
> Signed-off-by: Jingyuan Liang <jingyliang@chromium.org>

Applied, thanks.
diff mbox series

Patch

diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index 2ca6ab600bc9..15e35702773c 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -972,6 +972,7 @@  static const char *keys[KEY_MAX + 1] = {
 	[KEY_KBD_LAYOUT_NEXT] = "KbdLayoutNext",
 	[KEY_EMOJI_PICKER] = "EmojiPicker",
 	[KEY_DICTATE] = "Dictate",
+	[KEY_MICMUTE] = "MicrophoneMute",
 	[KEY_BRIGHTNESS_MIN] = "BrightnessMin",
 	[KEY_BRIGHTNESS_MAX] = "BrightnessMax",
 	[KEY_BRIGHTNESS_AUTO] = "BrightnessAuto",
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 859aeb07542e..6396ed434b37 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -781,6 +781,14 @@  static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
 			break;
 		}
 
+		if ((usage->hid & 0xf0) == 0xa0) {	/* SystemControl */
+			switch (usage->hid & 0xf) {
+			case 0x9: map_key_clear(KEY_MICMUTE); break;
+			default: goto ignore;
+			}
+			break;
+		}
+
 		if ((usage->hid & 0xf0) == 0xb0) {	/* SC - Display */
 			switch (usage->hid & 0xf) {
 			case 0x05: map_key_clear(KEY_SWITCHVIDEOMODE); break;