Bug 7063
Summary: | Missing support for non-ASCII capital letters using Caps Lock in UTF-8 mode | ||
---|---|---|---|
Product: | Drivers | Reporter: | Marcin Garski (mgarski) |
Component: | Input Devices | Assignee: | Alexey Dobriyan (adobriyan) |
Status: | CLOSED OBSOLETE | ||
Severity: | normal | CC: | adobriyan, alan, bunk, protasnb, samuel.thibault |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.24-4 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | make CapsLock work as expected even for non-ASCII characters |
Description
Marcin Garski
2006-08-27 07:12:51 UTC
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. |