在NetBeans / Java中键入特殊字符(使用Alt Gr)

时间:2012-05-26 09:46:09

标签: java netbeans x11

我在CentOS 6.1上使用塞尔维亚拉丁语键盘。当我按 Alt Gr + N 时,我得到}。无处不在,除了NetBeans。

另外,我无法输入任何括号[] {}或\ |。有人遇到过解决方案吗?

不能选择更换每个大括号或其他符号的键盘。

2 个答案:

答案 0 :(得分:1)

解决方案是安装Sun / Oracle Java,然后重新安装NetBEans。

答案 1 :(得分:1)

实际上它是一个X11 /发行版错误。

KDE或GTK应用程序使用自己的键盘机制,因此它们不会显示该问题; 但是java(以及netbeans)使用X11键盘机制进行输入。

问题在于X11如何处理您的语言环境;如果设置得当它起作用;如果不是,它不会。 X11没有任何“默认”规则;如果你的语言环境不知道X11,你什么都没有。 此外,X11语言环境支持也没有太多更新。

X11,为了允许正确的altgr / compose规则必须加载正确的“Compose”文件。 它根据区域设置加载(或不加载):在/usr/share/X11/locale/compose.dir文件中(您的路径可能不同)有以下行:

en_US.UTF-8/Compose             en_US.UTF-8
en_US.UTF-8/Compose             sr_CS.UTF-8
en_US.UTF-8/Compose:            en_US.UTF-8
en_US.UTF-8/Compose:            sr_CS.UTF-8

等。 (是的,每个语言环境有两行,有和没有冒号;一个用于旧程序,另一个用于新程序;但我不记得哪个是哪个)

您使用的语言环境必须有一行(使用“locale”命令显示)。 请注意,如果系统使用“en_US.utf8”之类的区域设置,则必须有别名 (在locales.alias文件中);类似的东西:

sr_CS.utf8     sr_CS.UTF-8
...
sr_CS.utf8:    sr_CS.UTF-8

(同样,有或没有结肠复制)

要解决您的问题,您可以在启动java程序之前设置LC_ALL = en_US.UTF-8;或编辑(您需要是root,并在每次X11更新时执行)compose.dir(和locale.dir和/或locale.alias)文件,复制en_US.UTF-8行并适应您的语言环境。 您还可以向发行版报告,以便他们修补这些 .dir / .alias文件,以便为发行版提供的所有语言环境正常工作。