All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] common:usb_kbd:Add key values of F1~F12
@ 2017-08-08  1:27 Leo Wen
  2017-08-09 10:33 ` Dr. Philipp Tomsich
  0 siblings, 1 reply; 3+ messages in thread
From: Leo Wen @ 2017-08-08  1:27 UTC (permalink / raw)
  To: u-boot

When you press the F1~F12 button from the USB keyboard, the reference Fn
key table(usb_kbd_fn_key[]),the key value(0xf0~0xfb) will be returned,
and you can use it to do more things.

Signed-off-by: Leo Wen <leo.wen@rock-chips.com>
---
 common/usb_kbd.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index d2d29cc..7c96c78 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -73,6 +73,10 @@ static const unsigned char usb_kbd_num_keypad[] = {
 	'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
 	'.', 0, 0, 0, '='
 };
+static const unsigned char usb_kbd_fn_key[] = {
+	0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5,
+	0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb
+};
 
 /*
  * map arrow keys to ^F/^B ^N/^P, can't really use the proper
@@ -206,6 +210,9 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode,
 		else
 			keycode = usb_kbd_numkey[scancode - 0x1e];
 	}
+	/* Fn keys pressed */
+	if ((scancode >= 0x3a) && (scancode <= 0x45))
+		keycode = usb_kbd_fn_key[scancode - 0x3a];
 
 	/* Arrow keys */
 	if ((scancode >= 0x4f) && (scancode <= 0x52))
-- 
2.7.4

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

* [U-Boot] [PATCH] common:usb_kbd:Add key values of F1~F12
  2017-08-08  1:27 [U-Boot] [PATCH] common:usb_kbd:Add key values of F1~F12 Leo Wen
@ 2017-08-09 10:33 ` Dr. Philipp Tomsich
  2017-08-13 21:36   ` Simon Glass
  0 siblings, 1 reply; 3+ messages in thread
From: Dr. Philipp Tomsich @ 2017-08-09 10:33 UTC (permalink / raw)
  To: u-boot


> On 08 Aug 2017, at 03:27, Leo Wen <leo.wen@rock-chips.com> wrote:
> 
> When you press the F1~F12 button from the USB keyboard, the reference Fn
> key table(usb_kbd_fn_key[]),the key value(0xf0~0xfb) will be returned,
> and you can use it to do more things.

How does doing this code (in usb_kbd.c) relate to the translation matrices
in drivers/input/input.c (which maps from a scancode—i.e. ’typical AT-101
position’ column in the USB HUT document—to the internal character
value in U-Boot)?

And should we even expose the function keys via getc() instead of generating
escape sequences? The key values 0xf0 through 0xfb are usually not associated
with F1 through F12.

Note that with drivers/input/input.c, I would expect escapes to be generated
for KEY_F1 (\033OP) through KEY_F12 (\033[24~)… which would need to
be added to the kbd_to_ansi364 table.

> Signed-off-by: Leo Wen <leo.wen@rock-chips.com>
> ---
> common/usb_kbd.c | 7 +++++++
> 1 file changed, 7 insertions(+)
> 
> diff --git a/common/usb_kbd.c b/common/usb_kbd.c
> index d2d29cc..7c96c78 100644
> --- a/common/usb_kbd.c
> +++ b/common/usb_kbd.c
> @@ -73,6 +73,10 @@ static const unsigned char usb_kbd_num_keypad[] = {
> 	'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
> 	'.', 0, 0, 0, '='
> };
> +static const unsigned char usb_kbd_fn_key[] = {
> +	0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5,
> +	0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb
> +};

Why did you choose these values to encode F1 through F12?
Is there some precedent for using these character codes for these keys?

> 
> /*
>  * map arrow keys to ^F/^B ^N/^P, can't really use the proper
> @@ -206,6 +210,9 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode,
> 		else
> 			keycode = usb_kbd_numkey[scancode - 0x1e];
> 	}
> +	/* Fn keys pressed */
> +	if ((scancode >= 0x3a) && (scancode <= 0x45))
> +		keycode = usb_kbd_fn_key[scancode - 0x3a];
> 
> 	/* Arrow keys */
> 	if ((scancode >= 0x4f) && (scancode <= 0x52))
> -- 
> 2.7.4
> 
> 

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

* [U-Boot] [PATCH] common:usb_kbd:Add key values of F1~F12
  2017-08-09 10:33 ` Dr. Philipp Tomsich
@ 2017-08-13 21:36   ` Simon Glass
  0 siblings, 0 replies; 3+ messages in thread
From: Simon Glass @ 2017-08-13 21:36 UTC (permalink / raw)
  To: u-boot

Hi,

On 9 August 2017 at 04:33, Dr. Philipp Tomsich
<philipp.tomsich@theobroma-systems.com> wrote:
>
>> On 08 Aug 2017, at 03:27, Leo Wen <leo.wen@rock-chips.com> wrote:
>>
>> When you press the F1~F12 button from the USB keyboard, the reference Fn
>> key table(usb_kbd_fn_key[]),the key value(0xf0~0xfb) will be returned,
>> and you can use it to do more things.
>
> How does doing this code (in usb_kbd.c) relate to the translation matrices
> in drivers/input/input.c (which maps from a scancode—i.e. ’typical AT-101
> position’ column in the USB HUT document—to the internal character
> value in U-Boot)?

There is no relation unfortunately. The usb protocol uses a different
encoding I believe.

>
> And should we even expose the function keys via getc() instead of generating
> escape sequences? The key values 0xf0 through 0xfb are usually not associated
> with F1 through F12.

I think escape codes should be used, but I am not an expert on this.

>
> Note that with drivers/input/input.c, I would expect escapes to be generated
> for KEY_F1 (\033OP) through KEY_F12 (\033[24~)… which would need to
> be added to the kbd_to_ansi364 table.
>
>> Signed-off-by: Leo Wen <leo.wen@rock-chips.com>
>> ---
>> common/usb_kbd.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/common/usb_kbd.c b/common/usb_kbd.c
>> index d2d29cc..7c96c78 100644
>> --- a/common/usb_kbd.c
>> +++ b/common/usb_kbd.c
>> @@ -73,6 +73,10 @@ static const unsigned char usb_kbd_num_keypad[] = {
>>       '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
>>       '.', 0, 0, 0, '='
>> };
>> +static const unsigned char usb_kbd_fn_key[] = {
>> +     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5,
>> +     0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb
>> +};
>
> Why did you choose these values to encode F1 through F12?
> Is there some precedent for using these character codes for these keys?
>
>>
>> /*
>>  * map arrow keys to ^F/^B ^N/^P, can't really use the proper
>> @@ -206,6 +210,9 @@ static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode,
>>               else
>>                       keycode = usb_kbd_numkey[scancode - 0x1e];
>>       }
>> +     /* Fn keys pressed */
>> +     if ((scancode >= 0x3a) && (scancode <= 0x45))
>> +             keycode = usb_kbd_fn_key[scancode - 0x3a];
>>
>>       /* Arrow keys */
>>       if ((scancode >= 0x4f) && (scancode <= 0x52))
>> --
>> 2.7.4
>>
>>

Regards,
Simon

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

end of thread, other threads:[~2017-08-13 21:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-08  1:27 [U-Boot] [PATCH] common:usb_kbd:Add key values of F1~F12 Leo Wen
2017-08-09 10:33 ` Dr. Philipp Tomsich
2017-08-13 21:36   ` 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.