Как можно сопоставить значения ASCII с соответствующими кодами клавиш? - PullRequest
1 голос
/ 21 июня 2009

Как мне сопоставить значения ASCII с соответствующими кодами клавиш?

Ответы [ 2 ]

4 голосов
/ 21 июня 2009

Коды клавиш определены для общих ключей. Они имеют префикс VK_ (для виртуального ключа):

Буквенно-цифровые клавиши

ВК_0, ВК_1, ..., ВК_9, ВК_А, ВК_Б, ..., ВК_З

Клавиши управления

V K_ENTER, VK_BACKSPACE, VK_TAB, VK_ESCAPE

Функциональные клавиши

VK_F1, VK_F2, VK_F3, VK_F4 VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, ВКонтакте VK_SCROLL_LOCK, VK_PRINTSCREEN, VK_PAUSE, VK_DELETE, VK_INSERT, VK_PAGE_UP, VK_PAGE_DOWN, VK_HOME, VK_END

Клавиши со стрелками

VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN

Ref. : Java Примечания: Клавиатура

0 голосов
/ 21 июня 2009

Если я правильно понимаю, вы получаете сообщение, которое хотите транслировать как KeyEvents, и преобразование сообщения в ASCII достаточно просто. теперь вы хотите, чтобы мы преобразовали этот ACSII в коды клавиш.

если вы посмотрите на код для KeyEvent, вы увидите, что VK_A через VK_Z соответствуют ASCII-значениям от A до Z, что делает сопоставление относительно простым. обратите внимание, что, хотя это ASCII для заглавных букв, неизмененные в KeyEvent, они представляют строчные буквы. чтобы получить коды клавиш в верхнем регистре, вам необходимо объединить модификаторы для VK_SHIFT (и / или VK_CAPSLOCK) с ASCII для заглавной буквы.

Итак, продолжая с предполагаемой целью, вы можете создать KeyEvent, установив код клавиши для буквы, разрешив как строчные, так и прописные буквы к одному и тому же коду ASCII (для прописных). затем вы можете установить модификатор на KeyEvent на VK_SHIFT, если ваш входной ASCII находится в пределах диапазона верхнего регистра ASCII.

если ваша проблемная область более обширна, вы можете настроить карту, с помощью которой вы можете просматривать эти коды, а также другие знаки препинания и контрольные символы. Реализация KeyEvent.getKeyText () показывает нечто подобное, но в обратном направлении. Вы можете использовать это в качестве отправной точки. переход по этому маршруту также уменьшит риск для вашего приложения, если по какой-то причине Java решит изменить постоянные значения для этих полей VK_.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...