像在vim中一样将Caps Lock配置为AltGr和Arrows


9

1.我如何全局映射Caps LockAltGr

我不需要CapsLock,而是想在那里轻松访问AltGr Key

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”的全局设置。

我如何也为XFree 4设置键绑定?


我没有AltGr键,但是您可能会发现这个类似的问题提供了一些线索。
年长的怪胎

Answers:


4

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
  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         ] };
};

2.在您的语言文件中包含部分内容

例如,德语/usr/share/X11/xkb/symbols/de/de您的语言在哪里)将其添加到第一个代码块(xkb_symbols "basic")中:

include "altgr_vim(altgr-vim)"

注意:此部分必须在每次发行版更新后重复进行

3.重新加载窗口会话

按ALT + F2,输入“ r”以重新加载gnome会话,或者直接注销并再次登录。现在,新的按键组合将可用

一些问题

某些应用程序不接受设置,例如:sublime可以替换为atom

某些应用程序需要额外的设置,例如,yakuake将键绑定设置为“ XFree 4”,如果将它们设置为“ Linux”或“ Solaris”,则XKB设置也可以在其中使用:


1
我强烈建议您使用XKB选项,lv3:caps_switch而不要<CAPS>像显示的那样更改定义。请参阅/usr/share/X11/xkb/symbols/level3(定义该选项的位置)。
quixotic

@quixotic:您可以使用所需的配置添加新答案吗?对于赏金,我可能需要一个很好的完整答案;)
rubo77

这对我来说非常有效。不过,请注意,可能需要将shift +3的“ section”更改为“ numbersign”
mowwwalker

0

为了得到AltGr+ hjkl或不喜欢的任何应用程序的任何其他键自动键到[执行您可以自定义键盘布局中发现的在/ usr /共享/ 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)"

然后,您只需要根据需要进行更改。它的工作原理如下:

键{[ keykey+ shiftkey+ AltGrkey+ Shift+ AltGr ]};

(也可以添加第5级修饰符,或更多)

如果您要检查更改而不重新启动;(正在更改布局的“ de” ...这是可能的布局列表

 setxkbmap -layout de

箭头标记为“左,右,下,上”。这是一个可能值的好清单

是我的自定义布局的示例。(但目前未使用)

然后,您将需要重新映射Capslock和AltGr,或者它已经按照您发布的问题工作了?

如果您还想保留“常规”德语版式,则可以将其更改为通常不使用的另一版式(或更改“德语无死键”,您可以在同一“ de”文件中找到更多内容)。 ..)

来源:链接到有关xbk和自定义布局的非常全面的说明。
链接到具有良好答案的类似问题。


1
在现代的Ubuntu及其衍生版本中,/etc/default/keyboard一旦进行了这些更改,就可以设置XKB布局和选项。man 5 keyboard有关详细信息,请参见。我建议添加新的变体和选项,而不要更改现有的变体和选项。
quixotic

0

要将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

将该bash脚本放入“ 启动应用程序”中(选择Dash>“启动应用程序”>“添加”,然后添加命令)。

注意:奇怪的是,gnome-terminal它可以正常工作,但是yakuake它可以在AltGr + F上的BackSpace上工作,但是它将AltGr + h,j,k和l设置为D,B,A和C,除非您将键绑定设置为“ Linux”而不是“(默认)XFree 4”,并且sublime-text根本不起作用


xmodmap不推荐使用,不鼓励使用。它仍然可以在X11环境中使用,但不能在Wayland和其他X11替代产品中使用。强烈建议您使用基于XKB的解决方案。
quixotic

所以我想,我必须添加一个新的自定义键盘布局吗?askubuntu.com/questions/482678/…–
rubo77

1
添加自定义布局是一种方法,尽管您只需做出自定义选项就可以摆脱困境。在GNOME或Unity中,您可能需要禁用settings-daemon的键盘插件才能使xmodmap自定义起作用,但是如果您进行新的系统范围的XKB布局/变体/选项,则可以在中进行设置/etc/default/keyboard
quixotic

1
这似乎需要做很多工作,但是会解决新按键组合在某些应用中不起作用的问题吗?
rubo77
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.