【问题标题】:Linux keyboard config (xkb) for three Shift keys三个 Shift 键的 Linux 键盘配置 (xkb)
【发布时间】:2017-01-07 19:53:01
【问题描述】:

我正在寻找一种方法来为给定的键扫描代码定义一个额外的 Shift 键。所以我最终会得到不变的左右 shift,加上一个额外的 shift 键,可以在任何现有键上定义(假设我知道它的扫描码)。

在 xkb/keycodes 中,我看到 shift 键码定义为:

<LFSH>
<RTSH>

但如果我要在这里添加第三个条目,我不知道我会告诉 xkb 它也被视为 Shift 键。

(这与问题无关,但如果您想知道,用例适用于某些具有拆分 空格键 的键盘,我想在其中设置 之一空格键一半是额外的Shift)。

对此我需要什么 xkb 配置感兴趣?

【问题讨论】:

    标签: linux keyboard shift


    【解决方案1】:

    也许您可以使用 xmodmap 执行此操作,如果您将键码重命名为键符号 Shift_L,然后将 Shift_L 添加回 进入修改器贴图。例如键码 110:

    xmodmap -e 'keycode 110 = Shift_L Shift_L Shift_L Shift_L'
    xmodmap -e 'add shift = Shift_L Shift_R'
    

    通过查看xmodmap -pke 或使用xev 或类似方法查找键码。

    【讨论】:

    • 是的,这行得通。如果这一切都可以在 xkb 中完成会很好,但这仍然是一个可以接受的解决方案。我会注意到,让它为我工作只需要第一行;第二行似乎没有额外的效果。
    • @Steve 很高兴知道。我不完全清楚 xmodmap 如何与 xkb 交互,所以这是另一个有趣的 sn-p 信息。
    【解决方案2】:

    我现在找到了一种方法,可以直接在xkb配置中实现上面的,不需要使用xmodmap。

    第一步:在 xkb/symbols/pc 文件中,请注意已定义以下内容:

    key <LFSH> {    [ Shift_L       ]   };
    key <RTSH> {    [ Shift_R       ]   };
    

    那么,为 MDSH 添加新的键定义(即“中班”)需要什么:

    key <MDSH> {    [ Shift_L       ]   };
    

    第二步:将这些键分配给键码。在 xkb/keycodes/evdev 中已经定义了左移和右移:

    <LFSH> = 50;
    <RTSH> = 62;
    

    剩下的就是为 MDSH 添加一个额外的定义:

    <MDSH> = XXX;
    

    其中 XXX 是您要分配的键码。

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多