【问题标题】:Change windows keyboard in java?在java中更改Windows键盘?
【发布时间】:2013-01-08 05:43:22
【问题描述】:

我想更改当前以编程方式使用的 Windows 键盘。

我正在编写一个东方语言的字典程序,我希望它在用户单击不同的表格列时切换到另一个键盘。

我对此进行了调查,并找到了使用 Windows PowerShell 和本机 C++ 代码的示例。 PowerShell 似乎不起作用,而且我对原生 Windows API 和 C 不熟悉。任何有关如何在 Java 中实际完成此操作的帮助将不胜感激。

【问题讨论】:

标签: java internationalization keyboard


【解决方案1】:

这里有一篇博文解释了如何做到这一点:change input method
简而言之:

yourMainJFrame.getInputContext().selectInputMethod(new Locale("fa", "IR")); 

【讨论】:

  • 谢谢,Swing 看起来很棒,但我使用的是 JavaFx 2.2,但我似乎找不到等价物?!有吗?
  • 我尝试了这个解决方案,但在 Ubuntu 上失败了) setxkbmap 程序有点适合我,但是我无法从统一中选择切换布局。看起来像是非常特定于平台的问题。在 Windows 中使用 jni 并不难,这里有来自 stackoverflow 的很好的解释:stackoverflow.com/a/2389473/1573825 user32.dll 中有两个函数 - GetKeyboardLayoutName 和 LoadKeyboardLayout
  • eto pravilni otvet
【解决方案2】:

上面的方法对我不起作用,所以我使用了 Robot 的原始方法

public static void switchKeyboardLanguage()
{
    SwingUtilities.invokeLater(new Runnable()
    {
        public void run()
        {
            try
            {
                Robot robot = new Robot();
                robot.keyPress(KeyEvent.VK_ALT);
                robot.keyPress(KeyEvent.VK_SHIFT);
                robot.delay(10);
                robot.keyRelease(KeyEvent.VK_ALT);
                robot.keyRelease(KeyEvent.VK_SHIFT);
            }
            catch (AWTException e)
            {
                LogUtils.logError("Failed to use Robot, got exception: ", e);
            }
        }
    });
}

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2023-03-16
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2010-10-25
    • 2020-07-23
    相关资源
    最近更新 更多