이것은 중복이 아닙니다X/콘솔에 구애받지 않는 방식으로 콘솔(tty) 및 X에서 키보드 레이아웃/매핑을 변경하시겠습니까?,중 하나전체 시스템 /etc/default/keyboard
논의 중.
사용하려고 합니다사용자별X(예: +LXDE) 및 (커널) 가상 콘솔(VT/TTY)에서 설정이 사용되는 ~/.keyboard
파일 입니다 .xkb
여기에서 볼 수 있듯이, 실행 시 사용자 환경이 보존되면 cat $(which setupcon)
가상 콘솔은 사용자별 파일(또는 그 중 하나)을 선택할 수 있습니다 .~/.keyboard
VARIANT
setupcon
sudo -E setupcon
이는 setupcon
(다소) xkb 기반 ~/.keyboard
설정( XKBMODEL
, 등) XKBLAYOUT
을 XKBOPTIONS
콘솔 키맵 유형( pass ckbcomp
)으로 변환하고 loadkeys
결과를 콘솔로 변환합니다. 이용자의 환경이 보존되지 않는 경우,
sudo setupcon
그런 다음 /etc/default/keyboard
픽업되었습니다.
그러나 내가 아는 한 X는 setxkbmap
시스템 전체 /etc/default/keyboard
파일만 가져옵니다. 사용자별 정보는 ~/.keyboard
수집되지 않습니다.setxkbmap
. 하지만 그것이 바로 나에게 필요한 것입니다. 즉, ~/.keyboard
먹이를 주려고 하는 것이다 setxkbmap
. 이럴 때 할 수 ~/.xsessionrc
있었으면 좋겠어~/.keyboard
setxkbmap
sudo
setxkbmap -option
사용자별 xkb 디렉토리 계층 구조 를 수동으로 생성하여 xkbcomp -I
.~/.keyboard
지금까지 내가 본 유일한 접근 방식은 해킹입니다. 수동으로 구문 분석하고 ~/.keyboard
추출한 XKBOPTIONS
다음 setxkbmap -option
각 메서드에 대해 동등한 메서드를 작성합니다. 나는 이 해킹이 유일한 방법이라고 믿지 않습니다.https://who-t.blogspot.com/2020/02/user-특이적-xkb-configuration-part-1.html이 믿음에 의문을 갖게 만듭니다.
현재 저는 Debian과 X(+ LXDE)를 사용하고 있습니다. 저는 이것이 Wayland에 아무런 영향을 미치지 않을 것이라고 생각하지만 만약 그렇다면 설명해주세요.
답변1
다른 사람에게도 효과가 있다면 위에서 언급한 방법 중 제가 지금 사용하게 되는 방법은 다음과 같습니다.
~/bin/setxkbmap.sh
구문 분석하고 ~/.keyboard
, xkb 설정을 추출하고, X에서 해당 setxkbmap 명령을 실행합니다.
~/bin/setxkbmap.sh
X가 다음과 같은 줄로 시작될 때 수동으로 호출하거나 자동으로 호출할 수 있습니다
~/.xsessionrc
.
~/bin/setxkbmap.sh
:
#!/bin/bash
# Parse ~/.keyboard, extracting the xkb settings, and run equivalent
# setxkbmap command(s) in X.
source ~/.keyboard
setxkbmap_cmd=(setxkbmap -model "${XKBMODEL}")
setxkbmap_cmd+=(-layout "${XKBLAYOUT}")
# Clear previously-set options first; otherwise, these will be
# appended to whatever is already there.
setxkbmap_cmd+=(-option)
# -r : do not allow backslashes to escape any characters
# -a array: assign the words read to sequential indices of the array
# variable ARRAY, starting at zero
IFS=',' read -r -a xkbopts <<< "${XKBOPTIONS}"
for opt in "${xkbopts[@]}"; do
setxkbmap_cmd+=(-option "${opt}")
done
"${setxkbmap_cmd[@]}"
~/.keyboard
:
XKBMODEL="pc105"
XKBLAYOUT="us"
# ctrl: specifies options coming from /usr/share/X11/xkb/symbols/ctrl
# file.
XKBOPTIONS="ctrl:menu_rctrl,ctrl:nocaps,ctrl:swap_rwin_rctl,terminate:ctrl_alt_bksp"
~/.xsessionrc
:
# ~/.xsessionrc is sourced by Xsession (a sh script), everytime an X
# session is started. See 'man xsession' for details.
# Explicitly use bash, as ~/.xsessionrc is called by sh (dash in
# Debian 9 GNU/Linux).
bash ~/bin/setxkbmap.sh