XMODMAP(1) — NEWS-OS Programmer’s Manual
名称
xmodmap − X でのキーマップを修正するためのユーティリティ
形式
xmodmap [−options ...] [filename]
解説
xmodmap プログラムを使用して、イベントキーコードを keysyms に 変換するためにクライアントアプリケーションが使用するキーボードの modifier map と keymap table を編集して、表示します。 これは通常、個人の好みに応じてキーボードを構成するためにユーティリティの セッションスタートアップスクリプトから実行されます。
オプション
xmodmap とともに、以下のオプションを使用できます。
−display display
このオプションは、使用するホストとディスプレイを指定します。
−help このオプションは、標準エラーが生じたら、コマンド行引数の簡単な説明を 表示するよう指示します。 これは、扱ったことのない引数が xmodmap に対して与えられるとき必ず行われます。
−grammar
このオプションは、標準エラーが生じたら、ファイル内で −e 式とともに 使用する式の文法を説明するヘルプメッセージを表示するよう指示します。
−verbose
このオプションは、 xmodmap が、その入力をパーズするときに、ログとり情報を表示することを示します。
−quiet このオプションは、 verbose のログとりをオフにします。 これはデフォルトです。
−n このオプションは、 xmodmap が、マッピングは変更しないけれども、このオプションが与えられたときに make(1) が行うように、 xmodmap が行うであろうことを表示することを示します。
−e expression
このオプションは、実行する式を指定します。 コマンド行から任意の数の式が指定できます。
−pm このオプションは、現在のモディファイアマップを標準出力上に表示する ことを示します。
−pk このオプションは、現在のキーマップテーブルを標準出力上に表示することを 示します。
−pp このオプションは、現在のポインタマップを標準出力上に表示することを 示します。
− ダッシュ 1 つは、標準入力を入力ファイルとして使用することを意味します。
ファイル名 は、実行する xmodmap 式を含むファイルを指定します。 このファイルは通常、 .xmodmaprc のような名前をもつユーザの ホームディレクトリ内に保持されます。
式の文法
xmodmap プログラムは、式のリストを読み込み、これの実行を試みる前にすべてを パーズします。 これにより、名前の不一致に関して心配することなく、自然な方法で再 定義されている keysyms を参照することができます。
keycode NUMBER = KEYSYMNAME ...
keysyms のリストが、指示されたキーコードに割り当てられます(これは、 10 進数、 16 進数または 8 進数で指定して、実例ディレクトリで xev プログラムを実行することによって決定できます)。 通常は、与えられたコードに対して 1 つの keysym だけが割り当てられます。
keysym KEYSYMNAME = KEYSYMNAME ...
左側の KEYSYMNAME を調べて、現在のキーコードを見つけます。 その行が適切なキーコード式と置換されます。 なお、複数のキーに同じ keysym がバインドされていると、これは動作しない ことに注意してください。
clear MODIFIERNAME
これは、与えられたモディファイアに対するモディファイアマップ中のすべて のエントリを削除します。 ここで有効な名前は、 Shift、Lock、Control、Mod1、Mod2、Mod3、Mod4 および Mod5 です(他のすべての名前と違って、モディファイア名では大文字 と小文字はどちらでも使用できます)。 たとえば、 “clear Lock” は、シフトロックモディファイアにバインド されたすべてのキーを削除します。
add MODIFIERNAME = KEYSYMNAME ...
これは、与えられた keysyms を指示されたモディファイアマップに追加します。 すべての入力式を読み込み、式をスワップキーに書き込みやすいように してから、 keysym 名が評価されます(例の項を参照してください)。
remove MODIFIERNAME = KEYSYMNAME ...
これは、与えられた keysyms を指示されたモディファイアマップから削除 します。 add と違って、行が読み込まれるときに、 keysym 名が評価されます。 これにより、再割当てされているか否かを気にしないで、モディファイアから キーを削除することができます。
pointer = default
これは、ポインタマップをデフォルト設定に設定し直します(ボタン 1 は コード 1 を、ボタン 2 はコード 2 を生成します)。
pointer = NUMBER ...
これは、ポインタマップが指示されたボタンコードを含めるように設定します。 リストは必ず、最初の物理ボタンから始まります。
感嘆符 (!) で始まる行は、コメントとみなされます。
モディファイアキーのバインディングを変更したい場合は、これを適切な モディファイアマップからも削除しなくてはなりません。
例
多くのポインタは、右手の人差し指を使って、 1 番目のボタンを押せるように 設計されています。 左利きの人は、左手の人差し指を使って、 1 番目のボタンを押せるように ボタンコードを反対に作成した方がより快適であると思うことがよくあります。 これは、 3 つのボタンをもつポインタで次のように行うことができます。
% xmodmap −e "pointer = 3 2 1"
多くのエディタアプリケーションは、メタキー(コントロールキーではなく、 メタキーを押すことを除いて、機能はコントロールキーと同じ)の概念を 支援しています。 しかし、デフォルトのキーマップテーブルにメタの keysym をもっていない サーバもあるので、これを手で追加しなくてはならないこともあります。 以下のコマンドで、メタを多重言語キー(場合によっては、ラベル構成文字) に付加させることができます。 これは、メタキーを必要とするアプリケーションは、単にキーコードを 得るだけでよく、 keysym がキーマップテーブルの最初のカラムにあることは 要求しないという事実を利用します。 これは、 Multi_key (デフォルトのモディファイアマップを含む)を 捜しているアプリケーションは、どんな変更にも気付かないということです。
% keysym Multi_key = Multi_key Meta_L
xmodmap の、さらに簡単であるけれども、便利な使用法の 1 つは、 別の keysym を生成するためにキーボードの " 抹消 " キーを設定することです。 この場合、バックスペースキーと削除を交換した方が、ユーザにとってより 快適になることが多いです。 同様に、 xterm の ttyModes リソースが設定されると、すべての 端末エミュレータウィンドウは、文字を消去するのに同じキーを使用します。
% xmodmap −e "keysym BackSpace = Delete"
% echo "XTerm∗ttyModes: erase ^?" | xrdb −merge
キーボードによっては、コンマとピリオドキーをシフトしたときに、 自動的により少ないか、より大きな文字を生成しません。 これは、以下のスクリプトで、コンマとピリオドのバインディングを リセットすることにより、 xmodmap で直すことができます。
!
! make shift-, be < and shift−. be >
!
keysym comma = comma less
keysym period = period greater
キーボード間のより気になる相違の 1 つは、コントロールキーとシフトロック キーの位置です。 xmodmap の一般的な使用法は、次のようにこれらの 2 つのキーを 交換することです。
!
! 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
keycode コマンドは、同じ keysym を複数のキーコードに 割り当てるのに役に立ちます。 移植性はありませんが、これは、キーボードを既知の状態にリセットできる スクリプトを書き込むこともできます。 以下のスクリプトは、バックスペースキーに削除機能(上記のように)を 生じさせ、すべての既存の大文字ロックバインディングをフラッシュし、 CapsLock キーをコントロールキーにさせ、 F5 にエスケープを生じさせ、 ブレーク / リセットをシフトロックにさせるようにします。
!
! On the HP, the following keycodes have key caps as listed:
!
! 101 Backspace
! 55 Caps
! 14 Ctrl
! 15 Break/Reset
! 86 Stop
! 89 F5
!
keycode 101 = Delete
keycode 55 = Control_R
clear Lock
add Control = Control_R
keycode 89 = Escape
keycode 15 = Caps_Lock
add Lock = Caps_Lock
環境変数
DISPLAY
デフォルトのホストとディスプレイ番号を得るためのもの。
関連事項
バグ
キーコード式を評価するたびに、サーバは、クライアントごとに MappingNotify イベントを発生します。 これによりスラッシングが生じることがあります。 すべての変更は、一緒にまとめ、一度に行わなくてはなりません。 キーボード入力を受け取り、 MappingNotify イベントを無視する クライアントは、キーボードマッピングに対して行われた変更には気付きません。
xmodmap は、すでにモディファイアにバインドされているキーコードが変更されると 必ず " 追加 " と " 削除 " 式を自動的に生成しなくてはなりません。
ユーザが実際にマッピングを混乱させた場合に対して、 削除 式にキーコードおよび keysyms を受け付けさせる方法があるべきです。
著作権
Copyright 1988, Massachusetts Institute of Technology.
Copyright 1987 Sun Microsystems, Inc.
権利と許可の声明文については、 X(1) を参照のこと。
著者
Jim Fulton, MIT X Consortium, Sun Microsystems の David Rosenthal 著のオリジナルから書き直したものです。
NEWS-OSRelease 4.1C