根据前面的链接(如何发送键盘输出),Java可以模拟使用Robot类按下的键.但是,如何模拟按键的组合?如果我想发送组合"alt-123"这可能使用机器人吗?
我们有一个用户提供的字符串,可能包含unicode字符,我们希望机器人键入该字符串.
如何将字符串转换为机器人将使用的keyCodes?
你是如何做到这一点它也是java版本独立(1.3 - > 1.6)?
我们为"ascii"字符工作的是
//char c = nextChar();
//char c = 'a'; // this works, and so does 'A'
char c = 'á'; // this doesn't, and neither does '?'
Robot robot = new Robot();
KeyStroke key = KeyStroke.getKeyStroke("pressed " + Character.toUpperCase(c) );
if( null != key ) {
// should only have to worry about case with standard characters
if (Character.isUpperCase(c))
{
robot.keyPress(KeyEvent.VK_SHIFT);
}
robot.keyPress(key.getKeyCode());
robot.keyRelease(key.getKeyCode());
if (Character.isUpperCase(c))
{
robot.keyRelease(KeyEvent.VK_SHIFT);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建用于放大和缩小我正在创建的图像编辑应用程序的快捷方式,我发现了一些奇怪的东西.要绑定ctrl+ 的组合+,我必须使用=键和控制和移位掩码:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK + KeyEvent.SHIFT_DOWN_MASK),"ZoomIn");
Run Code Online (Sandbox Code Playgroud)
我尝试直接绑定到VK_PLUS工作的组合都没有:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK + KeyEvent.SHIFT_DOWN_MASK),"ZoomIn");
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK),"ZoomIn");
Run Code Online (Sandbox Code Playgroud)
它现在可以使用第一行代码,但我想知道为什么底部两个都不起作用,如果键盘没有+键作为移位=键,那么(理论上)这可能是一个问题.