重新映射 CapsLock 键

重新映射 CapsLock 键

我已重新映射CapsLock键以使其像这样工作:

CapsLock+ J= Left arrow key
CapsLock+ K=Down arrow key
等等。

我使用过 xmodmap(如将 Super+hjkl 映射到 X 下的箭头键)。

问题是我似乎无法使以下组合键起作用:

预期:CapsLock+ Shift+ J= Shift+Left arrow key
实际:CapsLock+ Shift+ J= 不执行任何操作。
等等。

您对如何实现它有什么想法吗?谢谢。

答案1

这不是一个直接的答案,但解决这个问题的最佳方法是查看按下您感兴趣的组合时触发了哪些事件。为此,请安装并尝试各种组合。

答案2

我遇到了同样的问题,并询问了询问Ubuntu。此问题可以通过以下方式解决:

设置保留参数

编辑/usr/share/X11/xkb/types/iso9995并添加preserve[Shift+LevelThree] = Shift;文件内容如下:

  partial default xkb_types "default" {

// A key type which can be used to implement
// an ISO9995-style level-three shift.

virtual_modifiers LevelThree;

type "THREE_LEVEL" {
    modifiers = Shift+LevelThree;
    map[None] = Level1;
    map[Shift] = Level2;
    map[LevelThree] = Level3;
    map[Shift+LevelThree] = Level3;
    preserve[Shift+LevelThree] = Shift;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Level3";
    };
};

为所需的布局自定义符号文件

按照如下方式编辑键盘布局文件/usr/share/X11/xkb/symbols/(根据您自己的需要进行调整)

key <AC06>  { type="THREE_LEVEL", [   h,   H, Left  ]   }; 
key <AC07>  { type="THREE_LEVEL", [   j,   J, Down  ]   }; 
key <AC08>  { type="THREE_LEVEL", [   k,   K, Up    ]   }; 
key <AC09>  { type="THREE_LEVEL", [   l,   L, Right ]   }; 

并且不喜欢

 ....
 key { [ j, J, Down, Down ] };
 ....

答案3

您的问题可能是,在您的键盘硬件中,capslock 和 shift 几乎相同,也可能是您的 capslock 键永久触发了 shift 键。

答案4

我测试过许多建议的方法,但我发现这是迄今为止最容易实现和理解的方法。创建文件nano ~/.my_keyboard,粘贴下面的代码(根据您的计划更改键映射)并运行xmodmap ~/.my_keyboard

clear lock
keycode 66 = Mode_switch

keysym h = h H Left Left hstroke Hstroke
keysym j = j J Down Down dead_hook dead_horn
keysym k = k K Up Up lstroke ampersand
keysym l = l L Right Right lstroke Lstroke

这将禁用标准Caps Lock功能并将键重新映射到Mode_switch修饰键。要重置 xmodmap 设置,您可以运行setxkbmap

这里是原来的我已经适应的解决方案。

相关内容