当前位置:  开发笔记 > 编程语言 > 正文

如何使Java.awt.Robot类型为unicode字符?(可能吗?)

如何解决《如何使Java.awt.Robot类型为unicode字符?(可能吗?)》经验,为你挑选了1个好方法。

我们有一个用户提供的字符串,可能包含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);
  }
}

小智.. 10

基于javamonkey79的代码,我创建了以下代码片段,它应该适用于所有Unicode值...

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等效项并相应地按下/释放键.



1> 小智..:

基于javamonkey79的代码,我创建了以下代码片段,它应该适用于所有Unicode值...

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等效项并相应地按下/释放键.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有