将虚拟键盘更改为AZERTY

时间:2015-07-10 08:29:18

标签: javafx javafx-8 keyboard-layout azerty-keyboard

我有一个应该在Windows平板电脑上以全屏模式运行的javafx应用程序。

我的问题是,当键盘出现时,它在QWERTY中,而我的平板电脑在AZERTY中。

所以问题是:有没有办法使用系统虚拟键盘或将javafx虚拟键盘切换为AZERTY?

2 个答案:

答案 0 :(得分:1)

我在尝试同样的事情时发现了你的问题。 我花了一天时间试图让javafx显示一个AZERTY键盘,我找到了解决方案!

好吧,让我说清楚:javafx完全没有机会拥有一个azerty键盘,所以你必须破解一下。

下面的解决方案并不是一个完美的解决方案,每次更新javafx时都必须重复它,但是它允许你极端自定义键盘,远远超过了它的性质和分析。

解决方案1(脏但有效)

您需要编辑JDK附带的javafx文件中的文件

步骤:

  1. 转到JDK(在Mac中:/ Library / Java / JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home)

  2. 进入jre / lib / ext并将名为jfxrt.jar的javafx jar复制到桌面上的文件夹中。

  3. 如果您没有EMACS,请安装EMACS并使用此软件打开复制的jar文件

  4. 浏览搜索com / sun / javafx / scene / control / skin / TextBoard.txt的文件列表 列表从A-Z排序,因此使用它(有超过6000个文件)。

  5. 打开它,你就在这里。将字符更改为任何顺序都会让您开心。我加入了azerty命令。

  6. 保存并将jfxrt.jar复制回原处。完成。

  7. 注意:不要尝试解压缩jar并重新压缩它,因为jdk会保留文件的索引列表,所以它不会工作。

    结果:azerty javafx virtual keyboard in action

    解决方案2(干净但我没有完成)

    当我深入研究javafx类时,我发现负责加载设置键盘的TextBoard.txt文件的类是FXKVSkin 此类用于接收其他类型的键盘,而不是单独的qwerty默认键盘。 您所要做的就是在代码中添加:

      

    textFieldThatYouUse.getProperties()。把(FXVK.VK_TYPE_PROP_KEY,   " mykeyboard&#34);

    mykeyboard是你创建的文件,如TextBoard.txt,名为MykeyboardBoard.txt(大写字母很重要)。

    FXKVSkin现在将查找名为MykeyboardBoard.txt的文件,以及我冒险结束的地方。 您需要让FXKVSkin找到您的文件,我尝试在运行时解决方案Here将类文件添加到类路径中,但它没有用。

    如果有人可以解决这个问题,请将其添加为答案,这将是一个不太肮脏的解决方案。

    希望这些解决方案能够帮助一些非英语人士! :P

答案 1 :(得分:0)

布局的定义包含在jfxrt.jar(Java安装的一部分)中。它由TextBoard.txt描述。可以使用7zip或类似程序浏览jfxrt.jar。 TextBoard.txt位于com/sun/javafx/scene/control/skin/

此文件已加载com/sun/javafx/scene/control/skin/FXVKSkin.java负责加载TextBoard.txt文件。浏览javafx源代码(通过jdk包含并包含在javafx-src.zip中)以查看它是如何处理的。也许这会为您提供足够的信息来加载您自己的TextBoard.txt文件。