xmodmap コマンド

目的

X サーバー内のキー・マップを変更します。

構文

xmodmap-display Display ] [  -e  Expression ] [  -grammar -help ] [ -n] [  -pk ] [  -pke ] [  -pm ] [  -pp ] [  -quiet -verbose ] [ FileName ]

説明

xmodmap コマンドは、クライアント・アプリケーションがイベント・キー・コードをキー記号へ変換するために使用するキーボード修飾子マップおよびキー・マップ・テーブルを編集および表示します。このコマンドは通常、セッション始動スクリプトから実行し、キーボードの構成をユーザーの好みに合わせます。

キー・コード式が評価されるたびに、サーバーはすべてのクライアントに MappingNotify イベントを生成します。変更はまとめて一回でバッチ処理される必要があります。 キーボード入力を受け取っても MappingNotify イベントを無視するとクライアントは、キーボード・マッピングの変更にまったく気付きません。

FileName パラメーターは、実行される xmodmap コマンド式を含むファイルを指定します。 このファイルは通常、ユーザーのホーム・ディレクトリーに .xmodmaprc という名前で保管されています。 ファイルが指定されなければ、stdin を入力とします。

xmodmap コマンド・プログラムは式のリストを読み取り、実行を試みる前にすべての式を解析します。 これによって、名前が矛盾していないかどうかを心配することなく、本来の形で再定義されるキー・シンボルを参照することができます。

項目 説明
add 行が読み取られるたびにキー・シンボル名が評価されます。 これによってキーが再割り当てされたかどうかを心配することなく修飾子からキーを除去することができます。
add ModifierName = KeySymbolName... 与えられたキー・シンボルを指定された修飾子マップに追加します。キー・シンボル名は、キーをスワップする式を書きやすくするために、すべての入力式が読み取られた後に評価されます。
clear ModifierName 与えられた修飾子の修飾子マップの中のすべてのエントリーを除去します。このとき有効な名前は ShiftLockControlMod1Mod2Mod3Mod4Mod5 です (他のすべての名前と異なり、修飾子名では英大文字と小文字の区別はありません)。 例えば、clear Lockshift lock 修飾子にバインドされたすべてのキーを除去します。
keycode Number = KeySymbolName... キー・シンボルのリストを指定されたキー・コードに割り当てます。このキー・コードは、10 進数、16 進数、または 8 進数で指定したり、/usr/lpp/X11/Xamples/demos ディレクトリーにある xev プログラムを実行して判別することができます。通常は与えられたコードに対してキー記号が 1 つだけ割り当てられます。
keysym KeySymbolName = KeySymbolName... 左辺の KeySymbolName はマッチング・キー・コードに変換され、対応するキー・コード式のセットを実行するために使用されます。 keysym 名のリストは、keysym データベース /usr/lib/X11/XKeysymDB あるいはヘッダー・ファイル X11/keysymdef.h (XK_ 接頭部なし) にあります。複数キーに同一の keysym をバインドしているときは、この式はマッチング・キー・コードに対して実行されることに注意してください。
pointer = default ポインター・マップをデフォルト設定へ戻します (ボタン 1 によって 1 のコードが、ボタン 2 によって 2 のコードが設定され、... というように設定されます)。
pointer = Button1 Button2 Button3... ポインター・マップを設定して、指定されたボタン・コードを入れます。リストは必ず最初の物理ボタンから始められます。
remove ModifierName = KeySymbolName... 与えられた keysym を含むキーすべてを指定された修飾子マップから除去します。 add とは異なり、keysym 名は、その行が読み取られるものとして評価されます。これは、再配置されたかどうかにかかわらず修飾子からのキーを除去できるようにします。

(感嘆符) で始まる行はコメントとして処理されます。

修飾子キーのバインドを変更したい場合も、そのキーを適切な修飾子マップから除去する必要があります。

フラグ

項目 説明
-display Display 使用するホストとディスプレイを指定します。
-e Expression 実行する式を指定します。コマンド・ラインからいくつでも式を指定することができます。
-grammar -e Expressions フラグを付けてファイルの中で使用する、式の文法について説明するヘルプ・メッセージを、標準エラー上に出力します。
-help コマンド・ライン引数の簡単な説明を、標準エラー上に出力します。 xmodmap コマンドに、処理されない引数が与えられた場合、この動作を必ず実行します。
-n xmodmap コマンドによってマッピングを変更しないこと、ただしこのフラグを指定したときには何が行われるかを表示することを示します。
-pk 現在のキー・マップ・テーブルを標準出力へ出力することを示します。
-pke 現在のキー・マップ・テーブルを、xmodmap で戻される式のフォーマットで標準出力へ出力することを示します。このフラグは X11R5 に固有のものです。
-pm 現在の修飾子マップを標準出力へ出力することを示します。
-pp 現在のポインター・マップを標準出力へ出力することを示します。
-quiet 詳細ログをオフにします。これはデフォルトです。
-verbose 入力を解析しながら、xmodmap コマンドがログ情報を出力することを示します。

  1. 下記のコマンドでは、ポインター (3 つボタン) 上で左手の人差し指を使って第 1 ボタンが押せるように生成したボタン・コードを、反転させることができます。
    xmodmap -e "pointer = 1 2 3 4 5"
  2. 下記のコマンドは、メタを複数言語キー (Compose Character と呼ばれることもあります) へ付加します。またこれは、メタ・キーを必要とするアプリケーションにはキー・コードだけが必要であって、キー・マップ・テーブルの最初の欄にあるキー記号は必要としない、という事実に基づいています。これは、Multi_key (デフォルト修飾子マップを含む) を検索するアプリケーションはいかなる変更も通知しないという意味になります。
    
    keysym Multi_key = Multi_key Meta_L
  3. コンマおよびピリオド・キーがシフトされたとき不等号文字を自動生成するには、下記のスクリプトでコンマとピリオドの割り当てを再設定します。
    !
    ! make shift-, be < and shift-. be >
    !
    keysym comma = comma less
    keysym period = period greater
  4. 制御キーとシフト・ロック・キーの位置を入れ替えるには、下記のスクリプトを使います。
    
    !
    ! Swap Caps_Lock and Control_L
    !
    remove Lock = Caps_Lock
    remove Control = Control_L
    keysym Control_L = Caps_Lock
    keysym Caps_Lock = Control_L
    add Lock = Caps_Lock
    add Control = Control_L