[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241108221116.GA123748@lichtman.org>
Date: Fri, 8 Nov 2024 22:11:16 +0000
From: Nir Lichtman <nir@...htman.org>
To: jason.wessel@...driver.com, daniel.thompson@...aro.org,
dianders@...omium.org, linux-kernel@...r.kernel.org
Subject: [PATCH] kdb: fix ctrl+e/a/f/b/d/p/n broken in keyboard mode
Problem: When using KDB via keyboard it does not react to control
characters which are supported in serial mode.
Example: Chords such as CTRL+A/E/D/P do not work in keyboard mode
Solution: Before disregarding a non-printable key character, check if it
is one of the supported control characters, I have took the control
characters from the switch case upwards in this function that translates
scan codes of arrow keys/backspace/home/.. to the control characters.
I have took them all besides the TAB control character translation (I am
not sure what that maps to on the keyboard)
---
kernel/debug/kdb/kdb_keyboard.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/debug/kdb/kdb_keyboard.c b/kernel/debug/kdb/kdb_keyboard.c
index 3c2987f46f6e..2c004abd5375 100644
--- a/kernel/debug/kdb/kdb_keyboard.c
+++ b/kernel/debug/kdb/kdb_keyboard.c
@@ -172,6 +172,9 @@ int kdb_get_kbd_char(void)
switch (KTYP(keychar)) {
case KT_LETTER:
case KT_LATIN:
+ if (keychar == 4 || keychar == 1 || keychar == 5 || keychar == 2 ||
+ keychar == 16 || keychar == 14 || keychar == 6)
+ return keychar; /* non-printable supported control characters (e.g. CTRL+A) */
if (isprint(keychar))
break; /* printable characters */
fallthrough;
--
2.39.2
Powered by blists - more mailing lists