Fedora

XKB - 配置無法正常工作

  • June 28, 2020

我將以下內容添加到**/usr/share/X11/xkb/symbols/us**:

key <AC06> {        [         h, H, Left            ]       };
key <AC07> {        [         j, J, Down            ]       };
key <AC08> {        [         k, K, Up              ]       };
key <AC09> {        [         l, L, Right           ]       };
key <AD08> { [ i, I, Home, Home          ] };
key <AB08> { [ comma, less, End, End         ] };
key <CAPS> { [ ISO_Level3_Shift ] }; 

因為箭頭鍵和 Home/End 鍵太該死了。問題是,這些修改在某些程序中被忽略了。

它們在瀏覽器和一些文本編輯器(如 vscode 和 emacs gui)中執行良好,而在 Sublime Text 和 Konsole(KDE 終端)中則不行。

有沒有解決辦法。如果這很重要,我正在使用 Fedora。

我剛剛破解了以下解決方案。它不僅適用於 Sublime Text,還允許使用shift.

  1. 添加preserve[Shift+LevelThree] = Shift;…/xdb/types/iso9995. 關於askubuntu的詳細資訊。
  2. type="THREE_LEVEL"actions[Group1]= [NoAction(), NoAction(), RedirectKey(keycode=<UP>, clearmods=Lock)(向上)添加到您在/usr/share/X11/xkb/symbols/us.

我的鍵略有不同的條目如下所示:

key <AD07> { type="THREE_LEVEL",
  symbols[Group1]= [ u,            U,         Home,        Home ],
  actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<HOME>, clearmods=Lock) ]
};
key <AD08> { type="THREE_LEVEL",
  symbols[Group1]= [ i,            I,         Up,        Up ],
  actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<UP>, clearmods=Lock) ]
};
key <AD09> { type="THREE_LEVEL",
  symbols[Group1]= [ o,            O,         End,        End ],
  actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<END>, clearmods=Lock) ]
};
key <AC07> { type="THREE_LEVEL",
  symbols[Group1]= [ j,            J,         Left,      Left ],
  actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<LEFT>, clearmods=Lock) ]
};
key <AC08> { type="THREE_LEVEL",
  symbols[Group1]= [ k,            l,         Down,      Down ],
  actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<DOWN>, clearmods=Lock) ]
};
key <AC09> { type="THREE_LEVEL",
  symbols[Group1]= [ l,            L,         Right,      Right ],
  actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<RGHT>, clearmods=Lock) ]
};

閱讀Archlinux Wiki 上的這篇文章以獲取更多詳細資訊。

如果您不想選擇帶有 . 的文本,也許您可以跳過 1. 和類型聲明shift

引用自:https://unix.stackexchange.com/questions/566808