Подтверждаю: при включенном NumLock не вводится 0 с основного блока клавиатуры. С дополнительного — вводится.
Пользователь решил продолжить мысль 04 Апреля 2011, 18:12:19:
Причина:
vadim@host3:~/src/xneur/xneur$ svn diff
Index: lib/main/bind_table.c
===================================================================
--- lib/main/bind_table.c (revision 879)
+++ lib/main/bind_table.c (working copy)
@@ -273,43 +273,43 @@
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->numlock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->numlock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->capslock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->capslock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->scrolllock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->scrolllock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->numlock_mask && main_window->keymap->capslock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->numlock_mask | main_window->keymap->capslock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->numlock_mask && main_window->keymap->scrolllock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->numlock_mask | main_window->keymap->scrolllock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->capslock_mask && main_window->keymap->scrolllock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->capslock_mask | main_window->keymap->scrolllock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
if (main_window->keymap->numlock_mask && main_window->keymap->capslock_mask && main_window->keymap->scrolllock_mask)
- XGrabKey (main_window->display, btable[action].key_sym,
+ XGrabKey (main_window->display, XKeysymToKeycode(main_window->display, btable[action].key_sym),
btable[action].modifier_mask | main_window->keymap->numlock_mask | main_window->keymap->capslock_mask | main_window->keymap->scrolllock_mask,
DefaultRootWindow (main_window->display),
FALSE, GrabModeAsync, GrabModeAsync);
Для функции grab_user_action аналогично.