From: Allen Martin <amartin@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] USB: add arrow key support to usb_kbd
Date: Tue, 6 Nov 2012 13:26:03 -0800 [thread overview]
Message-ID: <1352237163-26765-1-git-send-email-amartin@nvidia.com> (raw)
Check for scancodes for arrow keys and map them to ^F/^B, ^N/^P.
Control characters are used instead of ANSI sequence because the
queueing code in usb_kbd doesn't handle the data increase when one
keypress generates 3 keycodes. The real fix is to convert this driver
to use the input subsystem and queue, but this allows arrow keys to
work until this driver is converted.
Signed-off-by: Allen Martin <amartin@nvidia.com>
---
common/usb_kbd.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index 24467ce..4efbcfe 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -94,6 +94,15 @@ static const unsigned char usb_kbd_num_keypad[] = {
};
/*
+ * map arrow keys to ^F/^B ^N/^P, can't really use the proper
+ * ANSI sequence for arrow keys because the queuing code breaks
+ * when a single keypress expands to 3 queue elements
+ */
+static const unsigned char usb_kbd_arrow[] = {
+ 0x6, 0x2, 0xe, 0x10
+};
+
+/*
* NOTE: It's important for the NUM, CAPS, SCROLL-lock bits to be in this
* order. See usb_kbd_setled() function!
*/
@@ -224,6 +233,10 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode,
keycode = usb_kbd_numkey[scancode - 0x1e];
}
+ /* Arrow keys */
+ if ((scancode >= 0x4f) && (scancode <= 0x52))
+ keycode = usb_kbd_arrow[scancode - 0x4f];
+
/* Numeric keypad */
if ((scancode >= 0x54) && (scancode <= 0x67))
keycode = usb_kbd_num_keypad[scancode - 0x54];
--
1.7.10.4
next reply other threads:[~2012-11-06 21:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-06 21:26 Allen Martin [this message]
2012-11-06 21:51 ` [U-Boot] [PATCH] USB: add arrow key support to usb_kbd Stephen Warren
2012-11-06 22:49 ` Marek Vasut
2012-11-06 22:51 ` Simon Glass
2012-11-06 22:56 ` Marek Vasut
2012-11-06 23:06 ` Allen Martin
2012-11-07 13:15 ` Marek Vasut
2012-11-06 23:09 ` Stephen Warren
2012-11-07 13:18 ` Marek Vasut
2012-11-07 19:02 ` Allen Martin
2012-11-08 1:19 ` Marek Vasut
2012-11-06 22:55 ` Allen Martin
2012-11-06 22:52 ` Simon Glass
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=1352237163-26765-1-git-send-email-amartin@nvidia.com \
--to=amartin@nvidia.com \
--cc=u-boot@lists.denx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox