それを達成する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キー」があり、xevは次を提供します。
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
返されたキーコードの使用方法に注意してください。また、ここでは、左のsuperキーと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
。