lkml.org 
[lkml]   [2009]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] kbd: (#7063) make CapsLock work as expected even for non-ASCII
    Steps to reproduce:

    [log into console (not xterm)]
    [load non-trivial keymap]
    [turn on CapsLock]
    [type something]

    Symbols won't be capital despite CapsLock and despite Shift+* working
    as expected.

    Note: patch relies on keymap being consistent wrt SMALL/CAPITAL symbols.
    Though extracting SMALL <=> CAPITAL mapping from unicode tables and
    putting it into kernel may be more correct.

    Fix long-standing http://bugzilla.kernel.org/show_bug.cgi?id=7063

    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    ---

    drivers/char/keyboard.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    --- a/drivers/char/keyboard.c
    +++ b/drivers/char/keyboard.c
    @@ -1261,8 +1261,14 @@ static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
    param.value = keysym;
    if (atomic_notifier_call_chain(&keyboard_notifier_list, KBD_UNICODE, &param) == NOTIFY_STOP)
    return;
    - if (down && !raw_mode)
    + if (down && !raw_mode) {
    + if (vc_kbd_led(kbd, VC_CAPSLOCK)) {
    + key_map = key_maps[shift_final ^ (1 << KG_SHIFT)];
    + if (key_map)
    + keysym = key_map[keycode];
    + }
    to_utf8(vc, keysym);
    + }
    return;
    }


    \
     
     \ /
      Last update: 2009-11-16 14:53    [W:0.083 / U:1.244 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site