【发布时间】:2015-09-21 09:24:15
【问题描述】:
我想使用 java awt 机器人输入 å,ø,æ 等字母。但找不到这些字母的任何关键事件。我正在使用 ubuntu 并且选择了挪威语作为一种语言。所以我可以从键盘输入这些字母,但是当我尝试获取键码时,这些字母始终为 0。
有人可以建议我如何使用 java 机器人编写代码。
【问题讨论】:
我想使用 java awt 机器人输入 å,ø,æ 等字母。但找不到这些字母的任何关键事件。我正在使用 ubuntu 并且选择了挪威语作为一种语言。所以我可以从键盘输入这些字母,但是当我尝试获取键码时,这些字母始终为 0。
有人可以建议我如何使用 java 机器人编写代码。
【问题讨论】:
基于 Wolfgang Steiner 的解决方案:
public static void pressUnicode(Robot r, int key_code)
{
r.keyPress(KeyEvent.VK_ALT);
for(int i = 3; i >= 0; --i)
{
// extracts a single decade of the key-code and adds
// an offset to get the required VK_NUMPAD key-code
int numpad_kc = key_code / (int) (Math.pow(10, i)) % 10 + KeyEvent.VK_NUMPAD0;
r.keyPress(numpad_kc);
r.keyRelease(numpad_kc);
}
r.keyRelease(KeyEvent.VK_ALT);
}
这会自动遍历每个十进制的 unicode 键码,将其映射到相应的 VK_NUMPAD 等效项,并相应地按下/释放键。它适用于每个 unicode 字符。
要获取符号的代码,请执行以下操作:
char ch='ä';
int key_code = ch;
System.out.println(key_code);
编辑:此解决方案是基于 Windows 的。要使其适用于 Linux,请尝试以下操作:
"对于 linux - 输入字符时一直按住 'ctrl' 和 'shift'。按住它们的同时按 'U' 然后按 4 位八进制代码的字符。"
【讨论】: