cot*_*eyr 14 xorg keyboard xmodmap
目前我有一个.Xmodmap
文件将 my 更改Command为Ctrl,然后将 my 更改Ctrl为Super(我在 Mac 上运行 Linux)。
它工作得很好,当只运行一次但连续运行时(例如,当我重新启动我的桌面环境(Cinnamon)时,它会重新加载.Xmodmap
文件)它基本上通过恢复更改来重置设置。有效地在我想要的设置和原始设置之间切换。
如何编写一个.Xmodmap
只设置一次设置但在连续运行时不会将它们更改回的文件?这是我现有的.Xmodmap
文件:
clear control
clear mod4
keycode 105 =
keycode 206 =
keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Control_R NoSymbol Control_R
keycode 37 = Super_L NoSymbol Super_L
add control = Control_L
add control = Control_R
Run Code Online (Sandbox Code Playgroud)
在应用您的模组之前将地图重置为其原始状态。完全重置需要永远,所以我能想到的最好的方法就是不同。
此代码使用.Xmodmap{.orig,.reset,.mods}
where if.orig
不存在将其设置为当前状态,并计算.reset
从它到达的任何位置恢复该状态。申请前.mods
。
#!/bin/sh
# file xmodmap-reset
# rm ~/.Xmodmap.orig
# beforehand to take current setup as baseline for Xmodmap.mods changes
stem=~/.Xmodmap
orig=${stem}.orig
reset=${stem}.reset
mods=${stem}.mods
# implement -pme like -pke
#
xmodmap-pme () {
xmodmap -pm \
| sed '
1d
/ [^ ]/!d
s/^[^ ][^ ]*/clear &\nadd & =/
s/([^ ]*//g
'
}
# save baseline if none atm
test -a $orig || {
xmodmap -pke
xmodmap-pme
} > $orig
# payload, diff for commands to reset to baseline from current
{
xmodmap -pke
xmodmap-pme
} \
| {
diff -u0 $orig - \
| sed -n '
1,/^@@/d
s/^[^+]clear/clear/p
s/^-//p
'
} > $reset
xmodmap $reset
# finally ready to apply the mods
test -a $mods && xmodmap $mods
Run Code Online (Sandbox Code Playgroud)
(编辑:清理)
归档时间: |
|
查看次数: |
1569 次 |
最近记录: |