我试图让我的键盘更有用,并用于xmodmap
将数学和希腊符号映射到mod3
修饰符级别。大写锁定映射到mod3
. 据我了解,8 行.Xmodmap
工作如下:
[无], [shift], [mod3], [mod3+shift], [altgr], [altgr+shift], [altgr+mod3], [altgr+shift+mod3]
我使用了这个,并且大部分都有效。除了一些奇怪的现象。例如:
keycode 49 = backslash bar includes includedin infinity infinity EuroSign EuroSign
Run Code Online (Sandbox Code Playgroud)
这很好地产生了前四个条目,但随后它会循环(altgr+key=backshlash,而不是无穷大)。但是,如果我这样做
keycode 10 = backslash bar includes includedin infinity infinity EuroSign EuroSign
Run Code Online (Sandbox Code Playgroud)
它产生前四个条目和无穷大,但没有显示欧元符号(我得到了includes
,includedin
而是)。请注意,我只是使用了不同的密钥,其他一切都相同!即使只有 6 个条目(以防 8 个出现解析问题),该特定键上也不会显示无穷大。
此外,我将希腊字母映射到第 3 和第 4 个条目(mod3 和 mod3+shift)。小写字母工作正常,但大写字母不适用于 Shift+mod3+S 和 Shift+mod3+W 和 Shift+mod3+X。这不是字体问题,当我使用这些组合时xev
不显示任何事件。
条目是
keycode 39 = s S Greek_sigma Greek_SIGMA integral integral downarrow downarrow
Run Code Online (Sandbox Code Playgroud)
此外,最后两个条目大多不起作用。
更糟糕的是,一行变得特别混乱。我进入了
keycode 51 = zcaron Zcaron zcaron Zcaron dstroke Dstroke dstroke Dstroke
Run Code Online (Sandbox Code Playgroud)
但是当我这样做的时候xmodmap -pke
我得到
keycode 51 = zcaron Zcaron zcaron Zcaron dstroke Dstroke dstroke Dstroke zcaron Zcaron dstroke Dstroke zcaron Zcaron dstroke Dstroke
Run Code Online (Sandbox Code Playgroud)
请注意,它复制了所有条目。有几个键可以做到这一点,但不是全部!
所以,我的问题是:
请注意,我处于一种独特的情况,在这种情况下,根本不可能有任何我不知道的未知快捷方式,因为我的窗口管理器是我自己制作的,并且我可以控制所有这些快捷方式。
更多细节:大写锁定的映射是这样完成的:
keycode 66 = Mode_switch
clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5
add control = Control_L Control_R
add mod1 = Alt_L Meta_L
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Hyper_L
add mod5 = ISO_Level3_Shift
Run Code Online (Sandbox Code Playgroud)
该系统是一个新更新的arch linux。
编辑:我发现问题的一小部分(根本不起作用的 SWX)是由于键盘上的键相邻(键卡住,无法处理此组合中的 3 个同时按下的键) . 右移消除了 W 和 X 的问题,而不是 S(在这个特定的键盘上)。
其余的仍然是个谜,尤其是键代码 49 的第 5 和第 6 个损坏的条目(选项卡上方完全无用的东西)。
ori*_*ion 10
我最好回答我自己的问题以供将来参考。
经过一些深入的研究,我发现它xmodmap
实际上已被弃用,并且大致修补了xkb
键盘模型。该xkb
模型不使用替代的线性数组,而是将布局拆分为groups
,每个组有几个不同班次级别的字符。该xmodmap
定义填充条目一个非常有趣的顺序:组1,1,2级,第2组,1,2-水平,组1,级别3 ....的基团意思是像“布局”,并且不通常使用修饰符访问但使用切换。例外是Mode_switch
我使用的字符,但它只能访问组 2。
一切都很好,除了键有类型。每个键由布局定义为TWO_LEVEL
,FOUR_LEVEL
,FOUR_LEVEL_ALPHANUMERIC
等等,并且每个级别可以具有不同的概念,其中改性剂映射到哪个水平。我假设的行为(8 个级别,所有组合)实际上LOCAL_EIGHT_LEVEL
根本没有被布局使用。因此,在 keycode 的情况下51
,默认值实际上是TWO_LEVEL
,并xmodmap
用 6 个键填充 3 个组,而不是将 6 个级别添加到第 1 个组。Mode_switch
修改器未达到第三组。使用另一个键会导致不同的行为,因为预定义的类型不同。
与打印输出中的重复 by 一样xmodmap
,我不确定到底发生了什么(我打印了xkb
定义并且一切正常),但是当您从可变长度多维数组映射到单个数组时出现错误,我并不感到惊讶符号代码列表。无论如何,输出并不反映实际状态。
总之,xmodmap 是邪恶的。永远不要使用它。它的行为充其量是不稳定和不明确的。它没有做它所说的。制作自己的xkb
地图。通过include
-ing重用大部分布局并添加您需要的修改。
就我而言,解决方案是从希腊布局中导出第二组并在重要位置替换数学符号,并在第一组中进行一些修改。
大多数便宜的键盘在一次按下 3 个键时非常有限。这导致某些密钥出现不稳定且依赖于硬件的故障。我将尝试使用不同的修饰键(世界上最无用的键 - 菜单键,或类似无用的右键 Win 键),并可能购买更好的键盘。这两个问题的组合(被设计损坏的硬件 + 邪恶的欺骗性软件)造成了一种令人困惑的随机情况,起初让我无法将它们视为单独的问题。
阅读材料:
归档时间: |
|
查看次数: |
1404 次 |
最近记录: |