如何重新映射我的键盘以创建左手数字键盘?

如何重新映射我的键盘以创建左手数字键盘?

与许多小型机器一样,我的笔记本电脑的键盘缺少专用的数字键盘。

我通常可以不看键盘打字,但我无法用数字行盲打数字。这就是为什么我想把键盘左侧改成二级数字键盘(例如Z= 0X= 1. C= 2V= 3S=4等等)。

另一个优点是可以快速输入数字,而无需将右手从鼠标上移开或将左手移过整个键盘。

现在我正在寻找一种方法来重新映射这些键以“创建”数字键盘,最好独立于桌面环境,因为我经常使用多个数字键盘。此外,如果该映射是可移植的,那就太棒了,这样我就可以设置一次并为不同的键盘/机器启用它。

我知道可以在里面直接修改键盘映射/usr/share/X11/xkb/symbols/,但是它们只允许三个修饰符(ShiftAltGr(在欧洲键盘上)和Shift+ AltGr),并且它们通常用在字母键上或需要双手才能激活。

我想到使用 +或+Super_L的组合作为修饰键来访问数字键盘层,因为这些组合不应该被使用并且很容易用一只手够到。Shift_LAlt

如何实现这一点?

答案1

我喜欢使用 QMK 等软件的自定义键盘,它允许重新定义每个键并允许诸如层之类的高级行为。我最近遇到了 Kmonad,它是一种允许大多数相同功能的软件工具。我自己还没有尝试过,但这应该允许您按住或切换某个键以激活一个层,您可以在该层上将数字映射到键盘的左侧。

这是 github 的链接; https://github.com/david-janssen/kmonad

我认为 Kmonad 也包含在许多最近的发行版中,因此它可能已经在 APT 中可用。

答案2

您已经提到您可以编辑/usr/share/X11/xkb/symbols/,我认为这是最便携的选项,并且对我来说在许多 Linux 发行版中都有效,无需安装任何东西。我在 Android Studio 中发现了一些问题,但数字键盘没有问题。大多数软件(包括浏览器和 DuckDuckGo)都按预期运行。

如果您愿意再试一次,我会用Alt Gr右手按数字键盘。我用左手按其他键,例如,,Home... ,这些对我来说比数字键盘更有用。Enddel

/usr/share/X11/xkb/symbols/aa创建一种新语言,并根据您通常使用的语言创建一个文件。

在文件中/usr/share/X11/xkb/rules/evdev.xml

sudo gedit /usr/share/X11/xkb/rules/evdev.xml

</layoutlist>在添加此文本之前

<layout>
  <configItem>
    <name>aa</name>
    <shortDescription>Prototype700</shortDescription>
    <description>Prototype700</description>
    <languageList>
      <iso639Id>eng</iso639Id>
    </languageList>
  </configItem>
  <variantList/>

并选择该语言作为默认语言。下面是我使用的语言,基于xkb/symbols/gb

// based on a keyboard map from an 'xkb/symbols/gb' file

default  partial alphanumeric_keys
xkb_symbols "Prototype700" {

    // Describes the differences between a very simple en_US
    // keyboard and a very simple U.K. keyboard layout defined by
    // Prototype700

    include "latin"

    name[Group1]="English (UK)";

    key <AE02>  { [         2,   quotedbl,  twosuperior,    oneeighth ] };
    key <AE03>  { [         3,   sterling, threesuperior,    sterling ] };
    key <AE04>  { [         4,     dollar,     EuroSign,   onequarter ] };

    key <AC11>  { [apostrophe,         at, dead_circumflex, dead_caron] };
    key <TLDE>  { [     grave,    notsign,          bar,          bar ] };

    key <BKSL>  { [numbersign, asciitilde,   dead_grave,   dead_breve ] };
    key <LSGT>  { [ backslash,        bar,          bar,    brokenbar ] };

    key <AD01> {    [     q,    Q,    Escape,       Adiaeresis ]    };
    key <AD02> {    [     w,    W,    Delete,            Aring ]    };
    key <AD03> {    [     e,    E,    Up,           Eacute ]    };
    key <AD04> {    [     r,    R,    Prior,       registered ] };
    key <AD05> {    [     t,    T,    Prior,            THORN ] };
    key <AD06> {    [     y,    Y       ]   };
    key <AD07> {    [     u,    U,    7,           Uacute ] };
    key <AD08> {    [     i,    I,    8,           Iacute ] };
    key <AD09> {    [     o,    O,    9,           Oacute ] };
    key <AD10> {    [     p,    P       ]   };
    key <AD11> {    [ bracketleft,  braceleft   ]   };
    key <AD12> {    [ bracketright, braceright  ]   };

    key <AC01> {    [     a,    A,    Home,           Aacute ]  };
    key <AC02> {    [     s,    S,    Left,          section ]  };
    key <AC03> {    [     d,    D,    Down,              ETH ]  };
    key <AC04> {    [     f,    F,    Right,                F ] };
    key <AC05> {    [     g,    G,    End,                G ]   };
    key <AC06> {    [     h,    H       ]   };
    key <AC07> {    [     j,    J,    4,                J ] };
    key <AC08> {    [     k,    K,    5,               OE ] };
    key <AC09> {    [     l,    L,    6,         Ooblique ] };
    key <AC10> {    [ semicolon,    colon,     ntilde,           Ntilde ]   };
    key <AC11> {    [ apostrophe,   quotedbl,  dead_acute, dead_diaeresis   ]   };

    key <AB01> {    [     z,    Z,    BackSpace,               AE ] };
    key <AB02> {    [     x,    X,    Insert,                X ]    };
    key <AB03> {    [     c,    C       ]   };
    key <AB04> {    [     v,    V,    Next,                V ]  };
    key <AB05> {    [     b,    B,    Next,                B ]  };
    key <AB06> {    [     n,    N,    0,           Ntilde ] };
    key <AB07> {    [     m,    M,    1,               mu ] };
    key <AB08> {    [     comma,    less, 2,           less ]   };
    key <AB09> {    [    period,    greater, 3,     greater ]   };
    key <AB10> {    [     slash,    question    ]   };

    include "level3(ralt_switch_multikey)"
};

如果你使用 Windows 机器,自动热键是你的朋友。你可能知道,因为你熟悉自动键

相关内容