it-swarm-ko.tech

Linux에서 키보드 매핑은 어떻게 작동합니까?

나는 항상 키보드 매핑과 관련된 것들을 Linux에서 조합하는 방식을 이해하는 데 어려움을 겪었습니다.

일이 깨졌을 때 끝없이 구식 메일 링리스트와 포럼 게시물을 샅샅이 뒤져서 THAT 내 문제를 해결하는 하나의 명령 또는 입력 문제.

Vim에서 백 스페이스가 작동하지 않거나 터미널 유형을 전환 할 때까지 bash에서 Ctrl + 화살표와 같은 고전적인 문제가 있습니다. 또는 최근 데비안 설치에서 @ 키가 실제로 "를 인쇄하고 "@를 인쇄하는 문제 (잘못된 키보드 레이아웃?)

파일과 도구를 보는 것만으로는 큰 도움이되지 않습니다. inputrc? xmodmap? setxkbmap? 콘솔 설정? 실제로 어디서 시작합니까? 이해 어떻게 작동하므로 키보드 문제를 해결하기 위해 누군가의 모호한 명령을 시도 할 필요가 없습니다.

18
Alex B

이것은 당연한 것보다 훨씬 더 복잡하지만 여기에 내 찌르기가 있습니다.

가장 기본적인 수준에서 커널은 키보드 장치를 인식하는 방법을 알고 있으며 console keymap 의 개념을 이해합니다. 이것은 키보드를 구성하는 가장 간단한 방법이며 고려해야 할 변수는 하나 뿐이지 만 이러한 설정은 Linux 텍스트 콘솔의 키보드 입력에만 영향을줍니다.

Xorg에 들어가면 상황이 조금 더 복잡해 지지만 실제로는 일종의 의미가 있습니다. Xorg에는 이해하는 데 매우 중요한 몇 가지 특정 개념이 있습니다.

  • Xorg는 커널을 우회하고 콘솔에 지정된 키맵을 무시하고 키보드 장치와 직접 대화합니다.
  • Xorg를 사용하면 xorg.conf 파일에서 키보드에 대한 특정 옵션을 설정할 수 있지만 현재 Linux 배포판은 xorg.conf 파일없이 실행하기 위해 최선을 다하고 있습니다. Xorg 버전에 따라 InputClass 섹션 (Xorg 최신 버전의 경우) 또는 InputDevice 섹션 (이전 릴리스의 경우) 내에 XkbLayout을 지정해야 할 수 있습니다.
  • 키를 눌렀을 때 Xorg에는 몇 가지 구체적인 해석 레이어가 있습니다.
    1. 가장 기본적인 수준에서 각 키 누르기 이벤트는 숫자 키 코드로 표시됩니다.
    2. XkbLayout과 결합 된 XkbModel은 주어진 키 코드를 실제 키 이벤트와 연관시키는 데 사용됩니다. 예를 들어, 키보드에서 키 코드 50은 Shift_L를 생성합니다.
    3. 선택적으로 키보드에 여러 XkbLayouts를 지정한 다음 XkbOptions (일반적으로 /usr/share/X11/xkb/rules에 저장되는 전체 목록)을 사용하여 레이아웃 전환 방법을 구성 할 수 있습니다. (예를 들어 Dvorak을 스스로 가르치려고하거나 영어와 러시아어 키보드 레이아웃을 번갈아 사용하려는 경우 유용합니다.).
    4. 각 키코 드는 보유중인 수정 자에 따라 여러 가지 방식으로 해석 될 수 있습니다. xmodmap을 사용하면 보유중인 수정자를 기반으로 전송 될 주요 이벤트를 확인할 수 있습니다.
14
clee

요즘 콘솔과 X는 실제로 함께 작동 할 수 있습니다.

이것이 아직 완전히 표준화되었는지는 모르겠지만 Debian Unstable (그리고 아마도 최신 Xorg 및 콘솔 도구가있는 다른 배포판)에서는 /etc/default/keyboard를 사용하면 X 스타일 구문을 사용하여 콘솔과 X에서 키보드를 설정할 수 있습니다. 최소한 console-tools 및 console-setup을 사용하는 경우에는 말입니다. 나머지는 설명대로입니다.

3
KellyClowers

Vim에서 작동하지 않는 백 스페이스와 같은 고전적인 문제가 있습니다.

아마도 현재 에디션에서 입력 한 문자 만 백 스페이스로 삭제하고 편집 모드로 들어가기 전에 이미 존재하는 문자로 삭제하는 것을 방지하는 vim의 동작에 대해 이야기하고있을 것입니다.

해당 동작은 다음을 설정하여 변경됩니다.

set backspace=indent,eol,start
0
nozimica