
나는 그것을 추가함으로써 그것을 깨닫는다.
setxkbmap xxx
X 서버에서 키보드 레이아웃을 변경할 수 있습니다. 로그아웃/재부팅 이후에는 유지되지 않으므로 $HOME/.profile
다음과 같이 로그인할 때 사용할 수 있도록 이 줄을 추가할 수 있습니다.이 질문설명합니다.
하지만 이렇게 하면 로그인하기 전에 키보드 레이아웃을 여전히 사용할 수 없습니다. 현 단계에서 사용하고 싶다면 어떻게 해야 할까요? Centos7에서 GDM을 사용하고 있습니다.
내가 시도한 것:
라는 새 키보드 레이아웃을 정의
symmetri
하고 아래에 넣습니다/usr/share/X11/xkb/symbols/
. 테스트하려면 다운로드할 수 있습니다.여기.참고: X11 서버에 대한 레이아웃만 정의했으며 아직 가상 콘솔에 대해서는 정의하지 않았습니다.어쩌면 그것이 내가 그것을locatectl list-keymaps
, alsoloadkeys
, 또는 touch 로 나열할 수 없는 이유일 것입니다/etc/vconsole.conf
.setxkbmap symmetri
그것을 사용하기 위해. 변경사항이 적용되었습니다./etc/profile.d/symmetri.sh
사용자 프로필에 사용하려면 입력하세요 .로그아웃하고 로그인하려고 하면 작동이 중지되고 QWERTY가 표시됩니다.
QWERTY로 로그인한 다음 지금은 Symmetri를 사용합니다. 로그인에 성공하면 스크립트가 소싱되기 때문입니다.
us
터미널을 열고 다음 으로 다시 전환합니다setxkbmap us
.
그런 다음,
localectl set-x11-keymap symmetri
이번에는 레이아웃이 전환되지 않습니다. localectl set-keymap symmetri
어느 것도 아니다.
답변1
당신이 사용할 수있는
localectl set-x11-keymap ***
이는 콘솔과 데스크탑에 영구적으로 적용됩니다. 자세한 구성은 매뉴얼 페이지에서 확인할 수 있습니다.https://www.unix.com/man-page/centos/1/LOCALECTL/
답변2
@terdon 귀하의 솔루션이 작동하지 않지만 도와주셔서 감사합니다. 더 많은 것을 배웠습니다. 처음에는 Gnome과 관련이 있지 않을까 하는 의심도 들었으나 알고 보니 X11뿐이었습니다. 그리고 @TimBrandrick, 귀하의 솔루션은 대부분의 경우에 작동해야 하지만 제 경우에는 키보드 레이아웃을 에 추가하기 전이 아닙니다 .../X11/xkb/rules/evdev.xml
(그리고 .../X11/xkb/rules/evdev.lst
일부 소스에 따르면 lst
파일은 의 컴파일된 버전 xml
이지만 이 파일에 의존하는 모든 프로세스가 파일을 읽기만 하는지 의심스럽습니다 xml
. 그래서 두 가지를 모두 추가했습니다. 실제로 는 xml
에 비해 더 많은 정보가 있지만 이해하기 쉽습니다.lst
lst
그래서 제가 한 방법은 다음과 같습니다.
1. 을 엽니다 .../X11/xkb/rules/evdev.xml
.
(배포판마다 다르기 때문에 앞 부분은 생략합니다. CentOS 7에서는 under 이고 Ubuntu <= 8.08에서는 under . 1/usr/share/
Strange 입니다 .)/etc/
2. 의 하위 노드 끝에 <layoutList>
다음 부분을 추가합니다.
(필요에 따라 변경하세요. 이는 단지 템플릿일 뿐입니다)
<layout>
<configItem>
<name>symmetri</name>
<shortDescription>symmetri</shortDescription>
<description>Symmetri (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>non-prog</name>
<shortDescription>non-prog</shortDescription>
<description>Symmetri for non-programmer (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
</variant>
</variantList>
</layout>
키보드 레이아웃에 변형이 없으면 <variantList>
다음과 같이 부분이 자동으로 닫힐 수 있습니다 <variantList />
.
참고: iso639Id
ISO 639-1 또는 639-2 표준과 호환되는 값을 가져야 합니다. 1 전체 표는 참조 1에도 나와 있습니다. 그리고 로케일 설정과 일치해야 합니다. 저는 English(U.S)
시스템 언어로 설정했으므로 us
여기에 입력합니다.
3. 저장하고 엽니다 .../X11/xkb/rules/evdev.lst
.
4. 끝에 ! layout
레이아웃 이름을 추가합니다. 좋다:
symmetri Symmetri layout (CN, EN and ES)
5. 키보드 레이아웃에 변형이 있는 경우 끝에 변형 ! variant
도 추가합니다.
non-prog symmetri: non-programmer
변형 이름은 위의 xml 파일 정보와 일치해야 합니다. (내가 테스트할 때 localectl list-x11-keymap-variants
,오직XML을 읽는 대신 이 파일을 읽으면 오류/버그가 발생합니다.)
base.xml
6. 및 에도 동일하게 수행할 수 있지만 base.lst
제가 먼저 했더니 작동하지 않습니다.
7. 다음을 사용하여 키보드 레이아웃을 설정합니다.
setxkbmap symmetri
또는 변형을 설정하려면 다음을 사용하십시오.
setxkbmap symmetri -variant non-prog
localectl
list-x11-keymap-layouts
및 을 사용할 수 list-x11-keymap-variants
있지만 변형을 설정할 수는 없습니다. 오직 setxkbmap
할 수 있습니다.
이제 이 설정으로재부팅 후 및 처음 로그인 전, 새로운 키보드 레이아웃이 생겼습니다(변형은 지속되지 않지만!! 기본 레이아웃만 됩니다!$HOME/.bashrc
) 그러나 일단 성공적으로 로그인하면 데스크톱 관리자가 인계받게 되며, / $HOME/.profile
(단일 사용자용)/ /etc/profile.d/xxx.sh
/ /etc/profile
(모든 사용자용) 파일 에서 새 키보드 레이아웃을 구성하지 않으면~ 아니다로그아웃하고 다시 로그인하면 새로운 키보드 레이아웃을 얻을 수 있습니다!!!! 따라서 이러한 변경 사항은오직.bashrc
첫 번째 성공적인 로그인 전에 지속됩니다. X 서버에 "로그인 전뿐만 아니라 로그인 후에도 모든 사용자에게 적용하고 싶습니다!"라고 알리려면 스크립트를 사용하거나 프로파일링해야 합니다 . 주의: 이번 변경으로 인해 로그아웃하고 사용자를 변경하더라도 레이아웃은 변경된 레이아웃이 됩니다 qwerty(us)
.
정말 답답합니다.... 더 쉬운 방법이 있을 것 같은데 찾을 수 없습니다.
참고자료:(반드시 읽어야 함)