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

rub*_*o77 11 vim keyboard-layout shortcut-keys

1.我如何全局映射Caps LockAltGr

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

2.我想将所有移动键映射到vim-like位置

  • 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-Finger-Position 移开(就像在vim编辑器中一样)

我找到了这个答案:如何将大写锁定键重新映射到退格键?
建议使用

xmodmap -e "keycode [code] = [new key]"
Run Code Online (Sandbox Code Playgroud)

见:http : //wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

但我无法弄清楚,如何将其添加到例如 AltGr+J 的组合中

另一个开始是将“替代字符键”设置为unity-control-center->Keyboard->Shortcuts->Typing asCaps Lock

更新:
我找到了一些解决方案(见下文),但并非所有解决方案都适用于所有应用程序,我猜这是一些应用程序使用的名为“XFree 4”的全局设置。

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

2. 如何进行更改升级-保存?

rub*_*o77 7

1.添加一个新的XKB部分文件

sudo vi /usr/share/X11/xkb/symbols/altgr_vim
Run Code Online (Sandbox Code Playgroud)

有了这个内容:

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         ] };
};
Run Code Online (Sandbox Code Playgroud)

2. 在你的语言文件中包含部分

例如对于德语,它是/usr/share/X11/xkb/symbols/de/de您的语言在哪里)在第一个块(xkb_symbols "basic")中添加:

include "altgr_vim(altgr-vim)"
Run Code Online (Sandbox Code Playgroud)

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

3.重新加载窗口会话

按 ALT+F2,输入“r”以重新加载 gnome 会话或退出并重新登录。现在将提供新的关键乐曲

4.解决一些问题

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

  2. 一些应用程序需要额外的设置,例如yakuake将键绑定设置为“XFree 4”,如果您将它们设置为“Linux”或“Solaris”,那么 XKB 设置也可以在那里工作:

遗留问题:

  1. 有些应用程序仍然不接受这些设置
  2. 升级后,符号文件被更新,您必须重复步骤 2


avi*_*ila 1

为了获得AltGr+ hjkl或任何其他键而不需要像Autokey这样的应用程序来执行,\xe2\x86\x90\xe2\x86\x93\xe2\x86\x91\xe2\x86\x92您可以自定义/usr/share/X11/xkb/symbols/中的键盘布局。\n目前我使用德语布局“de ”。所以首先我会:

\n\n

1-复制标准布局

\n\n
cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak\n
Run Code Online (Sandbox Code Playgroud)\n\n

2-使用您喜欢的文本编辑器打开您的布局(此处:gedit)

\n\n
sudo gedit /usr/share/X11/xkb/symbols/de \n
Run Code Online (Sandbox Code Playgroud)\n\n

在那里你会看到类似的东西:

\n\n
key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };\nkey <AD06>  { [         z,          Z,    leftarrow,          yen ] };\nkey <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };\n....\n....\nkey <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };\nkey <AC02>  { [               s,               S,          ssharp,          U017F ] }; \nkey <AC06>  { [               h,               H,            Left,             Left ]   }; \nkey <AC07>  { [               j,               J,            Down,             Down ]   }; \nkey <AC08>  { [               k,               K,              Up,               Up ]   }; \nkey <AC09>  { [               l,               L,           Right,            Right ]   }; \n....\n....\nkey <AB10>  { [     minus, underscore,               endash,     emdash ] };\nkey <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };\n
Run Code Online (Sandbox Code Playgroud)\n\n

如您所见,AB、AC、AD、AE 代表行,数字代表其在键盘上的位置(有一些特殊的键,例如小于/大于键,也可以重新映射到其他键。

\n\n

在那里您不会找到所有键盘,只能找到与键盘所基于的布局不同的键盘。德语版本基于“latin(type4)”,正如您在文件开头看到的那样:

\n\n
include "latin(type4)"\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

键 { [ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ] };

\n\n

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

\n\n

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

\n\n
 setxkbmap -layout de\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如预期的那样,箭头的标签就像“左、右、下、上”。这是可能值的一个很好的列表。

\n\n

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

\n\n

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

\n\n

如果您还想保留“正常”德语布局,则可以更改您通常不使用的另一个布局(或者更改“德语无死键”,您可以在同一个“de”文件中进一步找到它。 ..)

\n\n

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

\n


rub*_*o77 0

要将 CapsLock 重新映射到 AltGr,请使用

xmodmap -e "keycode 66 = ISO_Level3_Shift"
Run Code Online (Sandbox Code Playgroud)

(来源: 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"
Run Code Online (Sandbox Code Playgroud)

并将第五个值更改为新键并将其全部添加到 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"
Run Code Online (Sandbox Code Playgroud)

(来源: 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不起作用