使上/下箭头、Pos1、End、Del ... 更简单

Posted

技术标签:

【中文标题】使上/下箭头、Pos1、End、Del ... 更简单【英文标题】:Make arrow-up/down, Pos1, End, Del ... more easy 【发布时间】:2022-01-17 07:17:55 【问题描述】:

我用十根手指在“F”和“J”上打字。

通过这种方式,我可以使用 QWERTZ 布局快速轻松地键入字母表。

但许多其他键很难触及。例如:

Pos1、End、Del、Arrow-Up/Down、Page-Up/Down、ESC、Backspace。

有没有办法让这些键可用,同时将指针保持在“F”和“J”上?

我对“A”到“Z”很满意,不想切换到不同的布局(例如Colemak)

也许通过使 CapsLock 成为一个新的修饰符,以便(例如)CapsLock-u 是向上箭头而 CapsLock-n 是向下箭头?

我使用 Ubuntu Linux。

我创建了一个后续问题:Hype-key u --> Like PageUp

【问题讨论】:

评论这个,因为它是远程相关的——你可以使用 vim 式的快捷方式,以便只使用字符键进行导航。有许多插件可用于许多程序,包括 chrome 和 vscode,可以模仿这种行为。 @LiorPollak 你说“有许多插件可用于许多程序”。我想在桌面级解决这个问题,而不是对每个程序一次又一次地解决。 @UnKNOWn 谢谢你的回答。你的评论还有意义吗? @UnKNOWn 第三级。这不是 AltGr 吗?在 gnome-tweaks 中,我找到了一种将 CapsLock 设置为 Hyper-key 的方法。现在我需要一种方法来配置 hyper-u、hyper-n ... 使其表现得像 up/down .... 【参考方案1】:

来自arch wiki link,我按照步骤成功使用了“Arch Linux”和“Ubuntu 20.04”操作系统,同时保持 Caps Lock 键 + u、h、j、n 等键。此方法允许使用链接中提到的 Shift+Caps+h 键突出显示文本。

在继续之前,请阅读Precautions & Preparations link

第一步

编辑文件/usr/share/X11/xkb/types/complete Ubuntu 20.04 中的原创内容

default xkb_types "complete" 
    include "basic"
    include "mousekeys"
    include "pc"
    include "iso9995"
    include "level5"
    include "extra"
    include "numpad"
;

修改后

default xkb_types "complete" 
    include "basic"
    include "mousekeys"
    include "pc"
    include "iso9995"
    include "level5"
    include "extra"
    include "numpad"
    
       type "CUST_CAPSLOCK" 
       modifiers= Shift+Lock; 
       map[Shift] = Level2;            //maps shift and no Lock. Shift+Alt goes here, too, because Alt isn't in modifiers.
       map[Lock] = Level3;
       map[Shift+Lock] = Level3;       //maps shift and Lock. Shift+Lock+Alt goes here, too.
       level_name[Level1]= "Base";
       level_name[Level2]= "Shift";
       level_name[Level3]= "Lock";
   ;
;

第 2 步

编辑文件/usr/share/X11/xkb/compat/complete

修改后

default xkb_compatibility "complete" 
    include "basic"
    augment "iso9995"
    augment "mousekeys"
    augment "accessx(full)"
    augment "misc"
    augment "xfree86"
    augment "level5"
    augment "caps(caps_lock)"
    
       interpret Caps_Lock+AnyOfOrNone(all) 
       action= SetMods(modifiers=Lock);
   ;
;

第 3 步

使用您的实际符号文件编辑文件/usr/share/X11/xkb/symbols/us #change us

部分编辑内容

    key <AC05>     [     g,    G       ]   ;
//  key <AC06>     [     h,    H       ]   ;
    key <AC06> 
       type= "CUST_CAPSLOCK",
       symbols[Group1]= [               h,               H,               Left],
       actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<LEFT>, clearmods=Lock) ]
  ;
    key <AC07>     [     j,    J       ]   ;
    key <AC08>     [     k,    K       ]   ;

同样,根据您的要求编辑符号文件。 关键符号可以通过

xev | grep keysym 命令

$ xev | grep keysym
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    state 0x0, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    state 0x0, keycode 112 (keysym 0xff55, Prior), same_screen YES,
    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    state 0x0, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    state 0x0, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    state 0x0, keycode 115 (keysym 0xff57, End), same_screen YES,
    state 0x0, keycode 115 (keysym 0xff57, End), same_screen YES,
$ 

第 4 步 运行以下命令以立即应用更改

sudo udevadm trigger --subsystem-match=input --action=change

以上命令来源为https://askubuntu.com/a/1075707/739431

【讨论】:

