Owe*_*wen 2 keyboard java keyboard-layout intellij-idea swing
我有一个ISO_Level5_Shift用于提供箭头键的键盘布局。从我的布局符号文件:
key <AC06> { type[Group1]="EIGHT_LEVEL", [ d, D, ampersand, U2227, Home, Home, Greek_delta, Greek_DELTA ]};
key <AC07> { type[Group1]="EIGHT_LEVEL", [ h, H, parenright, U27E9, Left, Left, Greek_eta, Greek_ETA, U210F ]};
key <AC08> { type[Group1]="EIGHT_LEVEL", [ t, T, parenleft, U27E8, Down, Down, Greek_tau, Greek_TAU ]};
key <AC09> { type[Group1]="EIGHT_LEVEL", [ n, N, slash, U2115, Right, Right, Greek_nu, Greek_NU ]};
key <AC10> { type[Group1]="EIGHT_LEVEL", [ s, S, underscore, U2237, End, End, Greek_sigma, Greek_SIGMA ]};
Run Code Online (Sandbox Code Playgroud)
它们适用于大多数程序(Firefox、Eclipse、Vim 等)。不幸的是,它们在我使用过的任何 Java Swing GUI 中都不起作用。特别是,它们在 IntelliJ IDEA 中不起作用,这尤其困扰着我。
我是否可以更改布局、Java 相关环境变量或 IDEA 配置中的某些内容来解决此问题?
好的,我找到了解决方案。这不是很理想,但它确实获得了所需的行为。
首先,我使用以下命令转储了键盘配置的完整状态
$ xkbcomp $DISPLAY - > now.xkb
Run Code Online (Sandbox Code Playgroud)
然后我找到了线条
interpret Overlay1_Enable+AnyOfOrNone(all) {
action= LockControls(controls=Overlay1);
};
Run Code Online (Sandbox Code Playgroud)
并将其更改为
interpret Overlay1_Enable+AnyOfOrNone(all) {
action= SetControls(controls=Overlay1);
};
Run Code Online (Sandbox Code Playgroud)
这可以防止修饰符“粘滞”,即它仅在您按住键时适用。
然后我拿了曾经是我的 ISO_Level5_Shift 的钥匙:
key <TAB> {
type= "ONE_LEVEL",
symbols[Group1]= [ ISO_Level5_Shift ]
};
Run Code Online (Sandbox Code Playgroud)
并将其更改为 Overlay1_Enable:
key <TAB> {
type= "ONE_LEVEL",
symbols[Group1]= [ Overlay1_Enable ]
};
Run Code Online (Sandbox Code Playgroud)
然后对于我希望更改生效的每个键,我添加了一个覆盖定义:
key <AD07> {
type= "EIGHT_LEVEL",
overlay1= <PGUP>,
symbols[Group1]= [ g, G, asterisk, G, Prior, G, Greek_gamma, Greek_GAMMA ]
};
Run Code Online (Sandbox Code Playgroud)
然后重新应用整个事情
$ xkbcomp now.xkb $DISPLAY
Run Code Online (Sandbox Code Playgroud)
有用的文档:
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |