「Xmodmap」の版間の差分
(en:Xmodmapへの転送ページ) |
|||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
− | #redirect[[en:Xmodmap]] |
||
+ | [[Category:キーボード]] |
||
+ | [[Category:X サーバー]] |
||
+ | [[de:Xmodmap]] |
||
+ | [[en:Xmodmap]] |
||
+ | [[fr:Xmodmap]] |
||
+ | [[ru:Xmodmap]] |
||
+ | [[zh-CN:Xmodmap]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|Xorg}} |
||
+ | {{Related|特別なキーボードキー}} |
||
+ | {{Related|Xorg での特別なキーボードキー}} |
||
+ | {{Related|コンソールでの特別なキーボードキー}} |
||
+ | {{Related|Xbindkeys}} |
||
+ | {{Related articles end}} |
||
+ | |||
+ | ''xmodmap'' は [[Xorg]] におけるキーマップやマウスボタンのマッピングを変更するためのユーティリティです。 |
||
+ | |||
+ | ''xmodmap'' は直接 [[X KeyBoard extension]] (XKB) と関連するわけではありません。X の中で''キーコード''が処理される方法については別の (XKB より前の) 概念を使っています。基本的に、''xmodmap'' はシンプルな作業にのみ使用することを推奨されます。レイアウトの高度な設定については [[X KeyBoard extension]] を見て下さい。 |
||
+ | |||
+ | == イントロダクション == |
||
+ | |||
+ | [[Xorg]] におけるキーボードの値には2種類あります: ''キーコード''と''キーシム''です。 |
||
+ | |||
+ | ; キーコード (keycode) |
||
+ | : ''キーコード''はキーやマウスボタンが押された時にカーネルによって生成される番号のことです。 |
||
+ | ; キーシム (keysym) |
||
+ | : ''キーシム''は''キーコード''に割り当てられている値です。例えば、{{ic|A}} を押すと {{ic|keycode 73}} が生成されますが、このキーコードは {{ic|keysym 0×61}} にマッピングされており、このキーシムは [[Wikipedia:ja:ASCII|ASCII 表]]の {{ic|A}} に対応しています。 |
||
+ | : ''キーシム''は''キーコード''-''キーシム''の対応関係を示す''キーコード''の表で [[Xorg]] によって管理されており、この表は[[#キーマップテーブル|キーマップテーブル]]と呼ばれます。キーマップテーブルは {{ic|xmodmap}} を実行することで確認できます。 |
||
+ | |||
+ | == インストール == |
||
+ | |||
+ | ''xmodmap'' は[[公式リポジトリ]]の {{Pkg|xorg-xmodmap}} パッケージで[[インストール]]することができます。 |
||
+ | |||
+ | 任意で、''xmodmap'' のグラフィカルフロントエンドである {{Pkg|xkeycaps}} をインストールしてください。 |
||
+ | |||
+ | == キーマップテーブル == |
||
+ | |||
+ | 現在のキーマップテーブルを整形して表示: |
||
+ | |||
+ | {{hc|$ xmodmap -pke|2= |
||
+ | [...] |
||
+ | keycode 57 = n N |
||
+ | [...] |
||
+ | }} |
||
+ | |||
+ | 各行の''キーコード''の後に付いているのはマッピングされている''キーシム''です。上記の例では ''keycode'' {{ic|57}} が小文字の {{ic|n}} にマッピングされていることを示しており、大文字の {{ic|N}} は''キーコード'' {{ic|57}} + {{ic|Shift}} にマッピングされています。 |
||
+ | |||
+ | テーブルの中の''キーシム''のカラムは特定の修飾キーの組み合わせに対応しています: |
||
+ | # {{ic|Key}} |
||
+ | # {{ic|Shift+Key}} |
||
+ | # {{ic|mode_switch+Key}} |
||
+ | # {{ic|mode_switch+Shift+Key}} |
||
+ | # {{ic|AltGr+Key}} |
||
+ | # {{ic|AltGr+Shift+Key}} |
||
+ | |||
+ | 全ての''キーシム''を設定する必要は必ずしもありませんが、後ろの方の''キーシム''だけを設定するときは、{{ic|NoSymbol}} を使います。 |
||
+ | |||
+ | どの''キーコード''がキーに対応しているのか確認するには、[[特別なキーボードキー#Xorg]] の ''xev'' ユーティリティの使い方を見て下さい。 |
||
+ | |||
+ | {{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. |
||
+ | }} |
||
+ | |||
+ | == カスタムテーブル == |
||
+ | |||
+ | キーマップを作成するには ({{ic|~/.Xmodmap}}): |
||
+ | $ xmodmap -pke > ~/.Xmodmap |
||
+ | |||
+ | 変更をテストするには: |
||
+ | $ xmodmap ~/.Xmodmap |
||
+ | |||
+ | === カスタムテーブルを有効化 === |
||
+ | |||
+ | [[GDM]], [[XDM]], [[KDM]], [[LightDM]] では {{ic|~/.Xmodmap}} を読み込む必要はありません。[[startx]] を使用する場合、以下を使用して下さい: |
||
+ | |||
+ | {{hc|~/.xinitrc| |
||
+ | if [ -s ~/.Xmodmap ]; then |
||
+ | xmodmap ~/.Xmodmap |
||
+ | fi}} |
||
+ | |||
+ | もしくは、グローバルなスタートアップスクリプト {{ic|/etc/X11/xinit/xinitrc}} を編集してください。 |
||
+ | |||
+ | === 変更のテスト === |
||
+ | |||
+ | 一時的に変更を行うには: |
||
+ | $ xmodmap -e "keycode 46 = l L l L lstroke Lstroke lstroke" |
||
+ | $ xmodmap -e "keysym a = e E" |
||
+ | |||
+ | == 修飾キー == |
||
+ | |||
+ | ''xmodmap'' を使って[[Wikipedia:ja:修飾キー|修飾キー]]を上書きすることもできます。例: {{ic|Control}} と {{ic|Super}} ([[Wikipedia:ja:Windowsキー|Windows キー]]) の置き換え。 |
||
+ | |||
+ | Before assignment the modifier keys need to be empty. {{ic|!}} is a comment, so only the modifiers {{ic|Control}} and {{ic|Mod4}} get cleared in the following example. Then the ''keysyms'' {{ic|Control_L}}, {{ic|Control_R}}, {{ic|Super_L}} and {{ic|Super_R}} are assigned to the opposite modifier. Assigning both left and right to the same modifier means that both keys are treated the same way. |
||
+ | |||
+ | {{hc|~/.Xmodmap|2= |
||
+ | [...] |
||
+ | !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 = |
||
+ | }} |
||
+ | |||
+ | {{Note|The example assumes that the {{ic|Control_L}} and {{ic|Control_R}} keysyms were assigned to the {{ic|Control}} modifier, and {{ic|Super_L}} and {{ic|Super_R}} keysyms to the {{ic|Mod4}} modifier. If you get the following error message {{ic|X Error of failed request: BadValue (integer parameter out of range for operation)}}, you will need to adapt accordingly. Running {{ic|xmodmap}} produces a list of modifiers and keys that are assigned to them.}} |
||
+ | |||
+ | 以下の例では {{ic|CapsLock}} を {{ic|Control}} に、{{ic|Shift+CapsLock}} を {{ic|CapsLock}} に変更しています: |
||
+ | {{hc|~/.Xmodmap|2= |
||
+ | clear lock |
||
+ | clear control |
||
+ | add control = Caps_Lock Control_L Control_R |
||
+ | keycode 66 = Control_L Caps_Lock NoSymbol NoSymbol |
||
+ | }} |
||
+ | |||
+ | == スクロールを逆向きにする == |
||
+ | |||
+ | ''xmodmap'' を使って (スマートフォンやタブレットのようなスクロールを行う) OS X Lion の [http://who-t.blogspot.com/2011/09/natural-scrolling-in-synaptics-driver.html ナチュラルスクロール] 機能を [https://bbs.archlinux.org/viewtopic.php?id=126258 再現] することが可能です。synaptics ドライバーは上下左右のスクロールにボタン4/5/6/7を使うので、{{ic|~/.Xmodmap}} でボタンの定義の順番を変えるだけです: |
||
+ | |||
+ | {{hc|~/.Xmodmap|2= |
||
+ | pointer = 1 2 3 '''5 4''' 7 6 8 9 10 11 12 |
||
+ | }} |
||
+ | |||
+ | それから ''xmodmap'' を更新してください: |
||
+ | $ xmodmap ~/.Xmodmap |
||
+ | |||
+ | == テンプレート == |
||
+ | |||
+ | === スペイン語 === |
||
+ | |||
+ | {{hc|~/.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 |
||
+ | }} |
||
+ | |||
+ | === Turn CapsLock into Control, and LeftControl into Hyper === |
||
+ | |||
+ | Laptop users may prefer having {{ic|CapsLock}} as {{ic|Control}}. The {{ic|Left Hyper}} key can be used as a modifier. |
||
+ | |||
+ | {{hc|~/.Xmodmap|<nowiki> |
||
+ | 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 |
||
+ | </nowiki>}} |
||
+ | |||
+ | === 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> |
||
+ | 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 |
||
+ | </nowiki>}} |
||
+ | |||
+ | == 参照 == |
||
+ | |||
+ | *[http://www.x.org/archive/current/doc/man/man1/xmodmap.1.xhtml Current man page] at X.Org Foundation |
||
+ | *[http://cweiske.de/howto/xmodmap/allinone.html Multimediakeys with .Xmodmap HOWTO] by Christian Weiske |
||
+ | *[http://dev-loki.blogspot.com/2006/04/mapping-unsupported-keys-with-xmodmap.html Mapping unsupported keys with xmodmap] by Pascal Bleser |
||
+ | *[http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap List of Keysyms Recognised by Xmodmap] on [http://linuxquestions.org LinuxQuestions] |
2015年3月17日 (火) 20:26時点における版
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
if [ -s ~/.Xmodmap ]; then xmodmap ~/.Xmodmap fi
もしくは、グローバルなスタートアップスクリプト /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 キー) の置き換え。
Before assignment the modifier keys need to be empty. !
is a comment, so only the modifiers Control
and Mod4
get cleared in the following example. Then the keysyms Control_L
, Control_R
, Super_L
and Super_R
are assigned to the opposite modifier. Assigning both left and right to the same modifier means that both keys are treated the same way.
~/.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
Turn CapsLock into Control, and LeftControl into Hyper
Laptop users may prefer having CapsLock
as Control
. The Left Hyper
key can be used as a modifier.
~/.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
Switch every number key N with Shift-N and vice-versa, for Croatian layout
Should work fine for layouts similar to Croatian as well.
~/.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