`xmodmap`이 시작 시 작동하지 않습니다

`xmodmap`이 시작 시 작동하지 않습니다

나는 최근에 Debian 9를 설치하고 평소에 사용하던 ~/.Xmodmap파일을 연결한 다음 이를 xmodmap ~/.Xmodmap.xsession.

참고로 DM i3없이 달리고 있습니다 startx.

명령이 성공적 으로 실행 되었는지 테스트하기 위해 내 명령을 .xsession.touch ~/prior && xmodmap ~/.Xmodmap && touch ~/postxmodmapsetxkbmap

해결책을 검색했지만 답변이 없는 질문, 나에게 도움이 되지 않는 오래된 답변이 있는 질문, 실제 해결책이 포함되지 않은 질문만 찾았습니다.

답변1

이 동작에 대한 이유는 다음에서 간접적으로 문서화되어 있습니다 man keyboard.

설명하다

키보드 파일은 키보드의 속성을 설명합니다. 그 독자는세트콘(1)콘솔에서 키보드를 구성하려면. Debian 시스템에서 기본 키보드 레이아웃은 /etc/default/keyboard에 설명되어 있습니다.X와 콘솔 간에 공유됩니다.

/etc/default/keyboard시스템이 설치되고 실제 문제가 발생했을 때의 내용이 생성되었습니다( ctrl:nocaps나중에 옵션을 추가했습니다).

XKBMODEL="pc105"
XKBLAYOUT="se"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"

위의 내용은 X가 시작 중 특정 시점(아마도 이후 등)에 xkb 옵션을 설정하여 그 동안 설정된 모든 설정이 손실된다는 것을 나타 .xsession냅니다 .xmodmap.xsession

그러면 이유가 나오고 해결책은 다음과 같습니다 man setupcon.

키보드 구성은 ~/.keyboard 또는 /etc/default/keyboard에 지정됩니다. 이것글꼴 구성 ~/.console-setup에 지정하거나/etc/default/콘솔 설정.

수확량 확인 man console-setup:

console-setup 파일은 setupcon(1)이 콘솔을 설정하는 데 사용하는 인코딩과 글꼴을 지정합니다. 키보드 레이아웃을 지정하는 데에도 사용할 수 있습니다.이는 권장되지 않습니다. 대신 키보드(5)를 사용하십시오.

따라서 /etc/default/keyboardTTY 및 X 설정을 위한 키보드 설정입니다. While은 /etc/default/console-setup콘솔의 키보드(실제로 권장하지는 않지만 작동함)와 글꼴을 설정하는 데 사용할 수 있습니다.

그래서 이 모든 작업을 수행하기 위해 다음을 /etc/default/keyboard 추가했습니다 ./etc/default/console-setup.xsession

#!/bin/bash
# The below assumes bash features, rewrite if you use other shells.
source /etc/default/console-setup

XKBPARMS=""
if [[ "$XKBLAYOUT" ]]; then
   XKBPARMS="-layout $XKBLAYOUT"
fi

if [[ "$XKBMODEL" ]]; then
    XKBPARMS+=" -model $XKBMODEL"
fi

if [[ "$XKBVARIANT" ]]; then
    XKBPARMS+=" -variant $XKBVARIANT"
fi

if [[ "$XKBOPTIONS" ]]; then
    XKBPARMS+=" -option $XKBOPTIONS"
fi

if [[ "$XKBPARMS" ]]; then
    setxkbmap $XKBPARMS
fi

xmodmap ~/.Xmodmap

이제 잘 작동합니다 xmodmap. TTY와 X 모두에 올바른 키맵과 옵션이 있습니다.

답변2

또한 -type 솔루션에도 문제가 있었기 xmodmap때문에 조사한 후에 그냥 사용하기로 결정했습니다 xkb. 나도 찾았어xmodmapArchwiki는 "가장 쉬운" 작업을 권장하지 않습니다.:

일반적으로 가장 간단한 작업을 제외하고는 xmodmap을 사용하지 않는 것이 좋습니다. xmodmap과 동등한 XKB 호환은 xkbcomp입니다. 그러나 xkbcomp에는 -e 옵션이 없으므로 상황이 그렇게 간단하지 않습니다. 그럼에도 불구하고 가능할 때마다 xkbcomp를 선호해야 합니다.

다음 솔루션이 저에게 효과적이었습니다 (Ubuntu 16.04에서).

불행히도 이는 TTY와 TTY에 대한 두 가지 별도 솔루션을 추적하는 것을 의미 X하지만 지금까지는 좋다고 생각합니다.

하지만 xmodmap이미 효과적인 솔루션이 있다면 그게 전부입니다!

관련 정보