「Xmodmap」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(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時点における版

関連記事

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

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 にマッピングされています。

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

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

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

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

ヒント: There are predefined descriptive keysyms for multimedia keys, e.g. XF86AudioMute or XF86Mail. These keysyms can be found in /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.

カスタムテーブル

キーマップを作成するには (~/.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 を使って修飾キーを上書きすることもできます。例: ControlSuper (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    =
ノート: The example assumes that the Control_L and Control_R keysyms were assigned to the Control modifier, and Super_L and Super_R keysyms to the Mod4 modifier. If you get the following error message X Error of failed request: BadValue (integer parameter out of range for operation), you will need to adapt accordingly. Running xmodmap produces a list of modifiers and keys that are assigned to them.

以下の例では 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

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

参照