`xkbmap`でオプションを*設定解除*する方法は?

`xkbmap`でオプションを*設定解除*する方法は?

root権限なしでコマンドラインツールを使用してCtrl-Alt-Backspaceの組み合わせを無効にしたいと思います。

私もsetxkbmap使用できることを知っていますzh「クイックトランジション」オプションを使用できますterminate:ctrl_alt_bksp。また、setxkbmap -option[オプションなしで命名]は次のものを削除します。みんなオプション。 1つだけ選択解除する方法はありますか?

答え1

少し難しいです。-optionまず、空のパラメータを使用してすべてのオプションを削除してから、同じオプションを設定します。終了リストから除外:

setxkbmap -option -option $(setxkbmap -query |
    sed -n 's/options:\s*\(terminate:[^:]*,\)\?\|,terminate:[^,]*//gp')

答え2

私の(制限された)経験によると、最も効果的な方法は次のものを使用することです。

setxkbmap -query

次に、現在の設定を印刷し(現在のキーボード設定を表示するのではなく)、setxkbmap -print引数なしですべて削除オプションを使用します。-option

setxkbmap -option

次に、新しいオプションを一度に1つずつ再導入します。

setxkbmap -option key:key_replacement

答え3

簡単な方法:

setxkbmap -option
setxkbmap -option 'terminate:ctrl_alt_bksp'

答え4

以下は、許可された回答に基づくより一般的なスクリプトです。または、パターンを渡して元に戻してunsetxkbmap-option 'terminate:.*結果-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

関連情報