Apple Keyboard

提供: ArchWiki
移動先: 案内検索

一部の Apple 製のキーボードではキーが変わっていたり動作しなかったりすることがあります。この記事ではキーボードにあわせて適切な動作をするように設定を変更する方法を説明します。

Numlock が有効

numlock が有効になってしまうと物理キーと 7,8,9,u,i,o,j,k,l と周りのキーしか動作しなくなり数字が出力されるようになります。これを修正するには Fn+F6 を二度押して下さい。

ファンクションキーが動作しない

F<num> キーが動作しない場合、キーボードのカーネルドライバーがメディアキーを使用することをデフォルトにしているのが原因で、F<num> キーを動作させるには Fn キーを使う必要があります。この挙動を変更するには、ドライバーの設定を変更してください。root で以下を実行:

# echo 2 > /sys/module/hid_apple/parameters/fnmode

ファイルが存在しないと表示される場合は、カーネルが古いので代わりに以下を実行してください:

# echo 2 > /sys/module/hid/parameters/pb_fnmode

設定を永続的にするには /etc/modprobe.d/hid_apple.conf にオプションを記述してください:

/etc/modprobe.d/hid_apple.conf
options hid_apple fnmode=2

上記の設定が無線キーボードで動作しない場合

hid_apple/parametershid/parameters/pb_fnmode が最近の Apple Bluetooth キーボードモデルとカーネル 3.4 では見つからないことがあります。

まず、キーボードを確認してください。root で次を実行 (hidd公式リポジトリbluez パッケージに含まれています):

# hidd --show

以下のような表示がされます:

40:CA:EC:32:85:AB Apple Wireless Keyboard [05ac:0255] connected 

ベンダー ID (05ac) とデバイス ID (0255) から、カーネルがキーボードをサポートしているかどうか簡単に確認できます。実際、Linux カーネル 3.4 では上記のデバイスがサポートされています。drivers/hid/hid-ids.h の中に以下の行が確認できます:

#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI  0x0255

ただしファンクションキーのサポートはありません。

この問題を修正するには以下のパッチを使って abs からカーネルを再ビルドしてください (Linux カーネル 3.5 からパッチはマージされています): http://pastebin.com/CvFJz3Fn

バグはすでに上流に報告済みです: https://bugzilla.kernel.org/show_bug.cgi?id=43135

< と > が § と ½ に入れ替わる

<>§½ キーに入れ替わる場合、グラフィカル環境で次のコマンドを実行してください:

$ setxkbmap -option apple:badmap

ログイン時に自動的に設定させるようにするには ~/.bashrc ファイルに上のコマンドを記述します。

システム全体で変更を適用させるには以下のように /etc/X11/xorg.conf.d/10-keymap.conf を作成 (または編集) します:

Section "InputClass"
    Identifier "keyboard catchall"
    MatchIsKeyboard "true"
    Driver "evdev"
    Option "XkbOptions" "apple:badmap"
EndSection

上記の方法で上手く行かない場合、以下の2行を ~/.Xmodmap ファイルに追加してください:

keycode  49 = less greater less greater bar brokenbar
keycode  94 = section degree section degree notsign notsign

("ù" と "/" が変わっている) カナダマルチリンガルレイアウトを使っている場合、以下を使って下さい:

keycode  94 = slash backslash slash backslash bar brokenbar
keycode  49 = ugrave Ugrave ugrave Ugrave notsign notsign

そして xmodmap ~/.Xmodmap を実行します。上記のコマンドも ~/.bashrc に記述することができます。

