「Xmodmap」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(en:Xmodmapへの転送ページ)
 
(同期)
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
  +
{{Lowercase title}}
#redirect[[en:Xmodmap]]
 
  +
[[Category:キーボード]]
  +
[[Category:X サーバー]]
  +
[[de:Xmodmap]]
  +
[[en:Xmodmap]]
  +
[[fr:Xmodmap]]
  +
[[ru:Xmodmap]]
  +
[[zh-hans: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]] を見て下さい。
  +
  +
{{Note|''xmodmap'' の設定は ''setxkbmap'' でリセットされます。英数キーをマップで指定した値に変えるだけでなく、他の全てのキーを起動時のデフォルトにリセットします [http://wiki.linuxquestions.org/wiki/Configuring_keyboards]。}}
  +
  +
== イントロダクション ==
  +
  +
[[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|マルチメディアキーにはわかりやすい''キーシム''が事前定義されています (例: {{ic|XF86AudioMute}} や {{ic|XF86Mail}})。これらの''キーシム''は {{ic|/usr/include/X11/XF86keysym.h}} で確認できます。マルチメディアプログラムの多くは特に設定をしなくてもこれらの''キーシム''が使えるように作られています。}}
  +
  +
== カスタムテーブル ==
  +
  +
キーマップを作成するには ({{ic|~/.Xmodmap}}):
  +
$ xmodmap -pke > ~/.Xmodmap
  +
  +
変更をテストするには:
  +
$ xmodmap ~/.Xmodmap
  +
  +
=== カスタムテーブルを有効化 ===
  +
  +
[[GDM]], [[XDM]], [[LightDM]] では {{ic|~/.Xmodmap}} を読み込む必要はありません。[[startx]] を使用する場合、以下を使用して下さい:
  +
  +
{{hc|~/.xinitrc|<nowiki>
  +
[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
  +
</nowiki>}}
  +
  +
もしくは、グローバルなスタートアップスクリプト {{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 キー]]) の置き換え。
  +
  +
割り当てる前に修飾キーを空にする必要があります。{{ic|!}} がコメントです。以下の例では {{ic|Control}} と {{ic|Mod4}} だけ消去しています。それから {{ic|Control_L}}, {{ic|Control_R}}, {{ic|Super_L}}, {{ic|Super_R}} を元と逆の修飾キーに割り当てています。左と右の両方に同じ修飾キーを割り当てた場合、両方のキーが同じように扱われます。
  +
  +
{{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|上記の例は {{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}} に変更しています:
  +
{{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 &#61; a A aacute Aacute ae AE ae
  +
keycode 26 &#61; e E eacute Eacute EuroSign cent EuroSign
  +
keycode 30 &#61; u U uacute Uacute downarrow uparrow downarrow
  +
keycode 31 &#61; i I iacute Iacute rightarrow idotless rightarrow
  +
keycode 32 &#61; o O oacute Oacute oslash Oslash oslash
  +
keycode 57 &#61; n N ntilde Ntilde n N n
  +
keycode 58 &#61; comma question comma questiondown dead_acute dead_doubleacute dead_acute
  +
keycode 61 &#61; exclam section exclamdown section dead_belowdot dead_abovedot dead_belowdot
  +
!Maps the Mode key to the Alt key
  +
keycode 64 &#61; Mode_switch
  +
}}
  +
  +
=== 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>
  +
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>}}
  +
  +
=== クロアチア語レイアウトで数字キー N を Shift-N あるいはその逆に変える ===
  +
  +
クロアチア語レイアウトと似たような別のレイアウトでも使えるはずです。
  +
  +
{{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>}}
  +
  +
== 参照 ==
  +
  +
*{{man|1|xmodmap}}
  +
*[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]

2018年1月5日 (金) 00:08時点における版

関連記事

xmodmapXorg におけるキーマップやマウスボタンのマッピングを変更するためのユーティリティです。

xmodmap は直接 X KeyBoard extension (XKB) と関連するわけではありません。X の中でキーコードが処理される方法については別の (XKB より前の) 概念を使っています。基本的に、xmodmap はシンプルな作業にのみ使用することを推奨されます。レイアウトの高度な設定については X KeyBoard extension を見て下さい。

ノート: xmodmap の設定は setxkbmap でリセットされます。英数キーをマップで指定した値に変えるだけでなく、他の全てのキーを起動時のデフォルトにリセットします [1]

イントロダクション

Xorg におけるキーボードの値には2種類あります: キーコードキーシムです。

キーコード (keycode)
キーコードはキーやマウスボタンが押された時にカーネルによって生成される番号のことです。
キーシム (keysym)
キーシムキーコードに割り当てられている値です。例えば、A を押すと keycode 73 が生成されますが、このキーコードは keysym 0×61 にマッピングされており、このキーシムは ASCII 表A に対応しています。
キーシムキーコード-キーシムの対応関係を示すキーコードの表で Xorg によって管理されており、この表はキーマップテーブルと呼ばれます。キーマップテーブルは xmodmap を実行することで確認できます。

インストール

xmodmapxorg-xmodmap パッケージでインストールすることができます。

任意で、xmodmap のグラフィカルフロントエンドである xkeycaps をインストールしてください。

キーマップテーブル

現在のキーマップテーブルを整形して表示:

$ xmodmap -pke
[...]
keycode  57 = n N
[...]

各行のキーコードの後に付いているのはマッピングされているキーシムです。上記の例では keycode 57 が小文字の n にマッピングされていることを示しており、大文字の Nキーコード 57 + Shift にマッピングされています。

テーブルの中のキーシムのカラムは特定の修飾キーの組み合わせに対応しています:

  1. Key
  2. Shift+Key
  3. mode_switch+Key
  4. mode_switch+Shift+Key
  5. AltGr+Key
  6. AltGr+Shift+Key

全てのキーシムを設定する必要は必ずしもありませんが、後ろの方のキーシムだけを設定するときは、NoSymbol を使います。

どのキーコードがキーに対応しているのか確認するには、特別なキーボードキー#Xorgxev ユーティリティの使い方を見て下さい。

ヒント: マルチメディアキーにはわかりやすいキーシムが事前定義されています (例: XF86AudioMuteXF86Mail)。これらのキーシム/usr/include/X11/XF86keysym.h で確認できます。マルチメディアプログラムの多くは特に設定をしなくてもこれらのキーシムが使えるように作られています。

カスタムテーブル

キーマップを作成するには (~/.Xmodmap):

$ xmodmap -pke > ~/.Xmodmap

変更をテストするには:

$ xmodmap ~/.Xmodmap

カスタムテーブルを有効化

GDM, XDM, 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 を使って修飾キーを上書きすることもできます。例: ControlSuper (Windows キー) の置き換え。

割り当てる前に修飾キーを空にする必要があります。! がコメントです。以下の例では ControlMod4 だけ消去しています。それから 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    =
ノート: 上記の例は Control_LControl_R キーシムを Control 修飾キーに、Super_LSuper_R キーシムを Mod4 修飾キーに割り当てていることが前提です。X Error of failed request: BadValue (integer parameter out of range for operation) というエラーメッセージが表示される場合、適当に合わせてください。xmodmap を実行すれば修飾キーのリストが表示されます。

以下の例では CapsLockControl に、Shift+CapsLockCapsLock に変更しています:

~/.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 にする

CapsLockControl に変えるシンプルな例:

~/.Xmodmap
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R

CapsLock を Control に、LeftControl を Hyper にする

ノートパソコンを使っている場合 CapsLockControl として使えると便利です。さらに 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

参照