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

Pro*_*700 5 keyboard shortcut-keys xmodmap remapping xkb

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

我通常可以在不看键盘的情况下输入,但我无法在数字行中盲目输入数字。这就是为什么我想到将键盘的左侧转换为二级小键盘(例如Z= 0X= 1. C= 2V= 3S=4等等)。

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

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

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

我想过使用+Super_LShift_L+的组合Alt作为修饰键来访问小键盘层,因为这些组合不应该被使用,而且很容易用一只手触及。

这怎么可能实现?

小智 1

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

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

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


Kat*_*atu 1

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

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

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

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

sudo gedit /usr/share/X11/xkb/rules/evdev.xml
Run Code Online (Sandbox Code Playgroud)

</layoutlist>添加此文本之前

<layout>
  <configItem>
    <name>aa</name>
    <shortDescription>Prototype700</shortDescription>
    <description>Prototype700</description>
    <languageList>
      <iso639Id>eng</iso639Id>
    </languageList>
  </configItem>
  <variantList/>
Run Code Online (Sandbox Code Playgroud)

并选择该语言作为默认语言。下面是我使用的,基于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)"
};
Run Code Online (Sandbox Code Playgroud)

如果您使用 Windows 机器,Autohotkey是您的朋友。您可能知道这一点,因为您熟悉Autokey