CentOS 7에서 처음으로 로그인하기 전에 로그인 화면의 키보드 레이아웃을 어떻게 설정합니까?

CentOS 7에서 처음으로 로그인하기 전에 로그인 화면의 키보드 레이아웃을 어떻게 설정합니까?

나는 그것을 추가함으로써 그것을 깨닫는다.

setxkbmap xxx

X 서버에서 키보드 레이아웃을 변경할 수 있습니다. 로그아웃/재부팅 이후에는 유지되지 않으므로 $HOME/.profile다음과 같이 로그인할 때 사용할 수 있도록 이 줄을 추가할 수 있습니다.이 질문설명합니다.

하지만 이렇게 하면 로그인하기 전에 키보드 레이아웃을 여전히 사용할 수 없습니다. 현 단계에서 사용하고 싶다면 어떻게 해야 할까요? Centos7에서 GDM을 사용하고 있습니다.

내가 시도한 것:

  1. 라는 새 키보드 레이아웃을 정의 symmetri하고 아래에 넣습니다 /usr/share/X11/xkb/symbols/. 테스트하려면 다운로드할 수 있습니다.여기.참고: X11 서버에 대한 레이아웃만 정의했으며 아직 가상 콘솔에 대해서는 정의하지 않았습니다.어쩌면 그것이 내가 그것을 locatectl list-keymaps, also loadkeys, 또는 touch 로 나열할 수 없는 이유일 것입니다 /etc/vconsole.conf.

  2. setxkbmap symmetri그것을 사용하기 위해. 변경사항이 적용되었습니다. /etc/profile.d/symmetri.sh사용자 프로필에 사용하려면 입력하세요 .

  3. 로그아웃하고 로그인하려고 하면 작동이 중지되고 QWERTY가 표시됩니다.

  4. QWERTY로 로그인한 다음 지금은 Symmetri를 사용합니다. 로그인에 성공하면 스크립트가 소싱되기 때문입니다.

  5. 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에 비해 더 많은 정보가 있지만 이해하기 쉽습니다.lstlst

그래서 제가 한 방법은 다음과 같습니다.

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 />.

참고: iso639IdISO 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.xml6. 및 에도 동일하게 수행할 수 있지만 base.lst제가 먼저 했더니 작동하지 않습니다.

7. 다음을 사용하여 키보드 레이아웃을 설정합니다.

setxkbmap symmetri

또는 변형을 설정하려면 다음을 사용하십시오.

setxkbmap symmetri -variant non-prog 

localectllist-x11-keymap-layouts및 을 사용할 수 list-x11-keymap-variants있지만 변형을 설정할 수는 없습니다. 오직 setxkbmap할 수 있습니다.

이제 이 설정으로재부팅 후 및 처음 로그인 전, 새로운 키보드 레이아웃이 생겼습니다(변형은 지속되지 않지만!! 기본 레이아웃만 됩니다!$HOME/.bashrc) 그러나 일단 성공적으로 로그인하면 데스크톱 관리자가 인계받게 되며, / $HOME/.profile(단일 사용자용)/ /etc/profile.d/xxx.sh/ /etc/profile(모든 사용자용) 파일 에서 새 키보드 레이아웃을 구성하지 않으면~ 아니다로그아웃하고 다시 로그인하면 새로운 키보드 레이아웃을 얻을 수 있습니다!!!! 따라서 이러한 변경 사항은오직.bashrc첫 번째 성공적인 로그인 전에 지속됩니다. X 서버에 "로그인 전뿐만 아니라 로그인 후에도 모든 사용자에게 적용하고 싶습니다!"라고 알리려면 스크립트를 사용하거나 프로파일링해야 합니다 . 주의: 이번 변경으로 인해 로그아웃하고 사용자를 변경하더라도 레이아웃은 변경된 레이아웃이 됩니다 qwerty(us).

정말 답답합니다.... 더 쉬운 방법이 있을 것 같은데 찾을 수 없습니다.

참고자료:(반드시 읽어야 함)

  1. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11

관련 정보