Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
Вопрос следующего плана
Нужно по символу русского, украинского алфавита получить код клавиши на клавиатуре которой соответсвует данный символ.
То есть есть строка "тест" нужно из нее получить набор кодов соответсвующих клавишам "т" "е" "с" "т".
Функция XStringToKeysym и XKeysymToKeycode в с лучае с кирилицей возвращают NoSymbol. Кто сталкивался ? Куда копать?
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Последний раз редактировалось _DiseL_ 06.05.2009 22:54, всего редактировалось 1 раз.
Проблема в том что это наблюдается в сследующих дистрах lenny, sid, squizzy) Ubuntu, Gentoo. За примерчик спасибо.
Вопрос один, кодировка файла в котором соответсвие смволов прописано какая ? я так понимаю язык немецкий ?
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
HertZ В общем так я ничего и не добился. Сделал обманку для спец символов. Но осталась основная проблема. Кирилические символы игнорируются полностью Выдается результат NoSymbol... По поводу кодировки в которой надо скармливать строку XStringToKeysym ничего подсказать не можешь ?
сейчас вот так
Advanced member
Статус: Не в сети Регистрация: 27.02.2007 Откуда: Москва Фото: 54
_DiseL_, у тебя локаль UTF-8? Что-то мне думается, что ты пытаешься ей скармливать строку в однобайтной кодировке, а оно ждет юникод, либо наоборот... Попробуй поменять локаль для проверки, интересно что выйдет.
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
HertZ писал(а):
_DiseL_, у тебя локаль UTF-8? Что-то мне думается, что ты пытаешься ей скармливать строку в однобайтной кодировке, а оно ждет юникод, либо наоборот... Попробуй поменять локаль для проверки, интересно что выйдет.
да utf-8 и с кармливаю ее в однобайтовой кодировке... хм Сейчас попробую Добавлено спустя 1 час, 34 минуты, 55 секунд HertZ в общем принимает только в однобайтовой кодировке и похоже только латиницу. Вот строки Cyrillic_ef, Cyrillic_a и т.д. распознает на ура... Буду делать обратную qt`шной keysymToUnicode
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
С кодами клавиш разобрался по средством своего велосипеда.. погнутого из qt ишного, теперь возник вопрос, как перехватывать все сообщения от xserver (интересует смена фокуса окна) а не только те что к приложениию идут. Есть информация? а то натыкался только на варианты с ручной обработкой цикла сообщений XNextEvent (dpy, &event);
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Advanced member
Статус: Не в сети Регистрация: 27.02.2007 Откуда: Москва Фото: 54
_DiseL_ писал(а):
С кодами клавиш разобрался по средством своего велосипеда..
Интересно... А можно подробнее?
_DiseL_ писал(а):
Есть информация? а то натыкался только на варианты с ручной обработкой цикла сообщений XNextEvent (dpy, &event);
Честно говоря, кроме как использовать цикл, в данной ситуации и не пробовал ничего. Имхо а нем ничего криминального нет, в WinAPI, например, сообщения по большому счету обрабатываются точно так же:
Код:
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
А выше определена структура типа WNDCLASS или WNDCLASSEX, в которой хранится адрес обработчика событий, прототип которой должен иметь такой вид:
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
HertZ писал(а):
Интересно... А можно подробнее?
Поскольку символы были в юникоде то xorg их просто так не принимал. У qt есть функция keysymToUnicode, вот на ее основе сделал unicodeToKeysymа дальше все просто
HertZ писал(а):
Честно говоря, кроме как использовать цикл, в данной ситуации и не пробовал ничего. Имхо а нем ничего криминального нет, в WinAPI, например, сообщения по большому счету обрабатываются точно так же:
Да вот нашел один кривой вариант. Просто приложению приходят в любом случае события, можно в это время принуительно отлавливать текущий активный фокус через XGetInputFocus .. вопрост в том на сколько это корректно и что можно огрести в этом случае
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
HertZ Такой вопрос, а как то можно перехватывать сообщения от клавиатуры, но чсто бы при этом они прохродилди дальше.
А то вариант с XGrabKeyboard(dpy, DefaultRootWindow(dpy), False, GrabModeAsync, GrabModeAsync, CurrentTime) + XNextEvent (dpy, &event) рубят их на корню и дальше не пропускают
Я просто очередно велосипед по поводу глобальных хоткеев делаю. и что то никак
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
HertZ один фиг.
Несовсем, делаю замену KXKB без kdelibs
И еще такой, может кому покажется тупой, вопрос.
При использовании XGrаbKey, получается привызываем к приложению XEvent который будет сформирован при нажатии указанных в XGrаbKey клавиш, то есть данный XEvent будет отправлен в приложение ? или я не так что то понял ?
Правда XGrаbKey почемуто возвращает результат = 1 .... и ничего естественно не работает
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения