与许多小型机器一样,我的笔记本电脑的键盘缺少专用的数字键盘。
我通常可以不看键盘打字,但我无法用数字行盲打数字。这就是为什么我想把键盘左侧改成二级数字键盘(例如Z= 0、X= 1. C= 2、V= 3、S=4等等)。
另一个优点是可以快速输入数字,而无需将右手从鼠标上移开或将左手移过整个键盘。
现在我正在寻找一种方法来重新映射这些键以“创建”数字键盘,最好独立于桌面环境,因为我经常使用多个数字键盘。此外,如果该映射是可移植的,那就太棒了,这样我就可以设置一次并为不同的键盘/机器启用它。
我知道可以在里面直接修改键盘映射/usr/share/X11/xkb/symbols/
,但是它们只允许三个修饰符(Shift,AltGr(在欧洲键盘上)和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)"
};