< と > が ^ と ° (あるいは @ と #) に入れ替わる

ドイツ語レイアウトでは、アクセント記号 (^) とデグリー記号 (°) が小なり記号 (<) と大なり記号 (>) に入れ替わっています。フランス語レイアウトでは、@# が入れ替わっています。

新しい方法:

まず、新しい方法を試してみてください (root で実行する必要があります):

# echo 0 > /sys/module/hid_apple/parameters/iso_layout

変更を永続化させるには /etc/modprobe.d/hid_apple.conf に以下の行を記述:

options hid_apple iso_layout=0

古い方法:

$ xmodmap -e 'keycode 49 = less greater less greater bar brokenbar bar' -e 'keycode 94 = dead_circumflex degree dead_circumflex degree U2032 U2033 U2032'

キーを押してみて問題ないようでしたら、以下を実行することで変更を永続化できます:

$ xmodmap -pke | grep " 49" >> ~/.Xmodmap
$ xmodmap -pke | grep " 94" >> ~/.Xmodmap

` と ~ キーで < と > が出力される

US レイアウトでは、バッククォートキーとチルダキーは小なりと大なりを出力します。

まず、(root で) 以下の方法が使えないか試して下さい:

# echo 0 > /sys/module/hid_apple/parameters/iso_layout

変更を永続化させるには以下の行を /etc/modprobe.d/hid_apple.conf に追加:

options hid_apple iso_layout=0

メディアキー

デフォルトで evdev ドライバーはメディアキーについて適当なキーシムにマッピングされたキーコードを生成します。コンソールウィンドウで xev を実行してメディアキーを押したときのコンソール出力を見ることで確認できます。

メディアキーを使用するには、適当なアクションをメディアキーに割り当てる必要があります。詳しくは Xorg での特別なキーボードキーを参照してください。

メディアキーが適当なキーコードを生成しないときは、~/.Xmodmap ファイルを作成・編集して以下の行を記述してください:

keycode 160 = XF86AudioMute
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume

keycode 144 = XF86AudioPrev
keycode 162 = XF86AudioPlay
keycode 153 = XF86AudioNext

keycode 101 = XF86MonBrightnessDown
keycode 212 = XF86MonBrightnessUp

keycode 204 = XF86Eject

そして xmodmap ~/.Xmodmap を実行してください。このコマンドを ~/.bashrc ファイルに追加することでログイン時に自動的に実行させることができます。

PrintScreen と SysRq

Apple Keyboard には PrintScreen/SysRq キーの代わりに F13 キーがあります。このため Alt+SysRq シーケンスと、PrintScreen を使用するアプリケーションのアクション (Wine で動作するゲームでスクリーンショットを撮影するなど) が使えません。どちらの問題も Arch User Repository から keyfuzzAUR をインストールすることで解決できます。

keyfuzz をインストールしたら、次のコマンドを実行してください:

echo "458856 99" | /usr/sbin/keyfuzz -s -d /dev/input/by-id/usb-Apple__Inc_Apple_keyboard-event-kbd

458856 (0x070068) は F13 のスキャンコードで、99 は PrintScreen/SysRq のキーコードです。/usr/include/linux/input.h からキーコードを確認できます。特定のキーのスキャンコードを確認する方法は特別なキーボードキー#スキャンコードを見てください。

スキャンコードをキーコードにマップも見てください。

Apple Keyboard を通常のキーボードと同じように扱う

Apple キーボードを (Meta の左側に Alt がある) 標準の英語レイアウトキーボードのように使いたい場合、AURun-apple-keyboardAUR パッケージを使用することができます。現在はアルミニウムの USB モデルでしか動作しません。このパッケージは以下のことを行います:

  • /etc/modprobe.d/hid_apple.conf ファイルを追加してデフォルトで F キーを有効化。
  • keyfuzz を使って F13-15PrintScreen/SysRq, Scroll Lock, Pause にマッピングする。
  • /etc/modprobe.d/hid_apple.conf を使用して他のキーボードと同じように AltMeta (Command) の並びを入れ替える。
  • udev ルールを使って、キーボードを接続したときに自動的に変更を適用する。

mkinitcpio.conf の FILES に /etc/modprobe.d/hid_apple.conf を追加する必要があります。追加しないと Apple Keyboard を接続してコンピューターを起動した時に、F キーがデフォルトになりません。

Alt キーと Command キーを交換 (Meta/Super)

一時的に動作を変えたい場合、/sys/module/hid_apple/parameters/swap_opt_cmd1 を書き込んでください。永続的に設定を変更したい場合 hid_apple カーネルモジュールswap_opt_cmd オプションを 1 に設定してください。

Fn キーと左の Ctrl キーを交換

オリジナルの hid-apple モジュールには fn キーと左 control キーを交換するオプションはありませんが、モジュールに機能を追加する パッチ が存在します。パッチを使用するには hid-apple-patched-gitAUR パッケージをインストールしてください。

一時的に動作を変えたい場合、/sys/module/hid_apple/parameters/swap_fn_leftctrl1 を書き込んでください。永続的に設定を変更したい場合、hid_apple カーネルモジュールswap_fn_leftctrl オプションを 1 に設定してください。

ノート:

参照