我想使用命令行工具禁用 Ctrl-Alt-Backspace 组合,而无需 root 权限。
我知道我可以setxkbmap
用来zh能够使用选项“快速切换” terminate:ctrl_alt_bksp
。此外,setxkbmap -option
[命名无选项]删除全部选项。有没有办法只取消一个选项?
答案1
有点困难:-option
首先删除使用空参数的所有选项,然后设置相同的选项终止从列表中排除:
setxkbmap -option -option $(setxkbmap -query |
sed -n 's/options:\s*\(terminate:[^:]*,\)\?\|,terminate:[^,]*//gp')
答案2
根据我的经验(有限),最有效的是使用:
setxkbmap -query
然后打印出您当前的设置(是显示当前键盘设置的另一种选择)然后使用不带任何参数的setxkbmap -print
删除所有选项:-option
setxkbmap -option
然后一次重新引入一个新选项:
setxkbmap -option key:key_replacement
答案3
简单的方法:
setxkbmap -option
setxkbmap -option 'terminate:ctrl_alt_bksp'
答案4
这是一个更通用的脚本,基于已接受的答案;您可以传递模式(如unsetxkbmap-option 'terminate:.*
or 中所示)来撤消-option ctrl:swapcaps
但预览结果:unsetxkbmap-option -n '.*swap.*'
!/bin/sh -eu
DRY=
while test $# -gt 0; do case "$1" in
--dry-run|-n) shift; DRY=y ;;
--) shift; break ;;
-*) echo "Unknown: $1"; exit 1 ;;
*) break ;;
esac; done
opts=$(setxkbmap -query |
perl -wlnE 'if (/^options:\s*/gc) { ($& =~ /'^"$1"'$/ or print "-option $& ") while /[^,]+/g }'
)
printf '%s\n' "$opts"
test -z "$DRY" && setxkbmap -option $opts