Получить положение клавиши на клавиатуре

#java #keyboard

#java #клавиатура

Вопрос:

Я надеюсь, что этот вопрос еще не задавался, но я искал решение своей проблемы, и я не нашел ничего полезного для меня.

Я пишу Java-приложение, в котором пользователь может управлять приложением с помощью своей клавиатуры. Проблема в том, что мне нужно много разных клавиш ввода. Поэтому мне также приходится использовать специальные клавиши char. Но моя проблема в том, что я не могу снова закодировать все это для каждой клавиатуры.

Итак, мой вопрос в том, есть ли способ определить место заданной клавиши на клавиатуре. Было бы очень хорошо, если бы кто-нибудь знал, как это сделать.

Заранее спасибо, Лео

Комментарии:

1. Вы не можете точно знать, где находится клавиша «физически» . Клавиатуры отправляют только коды клавиш (как указал G_H), и, кроме того, на некоторых клавиатурах есть физические переключатели, которые изменяют коды клавиш, отправляемые физическими клавишами (например, на некоторых клавиатурах вы можете установить ‘caps-lock’ для отправки кода клавиши для ‘left ctrl’ непосредственно изнутри клавиатуры : вы просто не можете обнаружитьэто программно). Не говоря уже о том, что некоторые контроллеры клавиатуры даже намного более программируемы, чем это.

Ответ №1:

Клавиатура отправляет только коды клавиш в базовый стек. Это зависит от ОС и программного обеспечения, чтобы выяснить, как это использовать. Теперь, возможно, у аппаратного обеспечения есть простой код, который зависит от местоположения, и происходит некоторый перевод, чтобы превратить его в полезный код ключа для приложений. Я считаю, что это должно быть так, поскольку макет можно выбрать из ОС. Но это не похоже на низкоуровневый материал, к которому у вас был бы доступ в Java, за исключением использования JNI.

Исходящий из KeyListener, вы можете фиксировать ключевые события. Я бы посоветовал вам изучить документ, поля и методы этого класса и, возможно, создать небольшое тестовое приложение, которое фиксирует такие события и выводит результаты различных методов. Может быть, вы сможете найти какие-то точки соприкосновения.

Если нет простого способа сделать это, возможно, лучше всего иметь какую-то схему таблицы перевода, которая стандартизирует ввод для наиболее распространенных макетов, таких как Qwerty и Azerty. Это должно подойти большинству пользователей, и поскольку вы хотите полагаться на абсолютное позиционирование, требование одного из небольшого набора макетов не кажется неприемлемым. Пользователи могут изменять макет в операционной системе.

Если вам посчастливилось создавать игру, возможно, создайте какую-нибудь огромную колоду управления, которую люди будут вынуждены покупать, чтобы получить наилучший опыт. Дополнительные деньги! : D

Комментарии:

1. Спасибо. Я думаю, я просто подскажу, когда приложение в первый раз откроет окно, в котором пользователь должен ввести все клавиши, а затем эти данные будут сохранены.

Ответ №2:

вы можете сделать настройки полностью определяемыми пользователем

вы можете сделать некоторые настройки, которые пользователь может изменить, которые сопоставляют клавиши с действиями, имеют стандартный набор для azerty и qwerty по умолчанию