Tom*_*mas 9 keyboard keyboard-shortcuts keyboard-layout xmodmap keymap
我正在考虑购买 60% 的键盘,并希望在购买实际键盘之前尝试使用该布局。
我正在尝试将箭头键映射到大写锁定 + ijkl 并禁用真正的箭头键。我已经找到了如何重新映射它,但是当我尝试禁用真正的箭头键时,重新映射的箭头键会中断。这是一张工作地图:
keycode 66 = Mode_switch
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right
Run Code Online (Sandbox Code Playgroud)
要禁用向上箭头,我添加
keycode 111 =
Run Code Online (Sandbox Code Playgroud)
一旦我这样做了,ijkl 不再作为字符工作,但即使不按修饰符(大写锁定)也可以作为箭头。如何在不破坏我以前的映射的情况下禁用箭头键?
在阅读并获得一些信息后。问题似乎在于您必须在实际进行重新映射之前删除修改器。
给答案:
更改设置后我的xmodmap样子:
xmodmap:每个修饰符最多 4 个键(括号中的键码):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Alt_L (0xcc), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Mode_switch (0x42), Mode_switch (0xcb)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce)
mod5
Run Code Online (Sandbox Code Playgroud)
调查使我们得出已成功映射的Mode_switch结论:Caps_Lock
[smalltalk@localhost ~]$ xmodmap -pke | egrep -e '(Mode_switch)'
keycode 66 = Mode_switch NoSymbol Mode_switch
keycode 203 = Mode_switch NoSymbol Mode_switch
Run Code Online (Sandbox Code Playgroud)
现在 xmodmap 手册页的摘录:
Run Code Online (Sandbox Code Playgroud)keycode NUMBER = KEYSYMNAME ... The list of keysyms is assigned to the indicated keycode (which may be specified in decimal, hex or octal and can be determined by running the xev program). Up to eight keysyms may be attached to a key, however the last four are not used in any major X server implementation. The first keysym is used when no modifier key is pressed in conjunction with this key, the second with Shift, the third when the Mode_switch key is used with this key and the fourth when both the Mode_switch and Shift keys are used.
以下配置有效,但在使用 i、j、k、l 时必须按住 Caps_Lock(与手册页中所写的完全相同):
编辑vim ~/.Xmodmap:
! make Capslock the "Mode_switch" key
clear Lock
! All Mod must be cleared
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
! clearning current Caps_Lock assigment and assigning it new one
keycode 66 =
keycode 66 = Mode_switch
! setting all the modification keys
add Mod1 = Alt_L Alt_R Meta_L
add Mod2 = Num_Lock
add Mod3 = Mode_switch
add Mod4 = Super_L Super_R Hyper_R
! Clear must be done before configuring it
keycode 31 =
keycode 44 =
keycode 45 =
keycode 46 =
! Configuration (first column normal type, second with shift and second with Mod_switch)
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right
! Clearing the arrow keys and some functional keys like home
keycode 111 =
keycode 113 =
keycode 114 =
keycode 116 =
keycode 112 =
keycode 117 =
Run Code Online (Sandbox Code Playgroud)
现在问一个大问题:
如何在 Caps_Lock 打开时使 i、j、k、l 键起作用?您可能需要对 进行更改xkb,我必须考虑一下。
编辑
注意:这适用于所有键盘、所有布局,因此有利于测试。如果你想xkb正确地做到这一点,你必须创建自己的布局并让 group1 和 group2 + 进行映射。
以下是测试键盘的理想方法(不要忘记备份文件../basic!):
警告这适用于所有键盘、所有变体。
编辑文件: sudo vim /usr/share/X11/xkb/compat/basic
# Add Caps_Lock to virtual modifiers
virtual_modifiers NumLock,AltGr,Caps_Lock;
# change FROM:
interpret Mode_switch {
useModMapMods= level1;
virtualModifier= AltGr;
action= SetGroup(group=+1);
};
# TO:
interpret Mode_switch {
useModMapMods= level1;
virtualModifier= Caps_Lock;
action= LockGroup(group=+1);
};
# change from
group 2 = AltGr;
TO:
group 2 = Caps_Lock;
Run Code Online (Sandbox Code Playgroud)
注意:如果您有多个布局,它可能会干扰这些布局。
小智 1
很抱歉写了答案而不是发表评论,但我对此仍然没有足够的声誉。我知道这不能回答你的问题,但它可以解决你的问题。
您可能想要购买本身支持重新映射按键的键盘,而不是重新映射操作系统上的按键。尤其是QMK固件支持的键盘。您可以在此处找到所有兼容键盘的列表。
使用此固件,您可以将任何键映射到任何操作,包括添加多个层,其中每个键可以执行不同的操作。想象一下,它就像按笔记本电脑上的 fn 键,只不过它是完全可定制的。您可以选择哪个键激活哪个层,甚至如何激活。例如,您可以让它打开/关闭图层,在按住按键时保持其活动状态等。这样,您可以Caps Lock在点击Caps Lock时切换到另一层(其中ijkl按键是箭头键)。
唯一的缺点是重新映射需要您在 C 代码中编辑数组,尽管它实际上非常简单并且不需要事先的编程知识。该文档非常广泛,解释了入门所需的一切。
60% 的键盘有多种选择,但大多数都是您必须自己组装的套件。如果您对此没有问题,请检查 GH60、Satan 或 XD60 板。如果您不想自己组装,您可以查看Whitefox键盘,或者看看是否可以在KBDFans 商店找到一些东西,因为他们为大多数套件提供组装服务。
| 归档时间: |
|
| 查看次数: |
5056 次 |
| 最近记录: |