use*_*567 5 keyboard keyboard-layout xkb
我在韩国买了一个漂亮的机械键盘。一般来说,除了一件事之外,它的工作非常好 - 即使它的右侧有Alt和Ctrl键,这些键也不会生成与“常规”键盘相同的代码。
长话短说,RightAlt是 Hangul 键(拉丁语和韩语字母Ctrl之间的转换)和Hanja(韩语和“旧”韩语字符之间的转换)。我想使用多种布局——韩语和我的本地布局(波兰语),并保持两全其美——这意味着让 Right在键入波兰语时Alt发出键码,Alt在键入韩语时发出韩文键码。
韩语开箱即用(因为那里的键码是正确的),但波兰语需要调整。我/usr/share/X11/xkb/symbols/pl
通过在活动xkb_symbols
部分添加以下几行来更改布局 ( ) :
key <HNGL> { [ ISO_Level3_Shift ] };
key <HJCV> { [ Control_R ] };
Run Code Online (Sandbox Code Playgroud)
我已经注释掉相关的线路HNGL
和HJCV
在“INET”布局,因为这些被覆盖我的变化。
经过这些更改后,我可以Alt完美地工作,但仍然存在Ctrl密钥无法正常工作的问题。一般情况下它可以工作,但是在编辑文本时,我应该能够例如使用Ctrl+Backspace组合删除一个单词,但我无法这样做。
我已执行xset -r 131
以禁用此Ctrl/Hanja 键的键重复,但它仍然无法像真正的那样工作Ctrl
这xev
是 remapped的输出Hanja
:
KeyPress event, serial 34, synthetic NO, window 0x1000001,
root 0x13f, subw 0x0, time 49086462, (88,89), root:(3928,141),
state 0x10, keycode 131 (keysym 0xffe4, Control_R), same_screen YES,
XKeysymToKeycode returns keycode: 105
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Run Code Online (Sandbox Code Playgroud)
这是一个常规Ctrl(来自其他键盘):
KeyPress event, serial 39, synthetic NO, window 0x1000001,
root 0x13f, subw 0x0, time 49144922, (616,377), root:(4456,429),
state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Run Code Online (Sandbox Code Playgroud)
有什么我可以改变的,让我的系统把那个键当作一个完整的Ctrl吗?
当键是修饰符时,将一个键分配给另一个键是唯一的。这个答案有很好的解释:
当该操作是这样的修饰符操作时,它会更改当前修饰符状态,(简单地说)它是操作系统中记录的一组标志,用于记录当前“打开”的修饰符。[此记录] 影响进一步按键映射到的操作。
因此,当您尝试映射按键时,它会被映射为常规按键,并会丢失指定按下多个按键时其行为方式的信息。
为了演示,运行xmodmap
. 请注意,有两个默认键(Control_L 和 Control_R)映射到控制修饰符。如果您运行xmodmap -e 'keycode 131 = Control_L'
然后xmodmap
,控制修饰符应该仍然有两个键,因此您的键不会被识别为修饰符。
映射为修饰符:
清除修改键control
xmodmap -e 'clear control'
Run Code Online (Sandbox Code Playgroud)
添加汉字键的键码
xmodmap -e 'keycode 131 = Control_L'
Run Code Online (Sandbox Code Playgroud)
最后,添加回默认修饰符:
xmodmap -e 'add control = Control_L'
xmodmap -e 'add control = Control_R'
Run Code Online (Sandbox Code Playgroud)
现在,如果您再次运行 xmodmap,您会注意到已为修饰符控件添加了一个新键,并且它现在应该可以正常工作。
以下是关于将修饰符重新分配给键盘上的按键的官方 Arch Linux 说明的链接。
编辑:
对于持久性更改,请添加到/usr/share/X11/xkb/symbols/pl
:
key <HJCV> { [ Control_L ] };
modifier_map Control { Control_L, Control_R, <HJCV> };
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
287 次 |
最近记录: |