如何将未充分利用的键盘键更改为修饰键

如何将未充分利用的键盘键更改为修饰键

我有一个韩语键盘,如下所示:

在此输入图像描述

汉字 ( 한자) 位于 的左侧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 修饰符处理有点特殊。您不能采用任何键并将其声明为修饰符:修饰符设置和键符号设置之间的某些内容必须保持一致。

经典的修饰符是ShiftControlAltMeta和(各有两个键符号,例如和)(加上 Caps Lock 和 Num Lock Hyper,它们的行为略有不同)。大多数应用程序无法与用作修饰符的其他键符号一起使用。SuperShift_LShift_R

因此,要使用汉字键作为修饰符,请使其成为Hyper_L(例如)。

keycode 131 = Hyper_L
remove Mod4 = Hyper_L
add Mod3 = Hyper_L

这使得该键根本不再用作汉字键。如果您使用 XKB 而不是 xmodmap,可能有办法保留这两个功能,但我不知道如何。

相关内容