Ubuntu 16.04에서 키를 지속적으로 다시 매핑하려면 어떻게해야합니까?


23

이것은 현재 세션에서 작동합니다.

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

그런 다음이 구성 파일을 만들었습니다.

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

그러나 재부팅 후에는 작동하지 않습니다. 재 맵핑이 재부팅 후에도 강제로 다시 사용하려면 어떻게해야합니까?


xkb여기에 askubuntu.com/a/960097/554991을 사용하여 답변했습니다 .
danwild

답변:


15

16.04를 조금 사용했는데 데스크탑 관리자로 sddm을 사용하는 것 같습니다. 그 전에는 LightDM과 GDM이었습니다. 이전 모델 모두 ~/.Xmodmap자동으로 로드되도록 문서화 되었지만 sddm이 명시 적으로 말하는 것을 찾을 수 없습니다.

따라서 새 스크립트를 사용하여 강제로로드하는 것이 좋습니다. 당신은 실행해야 xmodmap ~/.Xmodmap하고 여러 가지 방법으로 할 수 있습니다 :

  • 그래픽 시작 도구 를 통해 추가
  • 편집 ~/.xinitrc하여 실행하십시오.
  • 에 새로운 .desktop설정 추가~/.config/autostart/

이 작업을 관리하는 다른 방법은 수십 가지가있을 것입니다. 본질적으로 같은 일을합니다.


2
팁 고마워! 시작에 추가가 작동하지 않고 ~ / .xinitrc가 종료되지 않습니다. 그러나 ~ / .bashrc에 "xmodmap ~ / .Xmodmap"을 추가했습니다! :)
Costales

