“idempotent”.Xmodmap을 작성하는 방법 번만 실행하지만 연속 실행 (예

현재 내가 가지고 .Xmodmap내 변경 파일 Command에를 Ctrl, 그 다음 나의 변경 Ctrl하기 Super(I 맥에서 리눅스를 실행하는거야).

한 번만 실행하지만 연속 실행 (예 : 데스크탑 환경 (Cinnamon)을 다시 시작하면 .Xmodmap파일을 다시로드 할 때 )이 잘 작동합니다. 기본적으로 변경 사항을 되돌려 설정을 재설정합니다. 원하는 설정과 원래 설정간에 효과적으로 전환합니다.

.Xmodmap설정을 한 번만 설정하고 연속 실행시 다시 변경하지 않는 파일을 작성하려면 어떻게 해야합니까? 내 기존 .Xmodmap파일 은 다음과 같습니다 .

clear control
clear mod4

keycode 105 =
keycode 206 =

keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Control_R NoSymbol Control_R
keycode 37 = Super_L NoSymbol Super_L

add control = Control_L
add control = Control_R



답변

개조를 적용하기 전에 맵을 원래 상태로 재설정하십시오. 완전 리셋은 영원히 걸리므로 내가 생각해 낼 수있는 최선은 디핑입니다.

이 코드는 존재하지 않는 .Xmodmap{.orig,.reset,.mods}경우 .orig현재 상태로 설정된 위치를 사용하고 .reset어디에서나 해당 상태를 복원하도록 계산 합니다. 신청하기 전에 .mods.

#!/bin/sh
# file xmodmap-reset

#     rm ~/.Xmodmap.orig
# beforehand to take current setup as baseline for Xmodmap.mods changes

stem=~/.Xmodmap
orig=${stem}.orig
reset=${stem}.reset
mods=${stem}.mods

# implement -pme like -pke
#
xmodmap-pme () {
  xmodmap -pm \
  | sed '
        1d
        / [^ ]/!d
        s/^[^ ][^ ]*/clear &\nadd & =/
        s/([^ ]*//g
    '
}

# save baseline if none atm
test -a $orig || {
    xmodmap  -pke
    xmodmap-pme
} > $orig

# payload, diff for commands to reset to baseline from current
{
    xmodmap  -pke
    xmodmap-pme
} \
| {
    diff -u0 $orig - \
    | sed -n '
        1,/^@@/d
        s/^[^+]clear/clear/p
        s/^-//p
      '
} > $reset
xmodmap $reset

# finally ready to apply the mods
test -a $mods && xmodmap $mods

(편집 : 정리)


답변

시스템> 환경 설정> 시작 애플리케이션으로 이동하여 추가하십시오 xmodmap ~/.Xmodmap.
xmodmap 명령 추가


답변

나는 아직도 당신이 원하는 것에 대해 약간 혼란 스럽지만, 나는 이것을 생각합니다 :

당신이 당신이를 넣어 경우 ~/.Xmodmap,

clear control
clear mod4

keysym Super_L = Control_L
keysym Control_L = Super_L

add control = Control_L
add control = Control_R
add mod4 = Super_L
add mod4 = Super_R

매번 xmodmap ~/.Xmodmap실행될 때마다 왼쪽 Ctrl과 왼쪽 키 스왑 이 실행 됩니다. 따라서 첫 번째 호출에서 Ctrl키는을 누른 것처럼 작동 하지만 두 번째 호출에서는 Ctrl키로 다시 작동 합니다.


답변