web-dev-qa-db-ja.com

altとsuperを入れ替える

Linuxを実行するMacbook Airがあります。キーボードの両側にあるaltキーとsuperキーを入れ替えたいのですが。

CLIツールでこれを行うにはどうすればよいですか?

更新

Drav Sloanの回答に続いて、私は以下を使用しました。

keycode 64 = Alt_L
keycode 133 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

keycode 108 = Alt_R
keycode 134 = Super_R
remove Mod1 = Alt_R
remove Mod4 = Super_R
add Mod1 = Super_R
add Mod4 = Alt_R
28
user24483

これを実現する1つの方法は、xmodmapを使用することです。 xevを実行すると、キーイベントを取得できます。 xevを実行すると、ボックスが表示され、フォーカスを合わせて、入れ替えたいキーを押すことができます。と同様の詳細を出力する必要があります Alt キー:

KeyPress event, serial 28, synthetic NO, window 0x8800001,
  root 0x25, subw 0x0, time 2213877115, (126,91), root:(1639,475),
  state 0x0, keycode 14 (keysym 0xffe9, Alt_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

私はPCを使用していて、「コマンドキー」はありませんが、同等の「Windowsキー」を持っています。

KeyPress event, serial 28, synthetic NO, window 0x8000001,
  root 0x25, subw 0x0, time 2213687746, (111,74), root:(1624,98),
  state 0x0, keycode 93 (keysym 0xffeb, Super_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Xmodmapはstateを認識しておらず、キーマッピングを簡単に解除できるため、次のことをお勧めします。

xmodmap -pke > defaults

次に、xmodmapファイルを作成します。

keycode 14 = Alt_L
keycode 93 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

xevが返したキーコードの使用方法に注意してください。また、ここでは、左のスーパーキーとAltキーだけを置き換えます(そして、正しいキーは以前の動作のままにします)。次に、xmodmapを実行して、これらのキーを設定します。

$ xmodmap -v modmap.file
! modmap:
! 1:  keycode 14 = Alt_L
        keycode 0xe = Alt_L
! 2:  keycode 93 = Super_L
        keycode 0x5d = Super_L
! 3:  remove Mod1 = Alt_L
! Keysym Alt_L (0xffe9) corresponds to keycode(s) 0xe
        remove mod1 =  0xe
! 4:  remove Mod4 = Super_L
! Keysym Super_L (0xffeb) corresponds to keycode(s) 0x5d
        remove mod4 =  0x5d
! 5:  add Mod1 = Super_L
        add mod1 = Super_L
! 6:  add Mod4 = Alt_L
        add mod4 = Alt_L
!
! executing work queue
!
        keycode 0xe = Alt_L
        keycode 0x5d = Super_L
        remove mod1 =  0xe
        remove mod4 =  0x5d
        add mod1 = Super_L
        add mod4 = Alt_L

サイレント実行用の-v(詳細)スイッチがなくても実行できますが、modmapファイルでミスを犯した場合に役立ちます。物事が乱雑になった場合は、デフォルトを再適用してください:

xmodmap defaults

ModmapはXの起動時に実行されることが多いため、modmapコマンドを~/.xmodmaprcに配置すると、これらをデフォルトとして適用できます。

22
Drav Sloan

Appleキーボードでこれを実行したい場合は、これを試してください:

echo 1|Sudo tee /sys/module/hid_Apple/parameters/swap_opt_cmd

これをLinuxのより低いバージョンで動作させるには、これを試すことができます: http://blog.chaselambda.com/2014/10/09/Apple-keyboard-on-linux-3.8.html =

28
theicfire

左Altキーとスーパーキーだけを入れ替えたい場合は、ターミナルで次のコマンドを実行します。

setxkbmap -option altwin:swap_alt_win

デフォルトの動作に戻すには、次を使用します。

setxkbmap -option

注:これは一時的なものです。エフェクトが必要な場合は、起動ファイルに永続的に追加してください。

19
coljamkop
$ xmodmap -pke

Altとsuperがバインドされているキーコードをメモしてから、ホームフォルダーで新しいファイル.xmodmaprcを開く/作成します。たとえば、私のスーパー/ Altキーはそのようにバインドされています

keycode  64 = Alt_L Meta_L Alt_L Meta_L
keycode 108 = Alt_R Meta_R Alt_R Meta_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

しかし、キーを交換するには、.xmodmaprcに以下を入れます。

keycode  64 = Super_L NoSymbol Super_L
keycode 108 = Super_R NoSymbol Super_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R
4
cepkos

あなたがxmodmapで右Altを右Ctrlに切り替えることができなかった私のような不幸な人の1人である場合、おそらくこれが役立つでしょう。

Altとeを同時に押してéが表示された場合、この解決策はあなたのためです(改善が必要です)。

ターミナルでこれを実行します(xevでキーコードを確認してください):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

次に、このコードを.Xmodmapに入れます。

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

このコードは、Alt_GrキーをAlt_Rに設定し、次にAlt_rをCtrl_Rと交換します。

ログアウト後もこれを保持したい場合は、〜/ .profileなどの起動シェルファイルのいずれかに次のコマンドを入力します。

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

ソース: question1question2

0