2011-12-30 3 views
0

Программа, в которой я работаю на виртуальной клавиатуре, которая требует unicode. Используя код, который я получил от http://goo.gl/pv9ht, и он работает для нормальных (ASCII) клавиш при преобразовании в код ключа, но XKeysymToKeycode() возвращает 0 на клавишных типа XK_agrave (include/X11/keysymdefs.h).X11 Unicode KeyEvent Issues

Я также не совсем уверен, как сделать то же самое с капиталами. Когда я пытаюсь сделать то же самое с XK_A (это капитал «A»), он возвращает тот же самый код ключа, что и «a». Это имеет смысл, поскольку они являются одним и тем же ключевым кодом (наряду с множеством других символов) в соответствии с выходом 'xmodmap -pke'. Но как я могу заставить его отправить (XSendKeyEvent) основную форму кода ключа?

Помощь была бы очень признательна.

ответ

1

Вы отправляете с помощью клавиши-модификатора (сдвиг в данном случае)

Так вы установите XKeyEvent-> состояния | = ShiftMask

элемент устанавливается состояние, чтобы указать логическое состояние кнопок указателя и ключи-модификаторы непосредственно перед событием, которое является побитовым включением ИЛИ одной или нескольких масок ключа кнопки или модификатора: Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask , и Mod5Mask.

Источник: http://linux.die.net/man/3/xkeyevent

+0

Спасибо. Любая идея относительно первой части, правда? – doomrobo

+0

Насколько я знаю, нет способа отправить нажатия клавиш Unicode с помощью X api. –

+0

Проблема решена. Я решил просто отправить коды клавиш Ctrl + Shift + u + (номера юникода) + релиз модов. Вот как это работает в Ubuntu, по крайней мере. – doomrobo