1. 如何全局映射Caps Lock到AltGr?
我不需要 CapsLock,而是希望有一个方便使用的 AltGr 键
2. 我想将所有移动键映射到vim
类似位置
- AltGr+ F=Backspace
- AltGr+ H=LeftArr
- AltGr+ J=DownArr
- AltGr+ L=RightArr
- AltGr+ K=UpArr
- AltGr+ U=PgUp
- AltGr+ D=PgDown
- AltGr+ S=Enter
- AltGr+ 3=Pos1
- AltGr+ $=End
- AltGr+ X=Del
因此我可以轻松浏览我的代码,而无需将手从 10 指位置移开(就像在vim
编辑器中一样)
我找到了这个答案:如何将大写锁定键重新映射到退格键?
建议使用
xmodmap -e "keycode [code] = [new key]"
看:http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap
但我不知道如何将其添加到例如 AltGr+J 的组合中
另一个开始是将unity-control-center
“键盘”->“快捷方式”->“键入”中的“替代字符键”设置为Caps Lock
更新:
我找到了一些解决方案(见下文),但它们并不适用于所有应用程序,我猜测这是某些应用程序使用的名为“XFree 4”的全局设置。
1. 我该如何设置 XFree 4 的键绑定?
2. 如何使更改升级并保存?
答案1
1. 添加新的XKB部分文件
sudo vi /usr/share/X11/xkb/symbols/altgr_vim
内容如下:
partial keypad_keys
xkb_symbols "altgr-vim" {
# replace Caps with AltGr
key <CAPS> { [ ISO_Level3_Shift ] };
# Add vim cursor keys to be accessed with AltGr (and some useful keys to AltGr+Shift)
key <AB02> { [ x, X, Delete, U203A ] };
key <AC01> { [ a, A, Escape, apostrophe ] };
key <AC02> { [ s, S, KP_Enter, braceleft ] };
key <AC03> { [ d, D, Next, braceright ] };
key <AC04> { [ f, F, BackSpace, dollar ] };
key <AC06> { [ h, H, Left, grave ] };
key <AC07> { [ j, J, Down, ampersand ] };
key <AC08> { [ k, K, Up, backslash ] };
key <AC09> { [ l, L, Right, multiply ] };
key <AD07> { [ u, U, Prior, infinity ] };
key <AE03> { [ 3, section, Home, threesuperior ] };
key <AE04> { [ 4, dollar, End, foursuperior ] };
};
2. 将部分内容包含在你的语言文件中
例如对于德语/usr/share/X11/xkb/symbols/de
(/de
你的语言是哪里)在第一个块内添加以下内容(xkb_symbols "basic"
):
include "altgr_vim(altgr-vim)"
笔记:每次发行版更新后都必须重复此部分
3.重新加载窗口会话
按 ALT+F2,输入“r”重新加载 gnome 会话或直接注销并重新登录。现在新的按键组合将可用
4.解决一些问题
有些应用程序不接受这些设置,例如:
sublime
可以用 替换atom
。某些应用程序需要额外的设置,例如在
yakuake
键绑定设置为“XFree 4”时,如果将它们设置为“Linux”或“Solaris”,那么 XKB 设置也会在那里起作用:
尚存问题:
- 有些应用仍然不接受这些设置
- 升级后,符号文件已更新,您必须重复步骤 2
答案2
好的,我决定将@rubo77的答案改编为易于使用的,可切换选项。
installer
脚本:
#! /bin/bash
# Automatic sudo-ing followed by setting the option right away,
# so you can just run it as the normal user for convenience.
[[ "$UID" == 0 ]] || {
sudo "$0"
setxkbmap -option MyOptions:altgr_vim
exit
}
# Install actual symbols file (see below).
install -o root -g root -m 644 MyOptions /usr/share/X11/xkb/symbols/
# Patch xkb config to add the symbols file as a config option.
echo -e "MyOptions:altgr_vim\t=\t+MyOptions(altgr_vim)" >> /usr/share/X11/xkb/rules/evdev
echo "MyOptions My own options" >> /usr/share/X11/xkb/rules/evdev.lst
echo "MyOptions:altgr_vim Caps Lock as AltGr and Arrows like in vim" >> /usr/share/X11/xkb/rules/evdev.lst
patch /usr/share/X11/xkb/rules/evdev.xml <<EOF
@@ -7687,5 +7687,23 @@
</configItem>
</option>
</group>
+ <group allowMultipleSelection="true">
+ <configItem>
+ <name>MyOptions</name>
+ <description></description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>MyOptions:altgr_vim</name>
+ <description>Caps Lock as AltGr and Arrows like in vim</description>
+ </configItem>
+ </option>
+ </group>
</optionList>
</xkbConfigRegistry>
EOF
理想情况下,这应该作为dpkg
触发器执行,因此每次更新时都会添加xkb
,但我还没有研究过这一点。如果您的发行版支持它,那么在安装之前或安装过程中修补软件包(使用准备好的补丁)也是一个好主意。
MyOptions
符号文件:
这与@rubo77 的回答相同,因此向他表示感谢!
# Caps Lock as AltGr and Arrows like in vim
xkb_symbols "altgr_vim" {
# replace Caps with AltGr
key <CAPS> { [ ISO_Level3_Shift ] };
# Add vim cursor keys to be accessed with AltGr
key <AB02> { [ x, X, Delete, Delete ] };
key <AC02> { [ s, S, KP_Enter, KP_Enter ] };
key <AC03> { [ d, D, Next, Next ] };
key <AC04> { [ f, F, BackSpace, BackSpace ] };
key <AC06> { [ h, H , Left, Left ] };
key <AC07> { [ j, J, Down, Down ] };
key <AC08> { [ k, K, Up, Up ] };
key <AC09> { [ l, L, Right, Right ] };
key <AD07> { [ u, U, Prior, Prior ] };
key <AE03> { [ 3, section, Home, Home ] };
key <AE04> { [ 4, dollar, End, End ] };
};
将两个文件放入一个目录中,确保安装程序可以使用chmod +x installer
执行,运行installer
,然后输入您的密码。
现在,您可以启动您最喜欢的键盘设置工具,并欣赏它在键盘布局选项中的列出!
答案3
为了获得AltGr+ h,j,或任何其他键k,l而无需任何应用程序自动键要执行此操作,←↓↑→您可以自定义键盘布局/usr/share/X11/xkb/符号/。目前我使用德语布局“de”。因此,我首先要:
1- 复制标准布局
cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak
2- 使用您喜欢的文本编辑器打开布局(这里是:gedit)
sudo gedit /usr/share/X11/xkb/symbols/de
你会看到类似这样的内容:
key <AD03> { [ e, E, EuroSign, EuroSign ] };
key <AD06> { [ z, Z, leftarrow, yen ] };
key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12> { [ plus, asterisk, dead_tilde, macron ] };
key <AC02> { [ s, S, ssharp, U017F ] };
key <AC06> { [ h, H, Left, Left ] };
key <AC07> { [ j, J, Down, Down ] };
key <AC08> { [ k, K, Up, Up ] };
key <AC09> { [ l, L, Right, Right ] };
....
....
key <AB10> { [ minus, underscore, endash, emdash ] };
key <LSGT> { [ less, greater, bar, NoSymbol ] };
如您所见,AB、AC、AD、AE 代表行,数字代表其在键盘上的位置(有一些特殊键,例如小/大键,也可以重新映射到其他键..
您不会找到所有键盘,只会找到与键盘布局不同的键盘。德语键盘基于“latin(type4)”,如您在文件开头所见:
include "latin(type4)"
然后你只需要根据你的需求进行更改。它的工作原理如下:
键 { [ key, key+ shift, key+ AltGr, key++ Shift] AltGr };
(也可能添加 5 级或更多的修饰符)
如果您想在不重新启动的情况下检查更改;(将“de”更改为您的布局……这里有一个列出可能的布局 )
setxkbmap -layout de
正如预期的那样,箭头的标签就像“左、右、下、上”。这是一个很好的清单可能的值。
这里是我的自定义布局的一个示例。(但目前未使用)
然后,您需要重新映射 Capslock 和 AltGr,或者它是否已经按照您发布的问题起作用了??
如果您还想保留“正常”的德语布局,您可以将其更改为您通常不使用的另一种布局,(或者更改“德语无死键”,您可以在同一个“de”文件中找到它……)
答案4
要将 CapsLock 重新映射到 AltGr,请使用
xmodmap -e "keycode 66 = ISO_Level3_Shift"
(来源:https://superuser.com/a/138757/160420)
要将箭头键映射到 AltGr + h、j、k 和 l,请使用xmodmap -pke
找到正确的设置:
xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"
并改变第五为新键添加值,并将其全部添加到 bash 脚本中:
# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode 43 = h H h H Left Left"
xmodmap -e "keycode 44 = j J j J Down Down"
xmodmap -e "keycode 45 = k K k K Up Up"
xmodmap -e "keycode 46 = l L l L Right Right"
xmodmap -e "keycode 30 = u U u U Prior Prior"
xmodmap -e "keycode 40 = d D d D Next Next"
xmodmap -e "keycode 12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode 13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode 53 = x X x X Delete Delete"
(来源:https://askubuntu.com/a/466315/34298)
把这个脚本放到你的启动应用程序(选择Dash > 启动应用程序 > 添加,并添加命令。)
注意:奇怪的是,在gnome-terminal
这里可以正常工作,但在中yakuake
对于 AltGr+F 上的 BackSpace 有效,但它会将 AltGr+h、j、k 和 l 设置为 D、B、A 和 C,除非您将键绑定设置为“Linux”而不是“(默认)XFree 4”,而在中sublime-text
它根本不起作用