Здравствуйте, гость ( Вход | Регистрация )
512es | Дата 8.12.2009, 10:59 |
Повторюсь, Qt::Key смотрел? Сомневаюсь, что коды Qt::Key_A-Qt::Key_Z будут иными даже при русской раскладке. Смотрел. Проблема в том, как преобразовать из keyEvent->key() в Qt::Key?
Цитата 81 81 16 "q" QKeyEvent(KeyPress, 51, 0, ""q"", false, 1) 87 87 17 "w" QKeyEvent(KeyPress, 57, 0, ""w"", false, 1) 69 69 18 "e" QKeyEvent(KeyPress, 45, 0, ""e"", false, 1) 82 82 19 "r" QKeyEvent(KeyPress, 52, 0, ""r"", false, 1) 84 84 20 "t" QKeyEvent(KeyPress, 54, 0, ""t"", false, 1) 89 89 21 "y" QKeyEvent(KeyPress, 59, 0, ""y"", false, 1) 1049 81 16 "й" QKeyEvent(KeyPress, 419, 0, ""й"", false, 1) 1062 87 17 "ц" QKeyEvent(KeyPress, 426, 0, ""ц"", false, 1) 1059 69 18 "у" QKeyEvent(KeyPress, 423, 0, ""у"", false, 1) 1050 82 19 "к" QKeyEvent(KeyPress, 41a, 0, ""к"", false, 1) 1045 84 20 "е" QKeyEvent(KeyPress, 415, 0, ""е"", false, 1) 1053 89 21 "н" QKeyEvent(KeyPress, 41d, 0, ""н"", false, 1) Из постоянных величин тут только третий параметр (nativeScanCode). Я попытался им воспользоваться:
Но и тут неудача! На ноутбуке с линуксом клавишам qwerty соответствовали коды 24-29, а на машине с виндовсом 16-21. От чего это зависит, не знаю.. Толи от модели клавиатуры, толи от операционной системы.. Только что заметил что и keyEvent->nativeVirtualKey() тоже константа, при переключении раскладки. Правда слышал, что в других ОС она отличается.. Проверю. Вот что под линуксом: Цитата 81 113 24 "q" QKeyEvent(KeyPress, 51, 0, ""q"", false, 1) 87 119 25 "w" QKeyEvent(KeyPress, 57, 0, ""w"", false, 1) 69 101 26 "e" QKeyEvent(KeyPress, 45, 0, ""e"", false, 1) 82 114 27 "r" QKeyEvent(KeyPress, 52, 0, ""r"", false, 1) 84 116 28 "t" QKeyEvent(KeyPress, 54, 0, ""t"", false, 1) 89 121 29 "y" QKeyEvent(KeyPress, 59, 0, ""y"", false, 1) 1049 1738 24 "й" QKeyEvent(KeyPress, 419, 0, ""й"", false, 2) 1062 1731 25 "ц" QKeyEvent(KeyPress, 426, 0, ""ц"", false, 2) 1059 1749 26 "у" QKeyEvent(KeyPress, 423, 0, ""у"", false, 2) 1050 1739 27 "к" QKeyEvent(KeyPress, 41a, 0, ""к"", false, 2) 1045 1733 28 "е" QKeyEvent(KeyPress, 415, 0, ""е"", false, 2) 1053 1742 29 "н" QKeyEvent(KeyPress, 41d, 0, ""н"", false, 2) |
|
SABROG | Дата 7.12.2009, 19:10 |
Повторюсь, Qt::Key смотрел? Сомневаюсь, что коды Qt::Key_A-Qt::Key_Z будут иными даже при русской раскладке. | |
512es | Дата 7.12.2009, 18:59 |
Делать таблицу перекодировки - это последнее чем я хотел бы заняться. Разве Qt ничего не знает о раскладках клавиатуры? Как, например, о кодеках.. Разве нельзя как то умно конвентировать символы? Или средствами Qt быстро сменить раскладку, в момент получения строки символов.. Если, конечно, ничего этого делать нельзя, средствами Qt.. То придётся изобретать велосипед.. |
|
trdm | Дата 7.12.2009, 17:41 |
ап =( Кули ап? Делай таблицу перекодировки и развлекайся посимвольно. или ждешь, что напишут за тебя? |
|
SABROG | Дата 7.12.2009, 17:39 |
Так?
Плюс int QKeyEvent::key () const, чтобы понять какая буковка, смотри enum Qt::Key. |
|
512es | Дата 7.12.2009, 16:12 |
ап =( | |
512es | Дата 1.12.2009, 11:23 |
ап.. тема ещё актуальна.. | |
Litkevich Yuriy | Дата 30.11.2009, 13:36 |
Наверное надо как то через QTextCodec найти соответствие нажатым клавишам. не понимаю при чём здесь кодек. |
|
512es | Дата 30.11.2009, 11:57 |
Выяснил что QEvent::KeyboardLayoutChange вызывается при смене раскладки.. | |
512es | Дата 30.11.2009, 11:07 |
Всем привет! В продолжении этой темы. Хочу поднять соседнюю тему по вопросу о раскладке клавиатуры во время отлавливания нажатий клавиш. Задача: считывать символы с клавиатуры в английской раскладке, если даже была выбрана русская (или ещё какая) раскладка. Например "Hello World!", даже если мы набрали "Руддщ Цщкдв!". А-ля пунто. Наверное надо как то через QTextCodec найти соответствие нажатым клавишам.. Но не знаю как( В крайнем случае можно конечно набить вручную массив с соответствием символов, но это кривоватое решение.. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 14:09 |