鱼C论坛

 找回密码
 立即注册
查看: 1521|回复: 8

[已解决]用xmodmap进行按键映射遇到问题

[复制链接]
发表于 2022-7-29 23:21:04 | 显示全部楼层 |阅读模式
60鱼币
本帖最后由 孤不冷cing 于 2022-8-14 10:49 编辑

想看我最终配置内容的,置项在第二层了。
存在问题有写,并且这个配置对终端及vim不生效。

可能这些问题只对我的电脑存在,想试的可以试试


  • 目标
我在win上用capslock+习惯了,觉得很好用,所以就上网琢磨linux下的映射,了解到了xmodmap,想自己简单实现几个自己最常用的快捷组合键

  • 现状
xmodmap.config内容如下,是按网上写的。
右边是修改后的keycode和keysym
现状是从右边看确实修改了,但是实际并没有任何效果

  1. xmodmap.config内容
  2. clear lock
  3. clear mod1
  4. clear mod3
  5. clear mod4
  6. clear mod5
  7. add mod1 = Alt_L Alt_R
  8. add mod3 = Hyper_L Hyper_R
  9. add mod4 = Super_L Super_R
  10. add mod5 = ISO_Level3_Shift

  11. keycode 66 = Mode_switch Caps_Lock NoSymbol NoSymbol
  12. ! swap backspace and caps+w
  13. keycode 25 = w W BackSpace BackSpace
  14. ! swap delete and caps+r
  15. keycode 27 = r R Delete Delete
  16. ! swap up and caps+e
  17. keycode 26 = e E Up Up
  18. ! swap down and caps+d
  19. keycode 40 = d D Down Down
  20. ! swap left and caps+s
  21. keycode 39 = s S Left Left
  22. ! swap right and caps+f
  23. keycode 41 = f F Right Right
  24. ! swap esc and caps+q
  25. keycode 24 = q Q Escape Escape
  26. ! swap home and caps+u
  27. keycode 30 = u U Home Home
  28. ! swap end and caps+p
  29. keycode 33 = p P End End
  30. ! swap enter and caps+space
  31. !keycode 65 = space space enter enter
复制代码
  1. 输入xmodmap -pke查看的部分内容
  2. keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
  3. keycode  24 = q Q Escape Escape
  4. keycode  25 = w W BackSpace BackSpace
  5. keycode  26 = e E Up Up
  6. keycode  27 = r R Delete Delete
  7. keycode  28 = t T t T
  8. keycode  29 = y Y y Y
  9. keycode  30 = u U Home Home
  10. keycode  31 = i I i I
  11. keycode  32 = o O o O
  12. keycode  33 = p P End End
  13. keycode  34 = bracketleft braceleft bracketleft braceleft
  14. keycode  35 = bracketright braceright bracketright braceright
  15. keycode  36 = Return NoSymbol Return
  16. keycode  37 = Control_L NoSymbol Control_L
  17. keycode  38 = a A a A
  18. keycode  39 = s S Left Left
  19. keycode  40 = d D Down Down
  20. keycode  41 = f F Right Right
  21. keycode  42 = g G g G
  22. keycode  43 = h H h H
  23. keycode  44 = j J j J
  24. keycode  45 = k K k K
  25. keycode  46 = l L l L
复制代码

期望
想实现图中注释的几个基本内容,不是交换,只是想让这几个组合按键能能具有相同的效果,原本的按键功能保持不变
例如:按住caps + w可以向上移动光标,并且上箭头还具有向上移动光标的功能

  • 疑问
能解释一下xmodmap怎么用的吗,网上的我越看越糊涂,连keycode和keysym都分不清了。我不知道他们都是啥意思了,也不知道xmodmap在干什么







最佳答案
2022-7-29 23:21:05
参考这两个教程
Xmodmap (简体中文)
https://www.cnblogs.com/yinheyi/p/10146900.html

下面这个我试过了,可以用
  1. $ cat .Xmodmap                                                                          
  2. clear lock
  3. clear control
  4. clear shift

  5. ! caps <--> ctrl_l
  6. keycode  66 = Control_L NoSymbol Control_L
  7. keycode  37 = Caps_Lock NoSymbol Caps_Lock

  8. ! esc <--> "`~"
  9. keycode  49 = Escape NoSymbol Escape
  10. keycode   9 = grave asciitilde grave asciitilde

  11. ! space <--> ctrl_r
  12. keycode  65 = Control_R NoSymbol Control_R
  13. keycode 105 = space NoSymbol space

  14. ! back_space <--> shift_r
  15. keycode  62 = BackSpace BackSpace BackSpace BackSpace
  16. keycode  22 = Shift_R NoSymbol Shift_R

  17. add lock = Caps_Lock
  18. add control = Control_L Control_R
  19. add shift = Shift_L Shift_R
复制代码
2022-07-29 23-08-30 的屏幕截图.png

最佳答案

查看完整内容

