KeyCode для ключа (? ß \)
Я использую немецкую клавиатуру (показано ниже) и пробую класс Robot на Java. Я пытаюсь найти KeyCodes для нажатых клавиш. Он работает с getKeyCode()
. Например: "A" - это код: 65, "-" - код: 45, 'ENTER' - код: 10
Но когда я нажимаю '? ß\'key (на немецких клавиатурах справа от клавиш 1-0 выше)
getKeyCode()
говорит код: 0, и я не нашел ни одного VK_KEY
в документальном фильме.
Можно ли нажать эту клавишу?
![German keyboard]()
Ответы
Ответ 1
Коды клавиш предназначены для клавиатур с английскими/американскими макетами. Попробуйте VK_EQUALS
для самого ключа, но Robot
может вместо этого отправить =
.
Если вам не нужен фактический ключ для нажатия, но введенный символ, вы можете попытаться смоделировать ввод Unicode с помощью кодовой точки Alt + Unicode. См. Этот вопрос: Как сделать символы Unicode типа Java.awt.Robot? (Возможно ли это?)
См. также этот ответ: fooobar.com/questions/496802/...
Он указывает на библиотеку, которая использует раскладки клавиатуры для сопоставления символов Java с ключами. RoboticAutomaton.typeCharacter()
использует раскладку клавиатуры, чтобы узнать, как клавиши нажать, чтобы получить определенный символ.
Ответ 2
Ядро Java поддерживает около 44000 различных символов, включая символы ASCII, поэтому также ожидайте некоторые новые вещи, если вы хотите увидеть, какой ключ вы нажимаете, и какой из них нажат, просто распечатайте их в методе keyPressed методом getExtendedKeyCode(), если его не стандартный ключ, а также распечатать его ключ.
Ответ 3
javadoc KeyEvent говорит:
Не все символы имеют связанный с ними код ключа. Например, нет ключа для вопросительного знака, потому что нет клавиатуры, для которой она появляется на основном уровне.
Символом ß
является такой символ. Тем не менее, все события нажатия клавиш имеют согласованный расширенный key code, который можно найти с помощью метода утилиты KeyEvent.getExtendedKeyCodeForChar()
и по сравнению с тем, ключевое событие:
if (keyEvent.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('ß')) {
// ß was pressed
}
Ответ 4
Обратный слэш \, по-видимому, считается основным символом этого ключа. Таким образом, KeyEvent.VK_BACK_SLASH
дает вам ключевой код этого ключа на немецкой клавиатуре.