我正在编写一些代码来使用 Robot 类键入字符串。一切都很好(好吧,我必须使用一个大的 switch 语句来获取字符键码),除了一些键没有键码,因为它们实际上是Shift+ 一些其他键的组合。对于大写字母,使用 很容易检查,Character.isUpperCase(c)
但对于所有符号,例如!@#$%^&*()_+
和各种标点符号,不被视为“大写”,尽管它们确实需要按下 shift 才能生成其击键。我试着用谷歌搜索它,但只是发现一个没有令人满意的答案的论坛帖子。有什么方法可以确定一个角色是否需要按下 shift 键,如果需要,“un-shifted”版本是什么角色?
编辑:这是我到目前为止的代码。
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);
}
}