
저는 키보드 매핑과 관련 항목이 Linux에서 통합되는 방식을 이해하는 데 항상 어려움을 겪었습니다.
문제가 생기면 끝없이 오래된 메일링 리스트와 포럼 게시물을 뒤져 찾아야만 하면 피가 끓어오르게 됩니다.저것내 문제를 해결하는 하나의 명령 또는 inputrc 줄.
Ctrl
vim에서 백스페이스가 작동하지 않거나 터미널 유형을 전환할 때까지 bash에서 + 화살표와 같은 고전적인 문제가 있습니다 . 아니면 최근 데비안 설치 @
키가 실제로 인쇄 "
되고 "
인쇄되는 문제가 발생했습니다 @
(잘못된 키보드 레이아웃?)
파일과 도구만 보는 것만으로는 그다지 도움이 되지 않습니다. 입력RC? xmodmap? setxkbmap? 콘솔 설정? 실제로 어디서부터 시작해야 할까요?이해하다키보드 문제를 해결하기 위해 다른 사람의 모호한 명령을 시도할 필요가 없도록 어떻게 작동합니까?
답변1
이것은 예상보다 훨씬 더 복잡하지만 여기에 제가 찌르는 것이 있습니다.
가장 기본적인 수준에서 커널은 키보드 장치를 인식하는 방법을 알고 있으며 키보드 장치의 개념을 이해합니다.콘솔 키맵. 이는 키보드를 구성하는 가장 간단한 방법이며 고려해야 할 변수는 하나뿐이지만 이러한 설정은 Linux 텍스트 콘솔의 키보드 입력에만 영향을 미칩니다.
Xorg에 들어가면 상황이 좀 더 복잡해지지만 실제로는 어느 정도 의미가 있습니다. Xorg에는 이해하는 데 매우 중요한 몇 가지 구체적인 개념이 있습니다.
- Xorg는 커널을 우회하고 콘솔에 지정된 키맵을 무시하면서 키보드 장치와 직접 통신합니다.
- Xorg를 사용하면 xorg.conf 파일에서 키보드에 대한 일부 특정 옵션을 설정할 수 있지만 현재 Linux 배포판은 xorg.conf 파일 없이 실행하려고 최선을 다하고 있습니다. Xorg 버전에 따라 섹션
InputClass
(최신 버전의 Xorg) 또는InputDevice
섹션(이전 릴리스) 내부에 XkbLayout을 지정해야 할 수도 있습니다. - 키를 누를 때 Xorg에는 여러 특정 해석 계층이 있습니다.
- 가장 기본적인 수준에서 각 키 누르기 이벤트는 숫자 키코드로 표시됩니다.
- XkbLayout과 결합된 XkbModel은 주어진 키코드를 실제 키 이벤트와 연결하는 데 사용됩니다. 예를 들어, 내 키보드에서 키코드 50은
Shift_L
. - 선택적으로 키보드에 대해 여러 XkbLayout을 지정한 다음
XkbOptions
(전체 목록은 일반적으로 에 저장됨/usr/share/X11/xkb/rules
)을 사용하여 레이아웃 전환 방법을 구성할 수 있습니다. (예를 들어 드보락을 독학하려고 하거나 영어와 러시아어 키보드 레이아웃을 번갈아 사용하려는 경우에 유용합니다.) - 각 키코드는 어떤 수정자를 누르고 있는지에 따라 다양한 방식으로 해석될 수 있습니다.
xmodmap
어떤 수정자가 유지되고 있는지에 따라 어떤 주요 이벤트가 전송되는지 확인할 수 있습니다.
답변2
요즘에는 콘솔과 X가 실제로 함께 작동할 수 있습니다.
이것이 아직 완전히 표준화되었는지는 모르겠지만 Debian Unstable(아마도 최신 Xorg 및 콘솔 도구를 갖춘 다른 배포판)에서는 /etc/default/keyboard
X 스타일 구문을 사용하여 콘솔과 X에서 키보드를 설정할 수 있습니다. 최소한 console-tools 및 console-setup을 사용하는 경우에는 그렇습니다. 나머지는 설명대로입니다.
답변3
vim에서 백스페이스가 작동하지 않는 것과 같은 고전적인 문제가 있습니다.
아마도 현재 버전에서 입력한 문자만 백스페이스로 삭제하고 편집 모드에 들어가기 전에 이미 존재하는 문자는 삭제하지 못하도록 하는 vim의 동작에 대해 이야기하고 있는 것 같습니다.
해당 동작은 다음을 설정하여 변경됩니다.
set backspace=indent,eol,start