web-dev-qa-db-ja.com

「べき等」.Xmodmapを作成するにはどうすればよいですか。

現在、自分を変更する.Xmodmapファイルがあります Command に Ctrl、それから私のを変更します Ctrl に Super (私はMacでLinuxを実行しています)。

これは非常にうまく機能します。1回だけ実行すると、連続して実行すると(たとえば、デスクトップ環境(Cinnamon)を再起動すると、.Xmodmapファイルが再ロードされます)、基本的に変更を元に戻して設定をリセットします。希望する設定と元の設定を効果的に切り替えます。

設定を1回だけ設定し、その後の実行では元に戻さない.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
14
coteyr

Modを適用する前に、マップを元の状態にリセットしてください。完全なリセットには永遠に時間がかかるので、私が思いつくことができる最善の方法は違います。

このコードは.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

(編集:クリーンアップ)

7
jthill

[システム]> [環境設定]> [スタートアップアプリケーション]に移動し、xmodmap ~/.Xmodmapを追加します。 add xmodmap command

0
PMint

私はまだあなたが何を望んでいるかについて少し混乱していますが、私はこれを考えています:

これを~/.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 もう一度キーを押します。

0
billyjmc