Linux에서 콘솔 키맵을 변경하는 방법은 무엇입니까?


36

교환 EscCapsLock콘솔 (X가 아니라 사용 xev) 에서 교환 하고 싶습니다 . 어떻게 할 수 있습니까?

내 OS는 우분투입니다.

답변:


60

도구는에 키보드 레이아웃 조작하는 가상 콘솔 있습니다를 loadkeys, dumpkeys하고 showkey. 그들의 맨 페이지를 읽고 그들의 복잡성에 대해 스스로에게 알리십시오.

이 도구는 그놈과 같은 그래픽 환경의 터미널 에뮬레이터가 아닌 가상 콘솔에서만 작동합니다. 차이점에 대해 배우면이 질문과 답변을 읽으십시오 : https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .

다음은 원하는 것을 수행하기위한 간단한 안내서입니다.

  1. 현재 키보드 레이아웃을 저장하십시오.

    $ dumpkeys > backup.kmap
    

    문제가 발생하면 다음 명령을 사용하여 키맵을 복원 할 수 있습니다.

    $ sudo loadkeys backup.kmap
    

    키보드가 너무 엉망이 되어서도 그렇게 할 수 없다면 고대 커널 마법과 관련이없는 유일한 옵션은 재부팅하는 것입니다.

  2. 키에 할당 된 키 코드를 확인하십시오.

    $ showkey
    

    이제 ESC 키와 CAPSLOCK 키를 누릅니다. 키 코드가 화면에 나타납니다. 키 코드에 유의하십시오. 내 시스템에서 ESC에는 키 코드 1이 있고 CAPSLOCK에는 키 코드 58 showkey이 있습니다. 10 초 동안 사용하지 않으면 종료됩니다 (적어도 내 우분투 10.04에서는 종료됩니다).

  3. 덤프 키에서 ESC 및 CAPSLOCK 키의 이름을 확인하십시오.

    $ dumpkeys | grep 1
    ...
    keycode   1 = Escape
    ...
    $ dumpkeys | grep 58
    ...
    keycode  58 = CtrlL_Lock
    ...
    
  4. dumpkeys의 키맵 행을 참고하십시오.

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. ESC 및 CAPSLOCK을 전환하는 키맵 파일을 작성하십시오.

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. 키맵을로드하십시오.

    $ sudo loadkeys swap_esc_capslock.kmap
    
  7. 테스트 : CAPSLOCK 키 테스트는 명백합니다. CAPSLOCK 키를 누르고 다른 키가 대문자인지 확인하십시오. ESC 키를 테스트하려면 CTRL + V와 ESC를 차례로 사용할 수 있습니다. 인쇄해야합니다 ^[. Ctrl + V를 사용하면 쉘이 해석하지 않고 다음 키를 그대로 인쇄합니다.

재부팅 할 때마다이 수정 내용을로드하려면 /etc/rc.local파일에 다음 줄을 입력하십시오 .

/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap

다음을 포함하지만 이에 국한되지 않는 다양한 페이지에서 수집 된 정보 :


5
sudo setupcon --saverc.local을 편집하지 않고 영구적으로 변경 사항을 작성하는 데 사용할 수도 있습니다 . 그것은 본질적으로 동일합니다dumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz
bukzor

사용하는 것이 안전 /usr/bin/loadkeys/etc/rc.local경로 환경 변수가이 단계에서 설정이 보장되지 않기 때문에. 그리고 sudo에 필요하지 않습니다 rc.local.
August Karlstrom

@AugustKarlstrom in 명령 rc.local은 시스템이 부팅 할 때마다 실행됩니다. @ bukzor의가 sudo setupcon있다 없다rc.local그 어떤 런타임 시작 코드를 추가하지 않고, 시스템 기본 키 맵을 대체 한 시간 설정 명령입니다. 추가 loadkeys 하기 위해 rc.local, 추가 코드 이미 시스템 기본 loadkeys를 수행 한 것을 중복을 시작 추가합니다. 이 rc.local방법은 키맵에 대한 비표준 경로에 의존하기 때문에 실제로 안전하지 않을 수 있습니다.
RobertL

@RobertL setupcon방법을 자세히 설명하십시오 . 원하는 경우 자신의 답변을 추가하거나 광산을 편집하십시오.
lesmana

에 대한 @bukzor의 진술을 확인할 수 없습니다 setupcon. 8 월이 (가)는 가정하게 나타납니다 sudo setupcon --save로 갈 것이라고 rc.local나는 사실 생각하지 않는,하지만 그것을 않는 경우, 당신은 필요가 없습니다 sudorc.local. 답변을 업데이트하기 전에 추가 정보가 필요하다고 생각합니다. 주요 질문은 "부팅 프로세스 중에 자동으로로드되도록 수정 된 키맵을 설치하는 방법"입니다. 어느 것이 더 나은 방법인지, 키 rc.local맵을 설치하는지, 또는 키 맵을 설치해도 효과 가 있는지 모르겠습니다 . 나는 이것을 최근에 연구하고 있으며 여기서 다시 확인할 것입니다.
RobertL

4

두 개의 capslocks 키를 원한다면 'ctrl : swapcaps'대신 'ctrl : nocaps'를 사용하십시오 (다른 이름의 capslock은 여전히 ​​쓸모가 없습니다).

X11은 (참조 : /usr/share/X11/xkb/rules/base.lst)

sudo vim /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm

텍스트 콘솔 : (setupcon에서 도난)

#!/bin/sh
. /etc/default/console-setup 
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
            "$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
            | gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.