USB 키보드를 연결할 때마다 모든 키보드의 레이아웃이 일부 시스템 기본값(원하는 대로 수정자 및 기타 키가 없는 미국 레이아웃)으로 재설정됩니다. 나는 Ubuntu 16.04 및 18.04를 포함한 많은 Debian 및 Ubuntu 시스템에서 이것을 관찰했습니다. 이 행동아주 오랫동안 주변에 있었어.
저는 데스크톱 환경 없이 X11을 사용합니다(일부 Gnome 악마는 시작하는 경향이 있지만). … | xkbcomp - "$DISPLAY"
로그인할 때 XKB(구체적으로 )를 사용하여 키보드 레이아웃을 설정했습니다 .
USB 키보드를 삽입할 때 시스템 레이아웃이 아닌 내 레이아웃을 갖기를 원합니다. 사실, 시스템이 이미 존재하는 키보드(있는 경우)와 새로 삽입된 키보드 모두에 대해 현재 레이아웃을 계속 사용하기를 바랍니다. 이것이 가능하지 않다면 다음과 같은 레이아웃을 다시 적용하겠습니다.나선택했습니다.
마찬가지로 두 키보드의 반복 속도는 로 설정한 속도 대신 로그인 시간 기본값으로 설정됩니다 xset r
.
키보드 핫플러그가 키보드 레이아웃과 반복 속도를 재설정하는 것을 방지하려면 어떻게 해야 합니까?아니면 적어도 내가 선택한 레이아웃으로 재설정하려면 어떻게 해야 합니까?
상당히 서투른 방법이 있습니다.udev 규칙으로. 이는 단일 X 서버가 있다고 가정하기 때문에 서투른데, 가장 문제는 사용자가 루트 권한을 가지고 있다고 가정한다는 것입니다.루트 권한이 없습니다, 따라서 udev 규칙 설정이나 편집과 관련된 방법은 Xorg.conf
여기에서 적용할 수 없습니다.
답변1
xkbcomp - "$DISPLAY"
로그인할 때 XKB(구체적으로 ... | )를 사용하여 키보드 레이아웃을 설정했습니다 .키보드 핫플러그가 키보드 레이아웃과 반복 속도를 재설정하는 것을 방지하려면 어떻게 해야 합니까?
재설정한다고 되는 것이 아닙니다. 이미 키보드가 연결되어 있고 두 번째 키보드를 추가하는 경우 이전 키보드는 계속해서 동일한 설정을 사용합니다.
문제는 클라이언트측에서 xkb 구성을 로드하는 방법( 사용 xkbcomp
) 또는 서버측( 사용 setxkbmap
)이 "코어 키보드" 추상화가 아닌 기존의 실제 장치에만 레이아웃을 적용한다는 것입니다. 장치의 플러그를 뽑으면 해당 설정이 손실됩니다.
해결책은 키보드가 추가되면 자신을 모니터링하고 원하는 설정으로 xkbcomp
/ 을 호출하는 것 setxkbmap
입니다 .xset r rate
그러기 위해서는 당신이~ 아니다udev 규칙이나 루트 권한이 필요합니다.어느X11 클라이언트 프로그램은 X11 입력 확장을 통해 입력 장치의 변경 사항을 모니터링하고 그에 따라 조치를 취할 수 있습니다.
이를 위해 쉘에서 사용할 수 있고 apt-get
데비안 및 유사한 배포판에 쉽게 설치할 수 있는 프로그램은 입니다 inputplug
.
예:
$ cat ./on-new-kbd
#! /bin/sh
keymap=/path/to/your/keymap
echo >&2 "$@"
event=$1 id=$2 type=$3
case "$event $type" in
'XIDeviceEnabled XISlaveKeyboard')
xset r rate 200 50
xkbcomp -i "$id" "$keymap" "$DISPLAY"
esac
$ chmod 755 ./on-new-kbd
$ inputplug -d -c ./on-new-kbd
<plug keyboard>
XIDeviceEnabled 13 XISlavePointer GASIA USB KB V11
XISlaveAdded 13 XIFloatingSlave GASIA USB KB V11
XISlaveAdded 14 XIFloatingSlave GASIA USB KB V11
XIDeviceEnabled 14 XISlaveKeyboard GASIA USB KB V11
-i
-- 옵션에 주목하세요 xkbcomp
. 각 키보드마다 다른 설정을 사용할 수 있습니다. 이 프로토콜을 사용하면 장치별로 반복 속도를 설정할 수도 있지만 xset
.
물론, 귀하의 창 관리자/데스크톱 환경은 자체적으로 해당 이벤트를 수신하고 귀하의 설정을 무시할 수 있습니다.
답변2
두 시스템 간에 키보드를 공유하기 위해 USB 스위치를 사용하여 동일한 문제가 발생했습니다. Debian/Ubuntu 파생 시스템인 Pop!_OS 20.04 LTS 시스템으로 다시 전환하면 설정이 사라집니다. 나는 gnome-tweak
.Caps LockCtrl
이것이 나에게 계속 작용하는 설정입니다. gnome-tweak
문제를 해결하기 위해 계속 실행할 필요가 없도록 원하는 대로 설정하는 이 명령줄 방법을 찾았습니다 .
dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:ctrl_modifier']"
매뉴얼 페이지xkeyboard-config
xkb-options
간단한 설명과 함께 허용되는 값 목록이 있습니다 .
문제가 발생하지 않도록 하는 방법은 모르겠지만 이제 명령줄에서 문제를 해결할 수 있으므로 덜 짜증스럽습니다.