`xkbmap`에서 옵션을 *설정 해제*하는 방법은 무엇입니까?

`xkbmap`에서 옵션을 *설정 해제*하는 방법은 무엇입니까?

루트 권한 없이 명령줄 도구를 사용하여 Ctrl-Alt-Backspace 조합을 비활성화하고 싶습니다.

나도 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:.*실행 취소 -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

관련 정보