「Apple Keyboard」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「http://pastebin.com/」を「https://pastebin.com/」に置換)
(同期)
38行目: 38行目:
 
options hid_apple fnmode=2
 
options hid_apple fnmode=2
 
</nowiki>}}
 
</nowiki>}}
  +
  +
初期 RAM ディスクで上記の変更を適用したい場合、[[Mkinitcpio#設定|mkinitcpio]] の設定 (通常は {{ic|/etc/mkinitcpio.conf}}) で、{{ic|HOOKS}} 変数に {{ic|modconf}} を指定するか {{ic|FILES}} 変数で {{ic|/etc/modprobe.d/hid_apple.conf}} を指定してください。変更を反映するには[[Mkinitcpio#イメージ作成とアクティベーション|イメージの再生成]]が必要です。
  +
  +
キーボードのモデルが A1644 の場合、[https://bugzilla.kernel.org/attachment.cgi?id=258205 こちら] のパッチ ([https://bugzilla.kernel.org/show_bug.cgi?id=99881#c41]) を使うことでファンクション・メディアキーの問題を解決できます。
   
 
===上記の設定が無線キーボードで動作しない場合===
 
===上記の設定が無線キーボードで動作しない場合===
43行目: 47行目:
 
{{ic|hid_apple/parameters}} や {{ic|hid/parameters/pb_fnmode}} が最近の Apple Bluetooth キーボードモデルとカーネル 3.4 では見つからないことがあります。
 
{{ic|hid_apple/parameters}} や {{ic|hid/parameters/pb_fnmode}} が最近の Apple Bluetooth キーボードモデルとカーネル 3.4 では見つからないことがあります。
   
まず、キーボードを確認してください。root で次を実行 ({{ic|hidd}} は[[公式リポジトリ]]の {{Pkg|bluez}} パッケージに含まれています):
+
まず、キーボードを確認してください。root で次を実行 ({{ic|hidd}} は {{Pkg|bluez}} パッケージに含まれています):
 
# hidd --show
 
# hidd --show
   
148行目: 152行目:
 
==Apple Keyboard を通常のキーボードと同じように扱う==
 
==Apple Keyboard を通常のキーボードと同じように扱う==
   
  +
2つの方法が存在します。カスタマイズしたいことにあわせて選択してください。
Apple キーボードを ({{ic|Meta}} の左側に {{ic|Alt}} がある) 標準の英語レイアウトキーボードのように使いたい場合、[[AUR]] の {{AUR|un-apple-keyboard}} パッケージを使用することができます。現在はアルミニウムの USB モデルでしか動作しません。このパッケージは以下のことを行います:
 
  +
  +
=== hid-apple のパッチを使う ===
  +
  +
オリジナルの {{ic|hid-apple}} モジュールにはキーボードをカスタマイズするオプションがありません (例: {{ic|Fn}} キーと左の {{ic|Ctrl}} キーを交換したり、{{ic|Super}} キーの左側に {{ic|Alt}} キーを持ってくるなど)。モジュールに機能を追加する [https://github.com/free5lot/hid-apple-patched パッチ] が存在します。パッチは {{AUR|hid-apple-patched-git-dkms}} パッケージで[[インストール]]できます。
  +
  +
カーネルモジュールのパッチに加えて、パッケージには {{ic|/etc/modprobe.d/hid_apple_pclayout.conf}} 設定ファイルも含まれており、デフォルトで以下のレイアウトが有効になります:
  +
  +
* 最上段のキーは通常のファンクションキーとなり、Fn キーを押したときだけメディアキーになります。[[#ファンクションキーが動作しない]]を参照。
  +
* 左下の4つのキーは {{ic|Ctrl}}, {{ic|Fn}}, {{ic|Super}}, {{ic|Alt}} となります。
  +
* {{ic|Super}} と右側の {{ic|Alt}} キーが入れ替わります。
  +
* {{ic|Ejectcd}} キーがある場合、{{ic|Delete}} キーとして認識するようになります ({{ic|1=ejectcd_as_delete=1}} オプション)。
  +
  +
設定オプションと設定ファイルについて詳しくは https://github.com/free5lot/hid-apple-patched#configuration を参照してください。
  +
  +
{{Note|設定ファイルを ''initramfs'' に追加しないと起動後に自動的に機能しません。追加する方法は [[Mkinitcpio#BINARIES と FILES]] や [[Mkinitcpio#HOOKS]] (必要なフックの名前は {{ic|modconf}}) を見てください。}}
  +
  +
インストールしても変更はすぐにはカーネルには適用されません。システムを再起動すれば効果が反映されます。
   
  +
=== un-apple-keyboard を使う ===
*{{ic|/etc/modprobe.d/hid_apple.conf}} ファイルを追加してデフォルトで {{ic|F}} キーを有効化。
 
*keyfuzz を使って {{ic|F13-15}} を {{ic|PrintScreen}}/{{ic|SysRq}}, {{ic|Scroll Lock}}, {{ic|Pause}} にマッピングする。
 
*{{ic|/etc/modprobe.d/hid_apple.conf}} を使用して他のキーボードと同じように {{ic|Alt}} と {{ic|Meta}} ({{ic|Command}}) の並びを入れ替える。
 
*[[udev]] ルールを使って、キーボードを接続したときに自動的に変更を適用する。
 
   
  +
カスタマイズは必要なく手動でモジュールをコンパイルしたり [[DKMS]] を使いたくない場合、{{AUR|un-apple-keyboard}} パッケージを使用することができます。このパッケージは以下のことを行います:
[[mkinitcpio|mkinitcpio.conf]] の FILES に {{ic|/etc/modprobe.d/hid_apple.conf}} を追加する必要があります。追加しないと Apple Keyboard を接続してコンピューターを起動した時に、F キーがデフォルトになりません。
 
   
  +
* キーボードが通常の ISO キーボードのように認識されます ({{ic|<}} と {{ic|>}} が {{ic|Left Shift}} キーの右側にあるように動作します)。
== Alt キーと Command キーを交換 (Meta/Super) ==
 
  +
* ファンクションキーはデフォルトで無効になります。ファンクションキーを使うには {{ic|Fn}} キーも押す必要があります。デフォルトでは {{ic|F1}} から {{ic|F12}} キーにこの挙動が適用されます。
  +
* {{ic|Alt}} と {{ic|Meta}} ({{ic|Command}}) を入れ替える。
  +
* {{ic|F13}} を {{ic|SYSRQ}} に、{{ic|F14}} を {{ic|Scroll Lock}} に、{{ic|F15}} を {{ic|Pause}} にマッピングする。
   
  +
最初の3つはデフォルトのカーネルモジュール {{ic|hid-apple}} を使用して実現し、最後の1つは {{AUR|keyfuzz}} にマッピングして実現します。
一時的に動作を変えたい場合、{{ic|/sys/module/hid_apple/parameters/swap_opt_cmd}} に {{ic|1}} を書き込んでください。永続的に設定を変更したい場合 {{ic|hid_apple}} [[カーネルモジュール]]の {{ic|swap_opt_cmd}} オプションを 1 に設定してください。
 
   
  +
=== 再起動せずに挙動を変更する ===
== Fn キーと左の Ctrl キーを交換 ==
 
  +
{{Warning|キーボードとタッチパッド以外に入力デバイスがない場合、以下のコマンドの実行が失敗してコンピュータに入力ができなくなる可能性があるので注意してください。}}
   
  +
再起動せずにカーネルモジュールをリロードするには {{ic|# rmmod hid_apple && modprobe hid_apple}} を実行してください。
オリジナルの {{ic|hid-apple}} モジュールには fn キーと左 control キーを交換するオプションはありませんが、モジュールに機能を追加する [https://github.com/free5lot/hid-apple-patched パッチ] が存在します。パッチを使用するには {{AUR|hid-apple-patched-git}}{{Broken package link|パッケージが存在しません}} パッケージを[[インストール]]してください。
 
   
  +
== Magic Keyboard が接続できない ==
一時的に動作を変えたい場合、{{ic|/sys/module/hid_apple/parameters/swap_fn_leftctrl}} に {{ic|1}} を書き込んでください。永続的に設定を変更したい場合、{{ic|hid_apple}} [[カーネルモジュール]]の {{ic|swap_fn_leftctrl}} オプションを 1 に設定してください。
 
   
  +
GNOME 3 の設定の Bluetooth メニューなどのツールで Magic Keyboard をシステムに接続できない場合、[[Blueman]] をインストールして接続してみてください。それでも接続に失敗する場合、bluetoothctl と hcitool が使用できることを確認してください。
{{Note|
 
*{{AUR|hid-apple-patched-git}}{{Broken package link|パッケージが存在しません}} のデフォルト設定で左 option と command キーが交換されるため [[#Alt キーと Command キーを交換 (Meta/Super)|Alt キーと Command キーを交換 (Meta/Super)]] を設定する必要はありません。
 
*{{AUR|hid-apple-patched-git}}{{Broken package link|パッケージが存在しません}} には ejectcd キーを Apple Keyboard に存在しない delete キーとして使用するオプションも存在します。{{ic|1=ejectcd_as_delete=1}} オプションによってデフォルトで有効になります。}}
 
   
 
== 参照 ==
 
== 参照 ==
175行目: 195行目:
 
*https://help.ubuntu.com/community/AppleKeyboard
 
*https://help.ubuntu.com/community/AppleKeyboard
 
*https://github.com/hlechner/xmodmap-aluminium-pt-br
 
*https://github.com/hlechner/xmodmap-aluminium-pt-br
  +
*https://github.com/free5lot/hid-apple-patched

2018年5月13日 (日) 00:42時点における版

関連記事

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

Numlock が有効

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

もしくは、xmodmap を使って手動でキーコードを設定することで Numlock を使わないようにできます:

keycode  90 = KP_0 KP_0 KP_0 KP_0 KP_0 KP_0
keycode  87 = KP_1 KP_1 KP_1 KP_1 KP_1 KP_1
keycode  88 = KP_2 KP_2 KP_2 KP_2 KP_2 KP_2
keycode  89 = KP_3 KP_3 KP_3 KP_3 KP_3 KP_3
keycode  83 = KP_4 KP_4 KP_4 KP_4 KP_4 KP_4
keycode  84 = KP_5 KP_5 KP_5 KP_5 KP_5 KP_5
keycode  85 = KP_6 KP_6 KP_6 KP_6 KP_6 KP_6
keycode  79 = KP_7 KP_7 KP_7 KP_7 KP_7 KP_7
keycode  80 = KP_8 KP_8 KP_8 KP_8 KP_8 KP_8
keycode  81 = KP_9 KP_9 KP_9 KP_9 KP_9 KP_9

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

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

初期 RAM ディスクで上記の変更を適用したい場合、mkinitcpio の設定 (通常は /etc/mkinitcpio.conf) で、HOOKS 変数に modconf を指定するか FILES 変数で /etc/modprobe.d/hid_apple.conf を指定してください。変更を反映するにはイメージの再生成が必要です。

キーボードのモデルが A1644 の場合、こちら のパッチ ([1]) を使うことでファンクション・メディアキーの問題を解決できます。

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

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

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

# 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 からパッチはマージされています): https://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 で動作するゲームでスクリーンショットを撮影するなど) が使えません。

.xinitrcsetxkbmap -option "apple:alupckeys" を追加することで解決できます。PrintScreen/SysRqF13 に、Scroll lockF14 に、PauseF15 にマッピングします。

もしくは 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 のスキャンコードで、99PrintScreen/SysRq のキーコードです。/usr/include/linux/input.h からキーコードを確認できます。特定のキーのスキャンコードを確認する方法は特別なキーボードキー#スキャンコードを見てください。

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

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

2つの方法が存在します。カスタマイズしたいことにあわせて選択してください。

hid-apple のパッチを使う

オリジナルの hid-apple モジュールにはキーボードをカスタマイズするオプションがありません (例: Fn キーと左の Ctrl キーを交換したり、Super キーの左側に Alt キーを持ってくるなど)。モジュールに機能を追加する パッチ が存在します。パッチは hid-apple-patched-git-dkmsAUR パッケージでインストールできます。

カーネルモジュールのパッチに加えて、パッケージには /etc/modprobe.d/hid_apple_pclayout.conf 設定ファイルも含まれており、デフォルトで以下のレイアウトが有効になります:

  • 最上段のキーは通常のファンクションキーとなり、Fn キーを押したときだけメディアキーになります。#ファンクションキーが動作しないを参照。
  • 左下の4つのキーは Ctrl, Fn, Super, Alt となります。
  • Super と右側の Alt キーが入れ替わります。
  • Ejectcd キーがある場合、Delete キーとして認識するようになります (ejectcd_as_delete=1 オプション)。

設定オプションと設定ファイルについて詳しくは https://github.com/free5lot/hid-apple-patched#configuration を参照してください。

ノート: 設定ファイルを initramfs に追加しないと起動後に自動的に機能しません。追加する方法は Mkinitcpio#BINARIES と FILESMkinitcpio#HOOKS (必要なフックの名前は modconf) を見てください。

インストールしても変更はすぐにはカーネルには適用されません。システムを再起動すれば効果が反映されます。

un-apple-keyboard を使う

カスタマイズは必要なく手動でモジュールをコンパイルしたり DKMS を使いたくない場合、un-apple-keyboardAUR パッケージを使用することができます。このパッケージは以下のことを行います:

  • キーボードが通常の ISO キーボードのように認識されます (<>Left Shift キーの右側にあるように動作します)。
  • ファンクションキーはデフォルトで無効になります。ファンクションキーを使うには Fn キーも押す必要があります。デフォルトでは F1 から F12 キーにこの挙動が適用されます。
  • AltMeta (Command) を入れ替える。
  • F13SYSRQ に、F14Scroll Lock に、F15Pause にマッピングする。

最初の3つはデフォルトのカーネルモジュール hid-apple を使用して実現し、最後の1つは keyfuzzAUR にマッピングして実現します。

再起動せずに挙動を変更する

警告: キーボードとタッチパッド以外に入力デバイスがない場合、以下のコマンドの実行が失敗してコンピュータに入力ができなくなる可能性があるので注意してください。

再起動せずにカーネルモジュールをリロードするには # rmmod hid_apple && modprobe hid_apple を実行してください。

Magic Keyboard が接続できない

GNOME 3 の設定の Bluetooth メニューなどのツールで Magic Keyboard をシステムに接続できない場合、Blueman をインストールして接続してみてください。それでも接続に失敗する場合、bluetoothctl と hcitool が使用できることを確認してください。

参照