XKB 확장이 어떻게 작동하는지 이해하기 위해 데비안에서 키보드 레이아웃을 구성하고 있습니다. 사용자 정의 키보드 레이아웃을 로드하려고 하는데 왜 그래픽 환경에서는 작동하지 않지만 가상 콘솔에서는 작동하는지 잘 모르겠습니다.
/usr/share/X11/xkb/symbols/foobar
에 있는 파일을 기반으로 에 새 키보드 레이아웃 파일을 만들었습니다 /usr/share/X11/xkb/symbols/us
. 관련 부분은 다음과 같습니다.
default partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {
name[Group1]= "English (US)";
key <TLDE> { [ grave, asciitilde ] };
// key <AE01> { [ 1, exclam ] };
key <AE01> { [ a, A ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
// ...
<AE01
(단일 키) 라고 표시된 키가 기호에서 1
및 exclam
로 변경된 것을 볼 수 있습니다 a
.A
다음과 같이 파일을 편집하여 사용자 정의 foobar
레이아웃을 사용하도록 시스템을 구성했습니다 ./etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
# XKBLAYOUT="us"
XKBLAYOUT="foobar"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps,altwin:menu_win"
BACKSPACE="guess"
시스템을 그래픽 데스크탑 환경으로 부팅하고 키를 누르면 다음 1
과 같이 나타날 것으로 예상했지만 a
여전히 작동하지 않습니다 1
.
이상한 점은 키보드 단축키를 사용하여 가상 콘솔로 전환하면 Ctrl + Alt + F1
변경 사항이 적용되고 1
키를 누르면 a
.
또한 다음 명령을 사용하면 localectl
변경 사항이 적용된 것처럼 보입니다 .
$ localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: n/a
X11 Layout: foobar
X11 Model: pc105
X11 Options: ctrl:nocaps,altwin:menu_win
내 사용자 정의 레이아웃이 foobar
그래픽 환경에서 작동하지 않는 이유는 무엇입니까?
나는 systemd 장치의 우여곡절을 검색해 보았고 keyboard-setup.service
다음 스크립트가 호출되는 것을 발견했습니다.
/lib/console-setup/keyboard-setup.sh
/usr/bin/setupcon
내 레이아웃이 명령에 출력 foobar
되지 않는 것으로 나타났습니다 .localectl list-x11-keymap-layouts
매뉴얼 페이지는 localectl
다음 구성 가이드를 가리킵니다.
https://www.x.org/releases/current/doc/xorg-docs/input/XKB-Config.html
더 이상 레이아웃을 사용해서는 안 된다고 언급되어 있습니다.
키맵 구성은 이전에 xkb를 구성한 방식입니다. 사용자는 직접 xkb 구성을 지정하는 특수 키맵 파일을 포함하고 있습니다. 이 방법은 더 유연하고 더 간단하고 직관적인 구문을 허용하는 이전에 설명한 규칙 파일로 대체되었습니다. 호환성을 위해서만 유지되며 가능하면 사용하지 않는 것이 좋습니다.
그래도 다음을 /etc/X11/xorg.conf.d/90-foobar-kdb.conf
사용하여 파일을 채우려고 했습니다.
Section "InputClass"
Identifier "keyboard defaults"
MatchIsKeyboard "on"
Option "XkbModel" "pc105"
Option "XkbLayout" "foobar"
Option "XKbOptions" ""
EndSection
시스템을 다시 시작한 후 XKbOptions
옵션을 선택 취소했지만 여전히 foobar 지도를 로드하는 데 성공하지 못했습니다. 그래서 저는 X11에서 사용자 정의 레이아웃을 로드하는 방법에 대해 여전히 혼란스럽습니다.