1
그래픽 시작 도구를 통해 추가하면 (에서 새 항목이 ~/.config/autostart생성됨) 약 절반의 시간이 걸립니다. 나는 지금 약 10 번 재부팅했고 명령은 5 번, 다른 명령은 5 번 재부팅하지 않았습니다. :-(
Alexander Rechsteiner 2016 년

1
@Alexander Rechsteiner : 이것은 우분투 16.04의 문제인 것 같습니다. 시작 명령과 키 다시 매핑을 사용하고 있었으며 동작이 매우 일치하지 않는 것 같습니다. 나는 이런 종류의 일에 전문가가 아니지만, 그것이 일어나기 위해 완전히 어리석은 것 같습니다 ...
nicorellius

6

/etc/X11/Xsession.d/80_xmodmap이 내용 으로 파일 을 추가했습니다 .

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

이것은 매번 작동합니다.


그것은 작동하는 것처럼 보이지만 이것은 .xsessions-errors에 나타나는 메시지입니다. .Xmodmap : 1 : 수정 자 목록 'Caps_Lock'에서 잘못된 keysym이 있습니다. 해당하는 키 코드가 없습니다. 9 = 이스케이프 키 코드 66 = 이스케이프
MaikoID

4

gnome-session-properties를여십시오. 명령과 이름을 추가하십시오. ~ / .config / autostart에 데스크탑 파일이 생성됩니다.

remenber : 절대 경로를 사용하십시오 ( 예 : /home/xxx/.Xmodmap). '~'를 홈 디렉토리로 사용하지 마십시오.


2

우분투에서 키 다시 매핑에 대한 오랜 경험에서 영구적 인 해결책은에서 호출 evdev된 파일을 수정하는 것 입니다 /usr/share/X11/xkb/keycodes.

명령 프롬프트에서이 명령을 실행하십시오.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

gedit는 Ubuntu 텍스트 편집기이므로 gedit 대신 nano 또는 vim을 사용할 수 있습니다.

파일 형식은 ALIAS : CODE입니다. 다른 키 코드를 교환하여 버튼을 교환 할 수 있습니다. 예를 들어, RCONTROL을 RETURN으로 바꾸려면 evdev에서 두 줄을 다음과 같이 편집하십시오.

<RTRN> = 105;

<RCTL> = 36;

버튼의 숫자 코드를 알고 xev터미널에서 실행 하십시오.

자세한 내용은 설명서를 참조하십시오. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf


1

로 이동

/usr/share/X11/xkb/symbols

편집기에서 sudo 권한으로 편집 할 레이아웃을 엽니 다. 값을 바꾸십시오.

재부팅 후 변경 사항이 적용됩니다.


다음은 키보드 하드웨어 문제로 인해 키패드를 다시 매핑하는 데 사용하는 예입니다.

키패드 재 맵핑 예


2
다음에 해당 파일을 소유 한 패키지를 업그레이드 할 때 해당 편집 내용을 덮어 씁니다.
muru

그것은 사실 일지 모르지만, 나는 이것들이 매우 자주 업데이트되는 것을 의심합니다. 문제를 해결 한 이후 몇 달 동안이 솔루션에 만족했으며 한 번도 추가 작업을 수행하지 않아도됩니다. 이를 방지하기 위해 파일을 저장하고 이러한 이벤트의 경우 파일을 교체하거나 프로세스가 더 안전 해 보일 수 있습니다.
quaeched

1

Google에서 검색 한 후 랩톱의 잘못된 키 다시 매핑을 해결할 수있었습니다. 다시 매핑 한 후 Thinkpad T400의 모든 잘못된 키가 제대로 작동합니다. 또한 CPU 코어에 추가로드없이 영구적입니다.

  • 먼저 아래 명령을 사용하여 키보드 레이아웃 또는 키 코드를 찾으십시오.

    xevv -event keyboard 
    
  • 예를 들어, Thinkpad T400 키 코드에서 다음과 같이 발견되었습니다.

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • 기능 키 "F6" "F10" "F11" "F12"를 할당하여 문자 키 "z" "x" "c" "v"를 다시 매핑합니다.

  • 아래와 같이 행을 수정하십시오 (잘못된 경우 롤백을 쉽게 변경하기 전에 백업 파일).

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • 다음과 같이 행을 찾아서 값을 변경하십시오.

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • 다음 줄을 주석으로 처리하거나 제거하십시오.

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • 저장하고 종료.

  • 특수 키를 다시 매핑합니다.

  • 문제가 발생하면 롤백을 변경하기 전에 파일을 백업하십시오.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • 함수 "xkb_symbols"editing "{"에서 아래 행을 추가하거나 수정하십시오.

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • 저장하고 종료.

  • 캐시를 비 웁니다.

    sudo rm -rf /var/lib/xkb/*
    
  • 재부팅하십시오.


이 기술을 사용하여 깨진 (커서) 화살표 키를 다른 키로 다시 매핑했습니다. 단순히 (xev)이고 새 키를 눌러 스캔 코드를 가져온 다음 / usr / share / X11 / xkb / keycodes / evdev를 편집하여 화살표 키의 원래 키 코드를 새 키 코드로 바꾸고 새 화살표 키의 줄을 원래 키 코드로 제거하십시오 스캔 코드. 나는 어디에서든지 변경하고 파일의 백업을 유지 한 곳을 언급했다. 재부팅 후 새 화살표 키와 Shift / Ctrl / Alt 조합을 포함하여 완벽하게 작동합니다. 또한 패키지 및 OS 버전 업그레이드시에도 변경 사항이 그대로 유지되어야합니다.
Matthew

1

그래픽 편집기

gnome-tweaks > 키보드 및 마우스> 추가 레이아웃 옵션

주요지도


0

.Xmodmap 파일은 xkb보다 편집하기가 훨씬 쉽기 때문에 .Xmodmap을 '소스'파일로 사용한 다음 xkb (현재 표준) 로 변환하고 부팅시 .bashrc 메소드를 사용하여 자동로드합니다.

여기에 게시 된 몇 가지 간단한 단계가 있습니다 .

완벽하게 작동하며 .Xmodmap에 대한 지원이 중단 될 때 xkb 미래 방지 기능을 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.