Keysyms stored in key_map[] are not simply K() values, but U(K())
values, as can be seen in the KDSKBENT ioctl handler. The
kernel-generated braille keysyms thus need a U() call too.
Signed-off-by: Samuel Thibault <[email protected]>
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 737be95..82c493e 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -1249,7 +1249,7 @@ static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
if (keycode >= NR_KEYS)
if (keycode >= KEY_BRL_DOT1 && keycode <= KEY_BRL_DOT8)
- keysym = K(KT_BRL, keycode - KEY_BRL_DOT1 + 1);
+ keysym = U(K(KT_BRL, keycode - KEY_BRL_DOT1 + 1));
else
return;
else
On Tue, 17 Nov 2009 14:51:11 +0100
Samuel Thibault <[email protected]> wrote:
> Keysyms stored in key_map[] are not simply K() values, but U(K())
> values, as can be seen in the KDSKBENT ioctl handler. The
> kernel-generated braille keysyms thus need a U() call too.
>
> Signed-off-by: Samuel Thibault <[email protected]>
>
> diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
> index 737be95..82c493e 100644
> --- a/drivers/char/keyboard.c
> +++ b/drivers/char/keyboard.c
> @@ -1249,7 +1249,7 @@ static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
>
> if (keycode >= NR_KEYS)
> if (keycode >= KEY_BRL_DOT1 && keycode <= KEY_BRL_DOT8)
> - keysym = K(KT_BRL, keycode - KEY_BRL_DOT1 + 1);
> + keysym = U(K(KT_BRL, keycode - KEY_BRL_DOT1 + 1));
> else
> return;
> else
Sorry, but I cannot work out (with a reasonable amount of effort) what
the user-visible effects of this bug are likely to be. So I am not in
a position to decide which kernel(s) this patch should be merged into.
Please be careful to include this aspect in the changelog when
appropriate, thanks.
Andrew Morton, le Fri 20 Nov 2009 13:19:54 -0800, a ?crit :
> > if (keycode >= NR_KEYS)
> > if (keycode >= KEY_BRL_DOT1 && keycode <= KEY_BRL_DOT8)
> > - keysym = K(KT_BRL, keycode - KEY_BRL_DOT1 + 1);
> > + keysym = U(K(KT_BRL, keycode - KEY_BRL_DOT1 + 1));
> > else
> > return;
> > else
>
> Sorry, but I cannot work out (with a reasonable amount of effort) what
> the user-visible effects of this bug are likely to be. So I am not in
> a position to decide which kernel(s) this patch should be merged into.
It will make braille keyboards actually work. Apparently I had never
really tried it and so it has never worked up to now.
> Please be careful to include this aspect in the changelog when
> appropriate, thanks.
Right, sorry. Braille keyboards announced as KEY_BRL_DOT* are still
pretty rare (that's why the bug completely went unnoticed from the
start), so it's maybe not worth including the patch in the stable
kernels, but making it for 2.6.32 would be a good thing.
Samuel