GUI 없이 CentOS 7을 사용하고 있습니다. 사용자 정의 키보드 레이아웃을 생성하고 이를 기본 키보드 레이아웃으로 영구적으로 사용하는 방법은 무엇입니까? 어떤 파일을 편집해야 합니까?
편집하다:
파일을 편집하고 재부팅하여 키맵을 설정하고 GUI에서 작동하게 할 수 있지만 /usr/share/X11/xkb/symbols
터미널에는 영향을 미치지 않습니다(적어도 Ctrl+Alt+F5
. 내 레이아웃을 사용합니다.
/lib/kbd/keymaps/legacy/i386/xxx/
키맵 파일을 as 아래에 넣었 xxx.map.gz
더니 실제로 로드가 잘 loadkeys
되고 실행하면 다음과 같은 localectl
내용이 표시됩니다.
# localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: xxx
X11 Layout: us
하지만 Ctrl+Alt+F5로 연 터미널에서는 키보드 레이아웃이 오래되었습니다.
답변1
기존 구성으로 시작:
- 현재 키보드 레이아웃은 를 사용하여 덤프할 수 있습니다
dumpkeys
. - 일반적으로 다른 기본 레이아웃이 위치합니다./lib/kbd/키맵디렉토리는 gzip 압축 파일로, 해당 내용을 사용
zcat
하거나 쉽게 액세스할 수 있습니다.zless
특정 키보드 키에 대한 코드를 얻으려면 를 사용하십시오 showkey
.
키보드 레이아웃 파일을 수동으로 로드하려면 를 사용하십시오 loadkeys
. 사용자 정의 파일의 경로를 인수로 허용합니다.
결과가 만족스러우면 기본적으로 사용할 새 레이아웃의 이름을 설정할 수 있습니다./etc/vconsole.conf:
KEYMAP="your-layout"
답변2
허용된 답변에 몇 가지 세부 정보를 추가하기 위해 제가 본 내용과 이를 작동시키기 위해 수행한 작업이 있습니다. 이러한 내용을 발견하면 더 많은 트릭과 비틀기를 추가하겠습니다.
을 사용하면 sudo dumpkeys
다음과 같은 결과가 출력됩니다.
keycode 12 = minus
shift keycode 12 = underscore
shift altgr keycode 12 = underscore
control keycode 12 = Control_underscore
shift control keycode 12 = Control_underscore
altgr control keycode 12 = Control_underscore
shift altgr control keycode 12 = Control_underscore
alt keycode 12 = Meta_minus
...
그리고 아래의 키맵 파일을 열면 /lib/kbd/keymaps/xkb/
행에 여러 개의(때로는 너무 많은) 열이 있는 것을 볼 수 있습니다. 예를 들면 다음과 같습니다.
keycode 12 = U+002d U+005f U+002d U+005f Control_underscore Control_underscore Control_underscore ...
keymaps
: ( )의 매뉴얼 페이지 에 따르면 man 5 keymaps
다음과 같습니다.
키를 눌렀을 때 해당 키에 바인딩된 작업이 수행되는 것은 당시 적용되는 수정자에 따라 다릅니다. 키보드 드라이버는 9개의 수정자를 지원합니다. 이러한 수정자는 (완전히 임의적) Shift, AltGr, Control, Alt, ShiftL, ShiftR및 CtrlL로 표시됩니다 CtrlR. CapsShift각 수정자는 다음 표에 따라 관련 power-2 가중치를 갖습니다.
modifier weight
Shift 1
AltGr 2
Control 4
Alt 8
ShiftL 16
ShiftR 32
CtrlL 64
CtrlR 128
CapsShift 256
키에 대한 유효한 작업은 모든 유효한 수정자의 가중치를 추가하여 찾습니다. 기본적으로 수정자는 적용되지 않으므로 키를 누르거나 놓을 때 키 정의 행의 첫 번째 열에 있는 작업인 작업 번호 0이 수행됩니다. 예를 들어, 작업 번호 9(열 10에서 시작)는 Shift 및 Alt 수정자 키가 유효한 경우 유효합니다.
수정자의 활성 상태는 적절한 키 입력을 원하는 키에 바인딩하여 변경할 수 있습니다. 예를 들어 Shift 기호를 키에 바인딩하면 해당 키를 누를 때 Shift 수정자가 적용되도록 설정하고 키를 놓으면 수정자의 효과가 취소됩니다. AltGr_Lock을 키에 바인딩하면 AltGr이 키를 누를 때 적용되고 키를 다시 누르면 효과가 취소되도록 설정됩니다. (Shift, AltGr, Control 및 Alt는 기본적으로 비슷한 레이블이 지정된 키에 바인딩되어 있습니다. AltGr은 올바른 Alt 키를 나타낼 수 있습니다.)
우리는 U+002d
is Hyphen-Minus
와 U+005f
is 를 알고 low-line
있으므로 이제 명확하게 볼 수 있습니다. 키맵 파일의 각 줄은 키 자체입니다. Shift+key, Shift+altgr+key...눌렀을 때의 키 코드와 keysys 문자 출력입니다. 주문하다.
(표를 잊어버린 경우 표를 사용하여 dumpkeys --long-info
표시할 수 있습니다.)
그들은 서로 대응합니다:첫 번째 부분의 행은 두 번째 부분의 열에 해당합니다..
표로 보면 가장 잘 보입니다:
+----------+------------------------+----------------------------+
| | | |
| col. | key to press(+ keycode)| chars to produce (keysys) |
| | | |
+----------------------------------------------------------------+
| | | |
| 0 | keycode 12 | minus |
| | | |
+----------------------------------------------------------------+
| | | |
| 1 | shift | underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 2 | altgr | underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 3(1+2) | shift + altgr | underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 4 | ctrl | ctrl + underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 5(4+1) | ctrl + shift | ctrl + underscore |
| | | |
+----------+------------------------+----------------------------+
| | | |
| 6(4+2) | ctrl + alt | ctrl + underscore |
| | | |
+----------+------------------------+----------------------------+