我有一个韩语键盘,如下所示:
汉字 ( 한자) 位于 的左侧space,即使在输入韩语时也很少使用,但对于我的左手拇指来说,它是最重要的房地产。i3 窗口管理器 mod 键。这将释放出来Alt供我的代码编辑器使用。
我的问题是:如何将汉字键变成修饰键?
我用以下方法验证了密钥xev
:
KeyPress event, serial 32, synthetic NO, window 0x2200001,
root 0x281, subw 0x0, time 11955968, (-132,626), root:(491,646),
state 0x0, keycode 131 (keysym 0xff34, Hangul_Hanja), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 32, synthetic NO, window 0x2200001,
root 0x281, subw 0x0, time 11955968, (-132,626), root:(491,646),
state 0x20, keycode 131 (keysym 0xff34, Hangul_Hanja), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
键码 131 = 0x83
从 的输出中xmodmap
,我看到这mod3
是可用的。
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
我尝试xmodmap -e "add mod3 = Hangul_Hanja"
得到以下结果...
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Hangul_Hanja (0x83)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
...添加set $mod Mod3
到我的 i3 配置文件并重新启动后,我最终没有任何修饰键,即它不起作用。
此外,汉字键的行为与典型的修饰键不同。如果我按住该键,它会产生重复的击键,而典型的修饰键则不会。
我希望家里有一些键盘专家可以提供一些他们的专业知识。
Linux Mint 18 (Cinnamon) i3 窗口管理器
答案1
X11 修饰符处理有点特殊。您不能采用任何键并将其声明为修饰符:修饰符设置和键符号设置之间的某些内容必须保持一致。
经典的修饰符是Shift
、Control
、Alt
、Meta
和(各有两个键符号,例如和)(加上 Caps Lock 和 Num Lock Hyper
,它们的行为略有不同)。大多数应用程序无法与用作修饰符的其他键符号一起使用。Super
Shift_L
Shift_R
因此,要使用汉字键作为修饰符,请使其成为Hyper_L
(例如)。
keycode 131 = Hyper_L
remove Mod4 = Hyper_L
add Mod3 = Hyper_L
这使得该键根本不再用作汉字键。如果您使用 XKB 而不是 xmodmap,可能有办法保留这两个功能,但我不知道如何。