「Xmodmap」の版間の差分
細 (文字列「[[zh-CN:」を「[[zh-hans:」に置換) |
(同期) |
||
18行目: | 18行目: | ||
''xmodmap'' は直接 [[X KeyBoard extension]] (XKB) と関連するわけではありません。X の中で''キーコード''が処理される方法については別の (XKB より前の) 概念を使っています。基本的に、''xmodmap'' はシンプルな作業にのみ使用することを推奨されます。レイアウトの高度な設定については [[X KeyBoard extension]] を見て下さい。 |
''xmodmap'' は直接 [[X KeyBoard extension]] (XKB) と関連するわけではありません。X の中で''キーコード''が処理される方法については別の (XKB より前の) 概念を使っています。基本的に、''xmodmap'' はシンプルな作業にのみ使用することを推奨されます。レイアウトの高度な設定については [[X KeyBoard extension]] を見て下さい。 |
||
+ | |||
+ | {{Note|''xmodmap'' の設定は ''setxkbmap'' でリセットされます。英数キーをマップで指定した値に変えるだけでなく、他の全てのキーを起動時のデフォルトにリセットします [http://wiki.linuxquestions.org/wiki/Configuring_keyboards]。}} |
||
== イントロダクション == |
== イントロダクション == |
||
59行目: | 61行目: | ||
どの''キーコード''がキーに対応しているのか確認するには、[[特別なキーボードキー#Xorg]] の ''xev'' ユーティリティの使い方を見て下さい。 |
どの''キーコード''がキーに対応しているのか確認するには、[[特別なキーボードキー#Xorg]] の ''xev'' ユーティリティの使い方を見て下さい。 |
||
+ | {{Tip|マルチメディアキーにはわかりやすい''キーシム''が事前定義されています (例: {{ic|XF86AudioMute}} や {{ic|XF86Mail}})。これらの''キーシム''は {{ic|/usr/include/X11/XF86keysym.h}} で確認できます。マルチメディアプログラムの多くは特に設定をしなくてもこれらの''キーシム''が使えるように作られています。}} |
||
− | {{Tip|There are predefined descriptive ''keysyms'' for multimedia keys, e.g. {{ic|XF86AudioMute}} or {{ic|XF86Mail}}. These ''keysyms'' can be found in {{ic|/usr/include/X11/XF86keysym.h}}. Many multimedia programs are designed to work with these ''keysyms'' out-of-the-box, without the need to configure any third-party application. |
||
− | }} |
||
== カスタムテーブル == |
== カスタムテーブル == |
||
74行目: | 75行目: | ||
[[GDM]], [[XDM]], [[KDM]], [[LightDM]] では {{ic|~/.Xmodmap}} を読み込む必要はありません。[[startx]] を使用する場合、以下を使用して下さい: |
[[GDM]], [[XDM]], [[KDM]], [[LightDM]] では {{ic|~/.Xmodmap}} を読み込む必要はありません。[[startx]] を使用する場合、以下を使用して下さい: |
||
− | {{hc|~/.xinitrc| |
+ | {{hc|~/.xinitrc|<nowiki> |
− | + | [[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap |
|
+ | </nowiki>}} |
||
− | xmodmap ~/.Xmodmap |
||
− | fi}} |
||
もしくは、グローバルなスタートアップスクリプト {{ic|/etc/X11/xinit/xinitrc}} を編集してください。 |
もしくは、グローバルなスタートアップスクリプト {{ic|/etc/X11/xinit/xinitrc}} を編集してください。 |
||
91行目: | 91行目: | ||
''xmodmap'' を使って[[Wikipedia:ja:修飾キー|修飾キー]]を上書きすることもできます。例: {{ic|Control}} と {{ic|Super}} ([[Wikipedia:ja:Windowsキー|Windows キー]]) の置き換え。 |
''xmodmap'' を使って[[Wikipedia:ja:修飾キー|修飾キー]]を上書きすることもできます。例: {{ic|Control}} と {{ic|Super}} ([[Wikipedia:ja:Windowsキー|Windows キー]]) の置き換え。 |
||
− | + | 割り当てる前に修飾キーを空にする必要があります。{{ic|!}} がコメントです。以下の例では {{ic|Control}} と {{ic|Mod4}} だけ消去しています。それから {{ic|Control_L}}, {{ic|Control_R}}, {{ic|Super_L}}, {{ic|Super_R}} を元と逆の修飾キーに割り当てています。左と右の両方に同じ修飾キーを割り当てた場合、両方のキーが同じように扱われます。 |
|
{{hc|~/.Xmodmap|2= |
{{hc|~/.Xmodmap|2= |
||
113行目: | 113行目: | ||
}} |
}} |
||
− | {{Note| |
+ | {{Note|上記の例は {{ic|Control_L}} と {{ic|Control_R}} キーシムを {{ic|Control}} 修飾キーに、{{ic|Super_L}} と {{ic|Super_R}} キーシムを {{ic|Mod4}} 修飾キーに割り当てていることが前提です。{{ic|X Error of failed request: BadValue (integer parameter out of range for operation)}} というエラーメッセージが表示される場合、適当に合わせてください。{{ic|xmodmap}} を実行すれば修飾キーのリストが表示されます。}} |
以下の例では {{ic|CapsLock}} を {{ic|Control}} に、{{ic|Shift+CapsLock}} を {{ic|CapsLock}} に変更しています: |
以下の例では {{ic|CapsLock}} を {{ic|Control}} に、{{ic|Shift+CapsLock}} を {{ic|CapsLock}} に変更しています: |
||
151行目: | 151行目: | ||
}} |
}} |
||
− | === |
+ | === CapsLock を Control にする === |
+ | |||
+ | {{ic|CapsLock}} を {{ic|Control}} に変えるシンプルな例: |
||
+ | |||
+ | {{hc|~/.Xmodmap|<nowiki> |
||
+ | clear lock |
||
+ | clear control |
||
+ | keycode 66 = Control_L |
||
+ | add control = Control_L Control_R |
||
+ | </nowiki>}} |
||
+ | |||
+ | === CapsLock を Control に、LeftControl を Hyper にする === |
||
− | + | ノートパソコンを使っている場合 {{ic|CapsLock}} を {{ic|Control}} として使えると便利です。さらに {{ic|Left Control}} キーを {{ic|Hyper}} として使えます (emacs, openbox, i3 などで使われる修飾キー): |
|
{{hc|~/.Xmodmap|<nowiki> |
{{hc|~/.Xmodmap|<nowiki> |
||
173行目: | 184行目: | ||
</nowiki>}} |
</nowiki>}} |
||
+ | === クロアチア語レイアウトで数字キー N を Shift-N あるいはその逆に変える === |
||
− | === Switch every number key N with Shift-N and vice-versa, for Croatian layout === |
||
+ | クロアチア語レイアウトと似たような別のレイアウトでも使えるはずです。 |
||
− | Should work fine for layouts similar to Croatian as well. |
||
{{hc|~/.Xmodmap|<nowiki> |
{{hc|~/.Xmodmap|<nowiki> |
2017年5月21日 (日) 20:47時点における版
xmodmap は Xorg におけるキーマップやマウスボタンのマッピングを変更するためのユーティリティです。
xmodmap は直接 X KeyBoard extension (XKB) と関連するわけではありません。X の中でキーコードが処理される方法については別の (XKB より前の) 概念を使っています。基本的に、xmodmap はシンプルな作業にのみ使用することを推奨されます。レイアウトの高度な設定については X KeyBoard extension を見て下さい。
目次
イントロダクション
Xorg におけるキーボードの値には2種類あります: キーコードとキーシムです。
- キーコード (keycode)
- キーコードはキーやマウスボタンが押された時にカーネルによって生成される番号のことです。
- キーシム (keysym)
- キーシムはキーコードに割り当てられている値です。例えば、
A
を押すとkeycode 73
が生成されますが、このキーコードはkeysym 0×61
にマッピングされており、このキーシムは ASCII 表のA
に対応しています。 - キーシムはキーコード-キーシムの対応関係を示すキーコードの表で Xorg によって管理されており、この表はキーマップテーブルと呼ばれます。キーマップテーブルは
xmodmap
を実行することで確認できます。
インストール
xmodmap は公式リポジトリの xorg-xmodmap パッケージでインストールすることができます。
任意で、xmodmap のグラフィカルフロントエンドである xkeycaps をインストールしてください。
キーマップテーブル
現在のキーマップテーブルを整形して表示:
$ xmodmap -pke
[...] keycode 57 = n N [...]
各行のキーコードの後に付いているのはマッピングされているキーシムです。上記の例では keycode 57
が小文字の n
にマッピングされていることを示しており、大文字の N
はキーコード 57
+ Shift
にマッピングされています。
テーブルの中のキーシムのカラムは特定の修飾キーの組み合わせに対応しています:
Key
Shift+Key
mode_switch+Key
mode_switch+Shift+Key
AltGr+Key
AltGr+Shift+Key
全てのキーシムを設定する必要は必ずしもありませんが、後ろの方のキーシムだけを設定するときは、NoSymbol
を使います。
どのキーコードがキーに対応しているのか確認するには、特別なキーボードキー#Xorg の xev ユーティリティの使い方を見て下さい。
カスタムテーブル
キーマップを作成するには (~/.Xmodmap
):
$ xmodmap -pke > ~/.Xmodmap
変更をテストするには:
$ xmodmap ~/.Xmodmap
カスタムテーブルを有効化
GDM, XDM, KDM, LightDM では ~/.Xmodmap
を読み込む必要はありません。startx を使用する場合、以下を使用して下さい:
~/.xinitrc
[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
もしくは、グローバルなスタートアップスクリプト /etc/X11/xinit/xinitrc
を編集してください。
変更のテスト
一時的に変更を行うには:
$ xmodmap -e "keycode 46 = l L l L lstroke Lstroke lstroke" $ xmodmap -e "keysym a = e E"
修飾キー
xmodmap を使って修飾キーを上書きすることもできます。例: Control
と Super
(Windows キー) の置き換え。
割り当てる前に修飾キーを空にする必要があります。!
がコメントです。以下の例では Control
と Mod4
だけ消去しています。それから Control_L
, Control_R
, Super_L
, Super_R
を元と逆の修飾キーに割り当てています。左と右の両方に同じ修飾キーを割り当てた場合、両方のキーが同じように扱われます。
~/.Xmodmap
[...] !clear Shift !clear Lock clear Control !clear Mod1 !clear Mod2 !clear Mod3 clear Mod4 !clear Mod5 !add Shift = Shift_L Shift_R !add Lock = Caps_Lock add Control = Super_L Super_R !add Mod1 = Alt_L Alt_R !add Mod2 = Mode_switch !add Mod3 = add Mod4 = Control_L Control_R !add Mod5 =
以下の例では CapsLock
を Control
に、Shift+CapsLock
を CapsLock
に変更しています:
~/.Xmodmap
clear lock clear control add control = Caps_Lock Control_L Control_R keycode 66 = Control_L Caps_Lock NoSymbol NoSymbol
スクロールを逆向きにする
xmodmap を使って (スマートフォンやタブレットのようなスクロールを行う) OS X Lion の ナチュラルスクロール 機能を 再現 することが可能です。synaptics ドライバーは上下左右のスクロールにボタン4/5/6/7を使うので、~/.Xmodmap
でボタンの定義の順番を変えるだけです:
~/.Xmodmap
pointer = 1 2 3 5 4 7 6 8 9 10 11 12
それから xmodmap を更新してください:
$ xmodmap ~/.Xmodmap
テンプレート
スペイン語
~/.Xmodmap
keycode 24 = a A aacute Aacute ae AE ae keycode 26 = e E eacute Eacute EuroSign cent EuroSign keycode 30 = u U uacute Uacute downarrow uparrow downarrow keycode 31 = i I iacute Iacute rightarrow idotless rightarrow keycode 32 = o O oacute Oacute oslash Oslash oslash keycode 57 = n N ntilde Ntilde n N n keycode 58 = comma question comma questiondown dead_acute dead_doubleacute dead_acute keycode 61 = exclam section exclamdown section dead_belowdot dead_abovedot dead_belowdot !Maps the Mode key to the Alt key keycode 64 = Mode_switch
CapsLock を Control にする
CapsLock
を Control
に変えるシンプルな例:
~/.Xmodmap
clear lock clear control keycode 66 = Control_L add control = Control_L Control_R
CapsLock を Control に、LeftControl を Hyper にする
ノートパソコンを使っている場合 CapsLock
を Control
として使えると便利です。さらに Left Control
キーを Hyper
として使えます (emacs, openbox, i3 などで使われる修飾キー):
~/.Xmodmap
clear lock clear control clear mod1 clear mod2 clear mod3 clear mod4 clear mod5 keycode 37 = Hyper_L keycode 66 = Control_L add control = Control_L Control_R add mod1 = Alt_L Alt_R Meta_L add mod2 = Num_Lock add mod3 = Hyper_L add mod4 = Super_L Super_R add mod5 = Mode_switch ISO_Level3_Shift
クロアチア語レイアウトで数字キー N を Shift-N あるいはその逆に変える
クロアチア語レイアウトと似たような別のレイアウトでも使えるはずです。
~/.Xmodmap
keycode 10 = exclam 1 1 exclam asciitilde dead_tilde asciitilde keycode 11 = quotedbl 2 2 quotedbl dead_caron caron dead_caron keycode 12 = numbersign 3 3 numbersign asciicircum dead_circumflex asciicircum keycode 13 = dollar 4 4 dollar dead_breve breve dead_breve keycode 14 = percent 5 5 percent degree dead_abovering degree keycode 15 = ampersand 6 6 ampersand dead_ogonek ogonek dead_ogonek keycode 16 = slash 7 7 slash grave dead_grave grave keycode 17 = parenleft 8 8 parenleft dead_abovedot abovedot dead_abovedot keycode 18 = parenright 9 9 parenright dead_acute apostrophe dead_acute keycode 19 = equal 0 0 equal dead_doubleacute doubleacute dead_doubleacute
参照
- Current man page at X.Org Foundation
- Multimediakeys with .Xmodmap HOWTO by Christian Weiske
- Mapping unsupported keys with xmodmap by Pascal Bleser
- List of Keysyms Recognised by Xmodmap on LinuxQuestions