「等級」.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

(編集:まとめ)

答え2

システム>基本設定>アプリケーションの実行に進みますxmodmap ~/.Xmodmapxmodmapコマンドの追加

答え3

私はまだあなたが何をしたいのか少し混乱しています。しかし、私の考えはこれです:

これをに入れると~/.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キーが押されたかのように機能しますが、2番目の呼び出しではCtrlキーのように機能します。

関連情報