我想在每次登录时(或每次启动时,如果这不起作用)运行此命令: xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'
我尝试了很多东西。我把命令放在System > Preferences > Startup Applications. 我把它放在一个.sh文件中,标记它chmod +x并将该文件放在System > Preferences > Startup Applications. 我把脚本放在/etc/init.d. 我把命令放在~/.profile. 似乎没有任何效果。
最后,我把它放在我的~/.profile:
touch test1
xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'
touch test2
Run Code Online (Sandbox Code Playgroud)
test1 和 test2 都被创建,但键仍然没有重新映射。如果我只是复制/粘贴命令并手动运行它,它工作正常。但它不会在登录时运行。有任何想法吗?
或任何其他工具,但我更喜欢 xmodmap。我试过这个:
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
xmodmap -e "keycode 66 = Control_L"
Run Code Online (Sandbox Code Playgroud)
但两者似乎都不能完全奏效。这是按下大写锁定的事件日志:
KeyPress event, serial 28, synthetic NO, window 0x1a00001,
root 0x12d, subw 0x0, time 914826, (679,342), root:(680,362),
state 0x12, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37 // 37 is the control key code
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: …Run Code Online (Sandbox Code Playgroud) 在 Fedora 切换到 Wayland 之前,我使用这个.Xmodmap文件来使用我的CapsLock密钥来访问德语变音:
keycode 66 = Mode_switch Multi_key
keycode 20 = minus underscore ssharp
keycode 34 = bracketleft braceleft udiaeresis Udiaeresis
keycode 47 = semicolon colon odiaeresis Odiaeresis
keycode 48 = apostrophe quotedbl adiaeresis Adiaeresis
Run Code Online (Sandbox Code Playgroud)
在 Wayland 上,这不再起作用 -CapsLock会像以前一样工作。
有没有办法在 Wayland 中也达到同样的结果?
我正在考虑购买 60% 的键盘,并希望在购买实际键盘之前尝试使用该布局。
我正在尝试将箭头键映射到大写锁定 + ijkl 并禁用真正的箭头键。我已经找到了如何重新映射它,但是当我尝试禁用真正的箭头键时,重新映射的箭头键会中断。这是一张工作地图:
keycode 66 = Mode_switch
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right
Run Code Online (Sandbox Code Playgroud)
要禁用向上箭头,我添加
keycode 111 =
Run Code Online (Sandbox Code Playgroud)
一旦我这样做了,ijkl 不再作为字符工作,但即使不按修饰符(大写锁定)也可以作为箭头。如何在不破坏我以前的映射的情况下禁用箭头键?
当我运行 xmodmap 时,我得到这样的信息
shift shift_l (0x32), shift_r (0x3e)
lock
control control_l (0x25), control_l (0x42), control_r (0x69)
mod1 alt_l (0x40), alt_r (0x6c), meta_l (0xcd)
mod2 num_lock (0x4d)
mod3
mod4 super_l (0x85), super_r (0x86), super_l (0xce), hyper_l (0xcf)
mod5 iso_level3_shift (0x5c), mode_switch (0xcb)
Run Code Online (Sandbox Code Playgroud)
我得到了轮班和控制组。但是其他的 mod1、mod2、mod3、mod4 是做什么用的?
似乎无论如何您只能使用以下两个修饰符:
keysym <keysymname> = <key> <shift+key> <mode_switch+key> <mode_switch+shift+key>
Run Code Online (Sandbox Code Playgroud)
为什么我不能设置一些东西<mod4+key>?
在使用Ctrl+“箭头键”在 X 窗口中切换虚拟桌面 13 年后,我最近被说服改为使用超级键(Windows 键和上下文菜单键,我已经重新映射)。这在大多数情况下都可以正常工作。但是,某些东西仍在接收这些键发送的键事件,就好像它们是普通的字母数字键一样。
例如,我首先在 Google Docs 电子表格中注意到这一点,如果我在单元格顶部单独按下 windows 键,它就会开始编辑该单元格。它不插入任何内容,它只是发送一个 Firefox 看到并开始编辑单元格的关键事件。这导致我正在处理的协作文档出现问题,因为 Google 文档的工作方式,它导致我在意识到发生了什么之前不小心删除了几个字段中的数据。
我喜欢使用超级键,但我希望它们的行为更像 aCtrl或Alt键,因为它是一个修饰键,并且在按下第二个键之前不会发送任何内容。
我的设置如下:
移除锁 = Caps_Lock
键码 66 = 转义
!下面映射了我的其他 Windows 上下文菜单键。
键码 135 = Super_R
编辑:根据要求,这是 xev 的相关输出,用于我的 Super_L(左 Windows 键)的按键和按键释放
KeyPress event, serial 34, synthetic NO, window 0x8200001,
root 0x15d, subw 0x0, time 2428849342, (177,174), root:(182,228),
state 0x10, keycode 133 (keysym 0xffeb, …Run Code Online (Sandbox Code Playgroud) 来自OpenSUSE 维基:
(只要将 Mode_switch/ISO_Level3_Shift 分配给 Alt Gr 的键码——如果将 Mode_switch 和 ISO_Level3_Shift 分配给不同的键,则一个键最多可以分配六个字符!)。
请告诉我将 6 个字符转换为一个 ?ey(k 更改为 ?)的通用步骤?
我有一个 Apple 铝制键盘。在1键的左边我有less/greater ( < >) 键,而不是grave/tilde ( ` ~)。
xmodmap对我不起作用:布局切换(完成setxkbmap)会重置我的 xmodmap 更改。.Xmodmap文件也没有帮助。
如何重新映射波浪号键?
我无法禁用 Numlock 键(使键什么也不做,以便小键盘数字始终有效),同时将额外的鼠标按钮(在我的鼠标侧面)映射到快捷方式以执行自定义操作。
我使用 Arch Linux 和 Xfce,登录管理器是 LightDM。
我使用这个代码,放在一个 bash 文件中,在启动时禁用我的 numlock:
xmodmap -e "keycode 77 = NoSymbol"
Run Code Online (Sandbox Code Playgroud)
我的主目录中有一个 .xbindkeysrc 文件,其中包含:
"xdotool key ctrl+w"
b:8 + Release
"xdotool key ctrl+d"
b:9 + Release
Run Code Online (Sandbox Code Playgroud)
(关闭标签和书签)
如果我在启动时启用“禁用 Numlock”代码,.xbindkeysrc 文件将不再有效。这似乎与与numlockx onxmodmap 命令(在它之前)在同一个 bash 文件中的命令有关。我该如何解决?
添加
"NoCommand"
c:77
Run Code Online (Sandbox Code Playgroud)
to .xbindkeysrc 也没有预期的效果。将 c 更改为 m,因为理论上 Numlock 是一个修饰键,无济于事。使用 Num_Lock 而不是 c:77 也不起作用。
在我的 Debian Linux 机器上Ctrl+ Alt+F1绑定到一个虚拟终端。我可以通过运行看到相应的条目xmodmap -pke
keycode 67 = F1 XF86_Switch_VT_1 F1 XF86_Switch_VT_1
Run Code Online (Sandbox Code Playgroud)
根据这个线程,我可能添加的内容与我在其他地方读到的内容一致,右侧的列=对应于key, Shift+ key, AltGr+key和Shift+ AltGr+ key。
鉴于这种情况,我不明白的码的转换如何F1(以上)工程Ctrl+ Alt+ F1。现在看来,这确实应该要么Shift+F1或Shift+ AltGr+ F1?
这是xmodmap -pm我机器上的输出:
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x25)
control Control_L (0x42), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R …Run Code Online (Sandbox Code Playgroud)