[PATCH 2/2] input: usb keyboard: fix CTRL+C

Sam Ravnborg sam at ravnborg.org
Sat Feb 20 08:51:46 PST 2016


On Sat, Feb 20, 2016 at 05:27:45PM +0300, Peter Mamonov wrote:
> Signed-off-by: Peter Mamonov <pmamonov at gmail.com>
> ---
>  drivers/input/input.c    |  4 ++-
>  drivers/input/keymap.c   | 82 ++++++++++++++++++++++++++++++++++++++++++++++++
>  include/input/keyboard.h |  1 +
>  3 files changed, 86 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index ad7400f..1c6891c 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -164,7 +164,9 @@ static void input_console_notify(struct input_notifier *in,
>  	if (ic->modstate[4] || ic->modstate[5])
>  		modstate |= 1 << 2;
>  
> -	if (modstate & (1 << 0))
> +	if (modstate & (1 << 1))
> +		ascii = keycode_bb_ctrl_keys[ev->code];
> +	else if (modstate & (1 << 0))
>  		ascii = keycode_bb_shift_keys[ev->code];
>  	else
>  		ascii = keycode_bb_keys[ev->code];
> diff --git a/drivers/input/keymap.c b/drivers/input/keymap.c
> index 79ca461..90f1818 100644
> --- a/drivers/input/keymap.c
> +++ b/drivers/input/keymap.c
> @@ -167,3 +167,85 @@ uint8_t keycode_bb_shift_keys[NR_KEYS] = {
>  	[KEY_KPEQUAL] =		'=',
>  	[KEY_KPCOMMA] =		',',
>  };
> +
> +uint8_t keycode_bb_ctrl_keys[NR_KEYS] = {
> +	[KEY_RESERVED] =	0xff,
> +	[KEY_ESC] =		0x1b,
> +	[KEY_1] =		'1',
> +	[KEY_2] =		'2',
> +	[KEY_3] =		'3',
> +	[KEY_4] =		'4',
> +	[KEY_5] =		'5',
> +	[KEY_6] =		'6',
> +	[KEY_7] =		'7',
> +	[KEY_8] =		'8',
> +	[KEY_9] =		'9',
> +	[KEY_0] =		'0',
> +	[KEY_MINUS] =		'-',
> +	[KEY_EQUAL] =		'=',
> +	[KEY_BACKSPACE] =	8,
> +	[KEY_TAB] =		'\t',
> +	[KEY_Q] =		'q',
> +	[KEY_W] =		'w',
> +	[KEY_E] =		'e',
> +	[KEY_R] =		'r',
> +	[KEY_T] =		't',
> +	[KEY_Y] =		'y',
> +	[KEY_U] =		'u',
> +	[KEY_I] =		'i',
> +	[KEY_O] =		'o',
> +	[KEY_P] =		'p',
> +	[KEY_LEFTBRACE] =	'[',
> +	[KEY_RIGHTBRACE] =	']',
> +	[KEY_ENTER] =		'\n',
> +	[KEY_A] =		'a',
> +	[KEY_S] =		's',
> +	[KEY_D] =		'd',
> +	[KEY_F] =		'f',
> +	[KEY_G] =		'g',
> +	[KEY_H] =		'h',
> +	[KEY_J] =		'j',
> +	[KEY_K] =		'k',
> +	[KEY_L] =		'l',
> +	[KEY_SEMICOLON] =	';',
> +	[KEY_APOSTROPHE] =	'`',
> +	[KEY_GRAVE] =		'^',
> +	[KEY_BACKSLASH] =	'\\',
> +	[KEY_Z] =		'z',
> +	[KEY_X] =		'x',
> +	[KEY_C] =		3,
Reading readkey.h it loks like the following definition
would be more descriptive:

#define [KEY_C] =               CTL_CH('c'),

The result is in the end the same.

This patch alrady use other definitions from the same
file (BB_*). So CTL_CH() is availabale.

	Sam



More information about the barebox mailing list