it wasn't a problem of kernels. xserver-xorg-input-keyboard was the problem.
I compare it with gentoo source and that's the results.
input-keyboard-1.0.1.3/src/kbd.c kbd.c -Nur --- ../../../xserver-xorg-input-keyboard-1.0.1.3/src/kbd.c 2006-03-11 17:55:31.000000000 +0900 +++ kbd.c 2005-11-10 06:31:23.000000000 +0900 @@ -770,7 +770,7 @@ /* * check for an autorepeat-event */ - if (down && KeyPressed(keycode) && keycode < 146) { + if (down && KeyPressed(keycode)) { int num = keycode >> 3; int bit = 1 << (keycode & 7);
@@ -783,25 +783,11 @@ if (UsePrefix) { xf86PostKeyboardEvent(device, keyc->modifierKeyMap[keyc->maxKeysPerModifier*7], TRUE); - if (keycode < 146) { - xf86PostKeyboardEvent(device, keycode, down); - } else if (down) { - /* If it's a key down event, send a down and up. Otherwise - drop it */ - xf86PostKeyboardEvent(device, keycode, TRUE); - xf86PostKeyboardEvent(device, keycode, FALSE); - } + xf86PostKeyboardEvent(device, keycode, down); xf86PostKeyboardEvent(device, keyc->modifierKeyMap[keyc->maxKeysPerModifier*7], FALSE); } else { - if (keycode < 146) { - xf86PostKeyboardEvent(device, keycode, down); - } else if (down) { - /* If it's a key down event, send a down and up. Otherwise - drop it */ - xf86PostKeyboardEvent(device, keycode, TRUE); - xf86PostKeyboardEvent(device, keycode, FALSE); - } + xf86PostKeyboardEvent(device, keycode, down); } }
in ubuntu source there are some exception over 146 keycodes. hangul / Eng key is keycodes 210. so excption make hangul key doens't work.
it wasn't a problem of kernels. xserver- xorg-input- keyboard was the problem.
I compare it with gentoo source and that's the results.
input-keyboard- 1.0.1.3/ src/kbd. c kbd.c -Nur ./xserver- xorg-input- keyboard- 1.0.1.3/ src/kbd. c 2006-03-11 keycode) ) {
--- ../../.
17:55:31.000000000 +0900
+++ kbd.c 2005-11-10 06:31:23.000000000 +0900
@@ -770,7 +770,7 @@
/*
* check for an autorepeat-event
*/
- if (down && KeyPressed(keycode) && keycode < 146) {
+ if (down && KeyPressed(
int num = keycode >> 3;
int bit = 1 << (keycode & 7);
@@ -783,25 +783,11 @@
xf86PostKeyboar dEvent( device,
keyc-> modifierKeyMap[ keyc->maxKeysPe rModifier* 7], TRUE); dEvent( device, keycode, down); dEvent( device, keycode, TRUE); dEvent( device, keycode, FALSE); dEvent( device, keycode, down);
xf86PostKeyboar dEvent( device,
keyc-> modifierKeyMap[ keyc->maxKeysPe rModifier* 7], FALSE); dEvent( device, keycode, down); dEvent( device, keycode, TRUE); dEvent( device, keycode, FALSE); dEvent( device, keycode, down);
if (UsePrefix) {
- if (keycode < 146) {
- xf86PostKeyboar
- } else if (down) {
- /* If it's a key down event, send a down and up. Otherwise
- drop it */
- xf86PostKeyboar
- xf86PostKeyboar
- }
+ xf86PostKeyboar
} else {
- if (keycode < 146) {
- xf86PostKeyboar
- } else if (down) {
- /* If it's a key down event, send a down and up.
Otherwise
- drop it */
- xf86PostKeyboar
- xf86PostKeyboar
- }
+ xf86PostKeyboar
}
}
in ubuntu source there are some exception over 146 keycodes.
hangul / Eng key is keycodes 210. so excption make hangul key doens't work.