参考这两个教程 Xmodmap (简体中文) https://www.cnblogs.com/yinheyi/p/10146900.html 下面这个我试过了,可以用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-2 15:39:37 | 显示全部楼层
本帖最后由 孤不冷cing 于 2022-8-2 15:43 编辑

  1. # cat xmodmap.config
  2. clear lock
  3. remove control = Control_R
  4. clear mod1
  5. clear mod4
  6. clear mod5
  7. add mod1 = Alt_L Alt_R
  8. add mod4 = Super_L Super_R
  9. add mod5 = ISO_Level3_Shift
  10. add mod3 = Mode_switch

  11. keysym Control_R = Caps_Lock
  12. keysym Caps_Lock = Mode_switch
  13. keysym Mode_switch = Control_R
  14. add lock = Caps_Lock

  15. ! swap backspace and caps+w
  16. keycode 25 = w W BackSpace W
  17. ! swap delete and caps+r
  18. keycode 27 = r R Delete R
  19. ! swap up and caps+e
  20. keycode 26 = e E Up E
  21. ! swap down and caps+d
  22. keycode 40 = d D Down D
  23. ! swap left and caps+s
  24. keycode 39 = s S Left S
  25. ! swap right and caps+f
  26. keycode 41 = f F Right F
  27. ! swap esc and caps+q
  28. keycode 24 = q Q Escape Q
  29. ! swap home and caps+u
  30. keycode 30 = u U Home U
  31. ! swap end and caps+p
  32. keycode 33 = p P End P
  33. ! swap enter and caps+space
  34. keycode 65 = space NoSymbol Return
复制代码

我这个不是已经把Caps_Lock、Ctrl_R、Mode_switch顺移了一次吗,为什么CapsLock还是能切换大小写,Ctrl_R也还是Ctrl功能
我整了三个小时也没明白

上面这个能实现我想要的功能了,但是就是每次按Caps+edsf都会切换一次大小写,很烦
所以我想干脆把caps直接换成纯Mode_switch算了,但是他还是能切换大小写
搞得我心力交瘁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-29 23:21:05 | 显示全部楼层    本楼为最佳答案   
参考这两个教程
Xmodmap (简体中文)
https://www.cnblogs.com/yinheyi/p/10146900.html

下面这个我试过了,可以用
  1. $ cat .Xmodmap                                                                          
  2. clear lock
  3. clear control
  4. clear shift

  5. ! caps <--> ctrl_l
  6. keycode  66 = Control_L NoSymbol Control_L
  7. keycode  37 = Caps_Lock NoSymbol Caps_Lock

  8. ! esc <--> "`~"
  9. keycode  49 = Escape NoSymbol Escape
  10. keycode   9 = grave asciitilde grave asciitilde

  11. ! space <--> ctrl_r
  12. keycode  65 = Control_R NoSymbol Control_R
  13. keycode 105 = space NoSymbol space

  14. ! back_space <--> shift_r
  15. keycode  62 = BackSpace BackSpace BackSpace BackSpace
  16. keycode  22 = Shift_R NoSymbol Shift_R

  17. add lock = Caps_Lock
  18. add control = Control_L Control_R
  19. add shift = Shift_L Shift_R
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-29 23:30:56 | 显示全部楼层
图片看不清
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-30 11:41:54 | 显示全部楼层

我重新传了,可以了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-30 12:43:44 From FishC Mobile | 显示全部楼层
再以文本的形式发一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-30 20:51:46 | 显示全部楼层
本帖最后由 孤不冷cing 于 2022-7-30 21:23 编辑
人造人 发表于 2022-7-30 12:43
再以文本的形式发一下

我反应过来了,我改得这个是只能在终端以外的地方用是吗?我犯糊涂了,对不起。
我现在在网页上打字,可以使用我设置的这几个组合键了,但是存在几个问题

问题1:
每次按组合键之后,大小写都被转换了

问题2:
回车的keysym name是什么,我试了Enter和enter都不对,老是说我的name是有问题的

问题3:
每次重启之后都要在终端进root账户
输入
  1. xmodmap xmodmap.config
复制代码


我照着网上写了脚本文件,内容如下

  1.   1 [Unit]
  2.   2 Description=run xmodmap.config
  3.   3 Documentation=man:xmodmap
  4.   4 After=graphical.target
  5.   5 Wants=graphical.target
  6.   6
  7.   7 [Service]
  8.   8 Type=oneshot
  9.   9 ExecStart=/usr/bin/bash -c 'export DISPLAY=":0"; /usr/bin/xmodmap -quiet /et    c/xmodmap.config'
  10. 10
  11. 11
  12. 12 [Install]
  13. 13 WantedBy=graphical.target
  14. 14
  15. 15 After=graphical.target
  16. 16 Wants=graphical.target
  17. 17
  18. 18 export DISPLAY=":0";
复制代码


但是并没有效果
脚本文件我可以在普通用户下编辑
但是xmodmap.config需要root用户
是不是因为这个原因呢?

另外,我想配置,或者应该先学习一下终端中的快捷键
我起初以为这样配置之后在终端里也是可以实现上下左右的
有什么办法可以在终端里也实现caps+edsf == 上下左右 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-3 23:36:14 | 显示全部楼层
孤不冷cing 发表于 2022-8-2 15:39
我这个不是已经把Caps_Lock、Ctrl_R、Mode_switch顺移了一次吗,为什么CapsLock还是能切换大小写,Ct ...

你的这个配置在我这边一切正常
你重启一下linux试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-14 10:43:57 | 显示全部楼层
人造人 发表于 2022-8-3 23:36
你的这个配置在我这边一切正常
你重启一下linux试试

还是不行,xmodmap -pke也显示的跟我想的一样,xmodmap看keysym code也确实互换了
我整不会了,就这样用吧
学C去了,不整这玩意了
谢谢你连着这么多天帮我试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 17:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表