有没有更简单的方法可以在不注销+登录的情况下激活这些文件的更改? @guetti 这个命令似乎在没有“注销和登录”sudo udevadm trigger --subsystem-match=input --action=change 的情况下工作 我的首选解决方案是不修改系统文件。也许可以将 capsLock 设置为超级键(通过 gnome-tweaks),然后修改 .xmodmaprc? @Unkown:我创建了一个后续问题:askubuntu.com/questions/1382762/hype-key-u-like-pageup @guettli 您可以在不编辑原始文件的情况下使用此解决方案(来自 UnKNOWn 的回答),而是创建自己的新继承布局。我已经尝试过继承 XKB 符号,如我在这里的回答 askubuntu.com/q/482678/26246 或来自其他人的 askubuntu.com/q/510024/26246 。对于 XKB 类型,我希望采用相同的方式,结构在前面的链接中进行了解释。这样,你甚至可以将新的布局打包,复制到其他机器上。【参考方案2】:

为了解决这类问题,一些键盘布局包括了除 shift/capslock 和常规修饰键之外的额外层。 Neo 就是一个例子(wikipedia;docs (in german);docs (google translated))。

Neo 提供 6 层,您愿意的移动键层是第四层。 (图层为 1-小写、2-大写、3-特殊字符、4-移动+数字、5-希腊字符(用于公式);6-数学符号+希腊大写。

就像 shift 所发生的那样,将您从第 1 层带到第 2 层(从小写到大写的常规文本),一次击键到 M4 键(显示在图片,好像相当于qwertz的alt-gr)带你到第四层。

Neo 的第四层:

(图片来自官网)

可能会看到 up-down 例如不像 vim,它们比其他普通键盘高出一个。

neo第四层的运动关键位置:

movement key
home a
end g
del r
up e
down d
pgUp q
pgDown t
ESC z
backspace w

前两层针对德语进行了优化。但是由于您仍然想保留 qwertz 布局,因此有一个变体,称为 neoquertz,其中第 1 层和第 2 层将分别是常规的 qwertz 小写和大写。这样一来,您就会有宾至如归的感觉。

根据他们的文档,它们已经包含在主要操作系统中,包括 Linux (install instrutions)(它作为键盘变体安装),但我不保证它们可以开箱即用。 - 在我的情况下(ubuntu/xfce),不需要apt 或安装任何东西,我只需要设置配置。当遵循他们的指示时,与所说的不同,它仅在重置后并且仅在登录屏幕中,在登录 qwerty 回来后才起作用,因此需要进行更多调整。 localectl list-x11-keymap-variants 仅列出 neo 而不是 neo_quartz。与 tty1-6 相比,图形登录的键盘行为略有不同。请注意不要使用 neo 代替 neo_quertz,否则您将无法在不知道位置位置的布局中输入用户名和密码。并且不要忘记: shift 与其他键类型一起使用大写,而 capslock 与其他键类型一起使用 layer3 符号(如果您的密码中有符号,则需要知道这一点)。

【讨论】:

感谢您的回答。不幸的是,我只看到“neo-querty”而不是“neo-quertz”。 我的情况正好相反。有点需要摆脱neo-quertz。在我的情况下,localectl list-x11-keymap-variants 仅显示neo,但neo-quertz 以某种方式被接受,因为只是locatectl 显示neo_qwertz,并且至少在我注销时它充当neoqwertz。但它是 ubuntu 21.4 和 xfce。所以,事情可能会有所不同。【参考方案3】:

您可以编辑自己的键盘映射,方法是从/usr/share/X11/xkb/symbols 中的现有映射编辑或创建新符号映射

您可以使用以下命令获取键盘上每个键的当前值:

xev | grep keysym

这里是每个硬件键盘键的地址映射

良好的键盘输入!

【讨论】:

不错的答案,但它并不能说明如何做到这一点。 @vanadium 我的回答可能不完整,但它提供了一些关于如何深入研究问题的见解。我的答案也在上面使用了另一个。因为你不喜欢我的回答,有必要否决我吗? 我很少投反对票,但我认为您的回答几乎没有提供任何关于事情如何运作的见解,也几乎没有提供关于如何解决问题的线索。 “编辑或创建新的符号图”:我认为 OP 无需您的回答也能说明这一点。

以上是关于使上/下箭头、Pos1、End、Del ... 更简单的主要内容,如果未能解决你的问题,请参考以下文章

如何让数字键盘箭头在 Linux 上与 Java 应用程序一起使用

css在灰色透明的背景下,如何才能使上面的字的颜色为白色?

SecureCRT的Home+End+Del键映射

mac的Home键、End键、Page UP键和Page DOWN键

mac的Home键、End键

将 Slick 轮播水平箭头更改为带有字体真棒箭头的向上和向下箭头