Я пишу некоторый код для ввода строк с использованием класса Robot. Все в основном хорошо (ну, я должен использовать большой оператор switch для получения символьных кодов клавиш), за исключением того, что некоторые клавиши не имеют кодов клавиш, потому что они на самом деле являются комбинацией Shift + некоторой другой клавиши. Для букв в верхнем регистре это легко проверить, используя Character.isUpperCase(c)
, но для всех символов, таких как !@#$%^&*()_+
и различные знаки препинания, не считаются "прописными буквами", хотя они требуют нажатия клавиши shift для генерации нажатия клавиш. , Я попытался поискать в Google, но только нашел сообщение на форуме без удовлетворительных ответов. Есть ли способ определить, нужно ли нажимать на сдвиг персонажа, и если да, то какой символ является «несмещенной» версией?
РЕДАКТИРОВАТЬ: Вот код, который я до сих пор.
public void GenerateKeyTyped(char c) {
if (Character.isUpperCase(c)) {
r.keyPress(KeyEvent.VK_SHIFT);
}
r.keyPress(GetKeyCode(c));
r.keyRelease(GetKeyCode(c));
if (Character.isUpperCase(c)) {
r.keyRelease(KeyEvent.VK_SHIFT);
}
}