As you can read on: http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Unicode-HOWTO.html#ss2.1 Linux console don't support non-ASCII capital letters using Caps Lock in UTF-8 mode. On that site you will even find patch (for kernel 2.3.12) which add such support. Steps to reproduce: 1. Log into Linux console (i.e with polish keytable) 2. Turn on Caps Lock 3. Press Alt+l You should get: Ł (Lstroke), but you will get ł (lstroke) Note: Shift+Alt+l works fine.
Reclassify under Drivers/Input.
Marcin, can you confirm this bugwith latest kernel? Thanks.
Still valid for 2.6.24.4 (on Fedora 8).
Still valid under 2.6.32-rc7 linux-2.3.12-keyboard.diff mysteriously dissapears *sniff*
OK, something like that properly done need discussion on linux-kernel: diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c index 737be95..86ab400 100644 --- 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, ¶m) == NOTIFY_STOP) return; - if (down && !raw_mode) + if (down && !raw_mode) { + if (vc_kbd_led(kbd, VC_CAPSLOCK)) { + /* CYRILLIC SMALL LETTER => CYRILLIC CAPITAL LETTER */ + if (0x0430 <= keysym && keysym <= 0x044f) + keysym -= 0x20; + } to_utf8(vc, keysym); + } return; }
Created attachment 23794 [details] make CapsLock work as expected even for non-ASCII characters
Nacked. That makes the caps lock a shift lock, which is not the same and would surprise the user. If you really want a shift lock, set the capslock key to the shiftlock keysym. The keyboard capslock led won't lit, but that's another concern and should probably be improved instead of breaking the existing caps lock behavior. Such led interface would be useful for e.g. showing keyboard layout changes when loading several keymaps like console-setup does. Also, note that the caps version of a non-ASCII character is not always available as the shifted position. On a French keyboard, for instance, É is obtained by pressing altgr+shift+é. The console-setup package correctly builds a keymap using another modifier to have proper caps lock support, without the need to load lower/upper case in yet another array of the kernel with yet another interface.
7746 is probably a dupe now.