鱼C论坛

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

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

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

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

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


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

  • 现状
xmodmap.config内容如下,是按网上写的。
右边是修改后的keycode和keysym
现状是从右边看确实修改了,但是实际并没有任何效果
xmodmap.config内容
clear lock
clear mod1
clear mod3
clear mod4
clear mod5
add mod1 = Alt_L Alt_R
add mod3 = Hyper_L Hyper_R
add mod4 = Super_L Super_R
add mod5 = ISO_Level3_Shift

keycode 66 = Mode_switch Caps_Lock NoSymbol NoSymbol
! swap backspace and caps+w
keycode 25 = w W BackSpace BackSpace
! swap delete and caps+r
keycode 27 = r R Delete Delete
! swap up and caps+e
keycode 26 = e E Up Up
! swap down and caps+d
keycode 40 = d D Down Down
! swap left and caps+s
keycode 39 = s S Left Left
! swap right and caps+f
keycode 41 = f F Right Right
! swap esc and caps+q
keycode 24 = q Q Escape Escape
! swap home and caps+u
keycode 30 = u U Home Home
! swap end and caps+p
keycode 33 = p P End End
! swap enter and caps+space
!keycode 65 = space space enter enter
输入xmodmap -pke查看的部分内容
keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
keycode  24 = q Q Escape Escape
keycode  25 = w W BackSpace BackSpace
keycode  26 = e E Up Up
keycode  27 = r R Delete Delete
keycode  28 = t T t T
keycode  29 = y Y y Y
keycode  30 = u U Home Home
keycode  31 = i I i I
keycode  32 = o O o O
keycode  33 = p P End End
keycode  34 = bracketleft braceleft bracketleft braceleft
keycode  35 = bracketright braceright bracketright braceright
keycode  36 = Return NoSymbol Return
keycode  37 = Control_L NoSymbol Control_L
keycode  38 = a A a A
keycode  39 = s S Left Left
keycode  40 = d D Down Down
keycode  41 = f F Right Right
keycode  42 = g G g G
keycode  43 = h H h H
keycode  44 = j J j J
keycode  45 = k K k K
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

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

! caps <--> ctrl_l
keycode  66 = Control_L NoSymbol Control_L
keycode  37 = Caps_Lock NoSymbol Caps_Lock

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

! space <--> ctrl_r
keycode  65 = Control_R NoSymbol Control_R
keycode 105 = space NoSymbol space

! back_space <--> shift_r
keycode  62 = BackSpace BackSpace BackSpace BackSpace
keycode  22 = Shift_R NoSymbol Shift_R

add lock = Caps_Lock
add control = Control_L Control_R
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 编辑

# cat xmodmap.config
clear lock
remove control = Control_R
clear mod1
clear mod4
clear mod5
add mod1 = Alt_L Alt_R
add mod4 = Super_L Super_R
add mod5 = ISO_Level3_Shift
add mod3 = Mode_switch

keysym Control_R = Caps_Lock
keysym Caps_Lock = Mode_switch
keysym Mode_switch = Control_R
add lock = Caps_Lock

! swap backspace and caps+w
keycode 25 = w W BackSpace W
! swap delete and caps+r
keycode 27 = r R Delete R
! swap up and caps+e
keycode 26 = e E Up E
! swap down and caps+d
keycode 40 = d D Down D
! swap left and caps+s
keycode 39 = s S Left S
! swap right and caps+f
keycode 41 = f F Right F
! swap esc and caps+q
keycode 24 = q Q Escape Q
! swap home and caps+u
keycode 30 = u U Home U
! swap end and caps+p
keycode 33 = p P End P
! swap enter and caps+space
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

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

! caps <--> ctrl_l
keycode  66 = Control_L NoSymbol Control_L
keycode  37 = Caps_Lock NoSymbol Caps_Lock

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

! space <--> ctrl_r
keycode  65 = Control_R NoSymbol Control_R
keycode 105 = space NoSymbol space

! back_space <--> shift_r
keycode  62 = BackSpace BackSpace BackSpace BackSpace
keycode  22 = Shift_R NoSymbol Shift_R

add lock = Caps_Lock
add control = Control_L Control_R
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账户
输入
xmodmap xmodmap.config

我照着网上写了脚本文件,内容如下
  1 [Unit]
  2 Description=run xmodmap.config 
  3 Documentation=man:xmodmap
  4 After=graphical.target
  5 Wants=graphical.target
  6 
  7 [Service]
  8 Type=oneshot
  9 ExecStart=/usr/bin/bash -c 'export DISPLAY=":0"; /usr/bin/xmodmap -quiet /et    c/xmodmap.config'
 10 
 11 
 12 [Install]
 13 WantedBy=graphical.target
 14 
 15 After=graphical.target
 16 Wants=graphical.target
 17 
 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-11-15 01:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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