「等級」.Xmodmapを書くにはどうすればよいですか?

「等級」.Xmodmapを書くにはどうすればよいですか?

現在私はm​​yを次に.Xmodmap変更するファイルを持っています(私はMacでLinuxを実行しています)。CommandCtrlCtrlSuper

うまく動作し、一度だけ実行すると(たとえば、デスクトップ環境(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

ベストアンサー1

モードを適用する前に、地図を元の状態にリセットしてください。完全にリセットするには時間がかかるので、私が考えることができる最善は差別化です。

このコードは、存在しない.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

(編集:まとめ)

おすすめ記事