All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] USB: add arrow key support to usb_kbd
@ 2012-11-06 21:26 Allen Martin
  2012-11-06 21:51 ` Stephen Warren
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Allen Martin @ 2012-11-06 21:26 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-11-08  1:19 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-06 21:26 [U-Boot] [PATCH] USB: add arrow key support to usb_kbd Allen Martin
2012-11-06 21:51 ` 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

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.