「特別なキーボードキー」の版間の差分
細 (→Corsair K シリーズ: 空白) |
Kusanaginoturugi (トーク | 投稿記録) (カテゴリの修正) |
||
1行目: | 1行目: | ||
− | [[Category:キーボード]] |
+ | [[Category:キーボード設定]] |
[[en:Extra keyboard keys]] |
[[en:Extra keyboard keys]] |
||
[[ru:Extra keyboard keys]] |
[[ru:Extra keyboard keys]] |
2021年10月7日 (木) 10:21時点における版
多くのキーボードには何らかの特別なキーが付いており (ホットキーやマルチメディアキーとも呼ばれる)、アプリケーションを起動したり特殊な文字を打ち込むのに使われます (標準的なキーマップには含まれていない機能)。udev は様々なキーボードに関する巨大なデータベースを持っているため、基本的なキーボードは何も設定せずとも問題なく動作します。最近発売されたばかり、または非常にレアなハードウェアを使っている場合に、マッピングを手動で調整する必要がでてきます。
キーマッピングを変更する前に、そのキーがシステムでどう認識されているのか知らなくてはなりません。いくつかの段階に分かれています:
- スキャンコードは最下層のキー識別番号で、キーボードがコンピュータに送信する値になります。
- キーコードは2番目のキー識別子で、キーコードは機能に対応しています。
- キーシムは3番目のキー識別子で、シンボルに対応しています。キーシムは Shift キーなどの修飾キーが押されているかどうかによって変わります。
スキャンコードはキーコードにマップされており、キーコードは使用しているキーボードレイアウトにあわせてキーシムにマップされています。ほとんどのキーにはキーコードが割り当てられているはずです。そして、キーコードがなくともスキャンコードは存在するでしょう。スキャンコードが存在しないキーはカーネルによって認識されていません。ゲーミングキーボードに追加されているキーなどでスキャンコードがないことがあります。
Xorg では、特定のキーシム (例: XF86AudioPlay
, XF86AudioRaiseVolume
など) をアクションにマップすることができます (例: アプリケーションの起動)。詳しくは Xorg での特別なキーボードキー#キーシムをアクションにマップ を見て下さい。
Linux コンソールでは、特定のキーシム (例: F1
から F246
) を特定のアクションにマップすることができます (例: 他のコンソールへの切り替えや特定の文字列の打ち込みなど)。詳しくはコンソールでの特別なキーボードキーを見て下さい。
キーコードの確認
スキャンコード
showkey を使う
スキャンコードを取得するときは showkey ユーティリティを使うのが一般的です。showkey はキーが押されるまで待機し、10秒たってもキーが押されなかった場合、終了します。showkey を使用するには仮想端末上で実行させる必要があり、グラフィカル環境やネットワーク接続を介してログインした場合は使用できません。次のコマンドを実行してください:
# showkey --scancodes
コマンドを実行した後にキーボードのキーを押してみて下さい。スキャンコードが出力されます。
evtest を使う
USB キーボードの場合、showkey ではなく evtest パッケージに入っている evtest を使う必要があります [1]:
# evtest /dev/input/event12 ... Event: time 1434666536.001123, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70053 Event: time 1434666536.001123, type 1 (EV_KEY), code 69 (KEY_NUMLOCK), value 0 Event: time 1434666536.001123, -------------- EV_SYN ------------
MSC_SCAN
の "value" フィールドを使って下さい。上記の例の場合、NumLock のスキャンコードは 70053 でキーコードは 69 です。
dmesg を使う
調べたいキーを押して dmesg
コマンドの出力を確認することでキーのスキャンコードを取得できます。例えば、以下のように表示された場合:
Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0
必要なスキャンコードは 0xa0
です。
キーコード
コンソール
仮想端末のキーコードは showkey ユーティリティを使って確認できます。showkey はキーが押されるのを待機して、10秒間何もないと終了します。10秒間放置する以外に終了する方法はありません。showkey は仮想端末から実行する必要があります。グラフィカル環境から実行してはいけません。次のコマンドを実行して何かキーボードのキーを押して見て下さい:
# showkey --keycodes
キーコードが画面に出力されるはずです。
Xorg
Xorg によって使用されるキーコードは xev という名前のユーティリティで判別できます (xorg-xev パッケージに入っています)。もちろん xev を使用するには、コンソールではなくグラフィカル環境から実行する必要があります。
次のコマンドで xev を起動して肝心の部分だけを表示できます:
$ xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
出力例:
38 a 55 v 54 c 50 Shift_L 133 Super_L 135 Menu
キーを押してもターミナルに何も表示されない場合、キーにスキャンコードが設定されていないかスキャンコードがキーコードにマッピングされていない、あるいは他のプロセスがキーの押下をキャプチャしています。X サーバーを使用しているプロセスがキーの押下を取得してしまっているようなときは、新しい X セッションから xev を実行してみてください:
$ xinit /usr/bin/xterm -- :1
スキャンコードをキーコードにマッピング
次の記事を参照してください: スキャンコードをキーコードにマップ。
キーコードをキーシムにマッピング
コンソール
次の記事を参照してください: コンソールでの特別なキーボードキー。
Xorg
次の記事を参照してください: xmodmap。
ノートパソコン
Apple MacBook
MacBook に関する情報は Apple Keyboard の記事を読んでください。
Asus M シリーズ
Asus マシンの光学センサーやマルチメディアキーを制御するには、次のコマンドを実行してください:
# echo 1 > /sys/devices/platform/asus_laptop/ls_switch
起動時に上記コマンドを実行させるには Systemd tmpfile を作成:
/etc/tmpfiles.d/local.conf
w /sys/devices/platform/asus_laptop/ls_switch - - - - 1
Asus N56VJ
特殊キーが動作しない場合、次のコマンドで asus-nb-wmi
カーネルモジュールをロードしてみてください:
# modprobe asus-nb-wmi
それから xev をもう一度確認してください。acpi_osi="!Windows 2012"
ブートオプションを使っている場合、xev で変な結果が表示されることがあるので、使わないようにしてください。モジュールをロードすることで問題が解決する場合、カーネルモジュールの記事に書かれているようにして、起動時にモジュールをロードするようにしてください。
Lenovo T460p
始めの状態では /dev/input
インターフェイスからでもバックライトキー (F5, F6) が使えません。解決するには、ブートパラメータに以下のオプションを追加してみてください:
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... video.use_native_backlight=1 ..."
ゲーミングキーボード
ゲーミングキーボードに搭載されている特殊な機能が Linux でおかしな挙動を引き起こすことがあります。
Cooler Master CM Storm QuickFire TK
N キーロールオーバーと Win-Lock キーが Linux で問題を起こします。
N キーロールオーバーはファンクションキーに干渉することがあります [2]。N キーロールオーバーを無効化するには、FN ロックキー (右 Ctrl の横にあるキー) を押し続けてライトが点いたら、Escape を押しながら 6 を押すことで 6 キーロールオーバーに切り替わります。FN ロックキーを押すと Fn ロックが無効になります。
Win-Lock キーは Super (Windows) キーを完全に無効化します。FN ロックキーと F12 を同時に押すことで Win-Lock のオンオフを切り替えられます。
Corsair K シリーズ
このキーボードにはキーボードの右上 NumLock と CapsLock の間に、Super (Windows) キーを無効化する winlock ボタンがあります。 CKB ドライバーを利用すると、winlock 機構を完全に無効化できます。しかし既定では、winlock ボタンをもう一度押すと Super (Windows) キーが有効になります。
Logitech G シリーズ G710 と 710+
6個のプログラマブル G キーが搭載されたキーボードです。正しく使用するには sidewinderdAUR をインストールして sidewinderd.service
を起動する必要があります。Logitech ゲーミングキーボードも参照。
参照
- Enabling Keyboard Multimedia Keys - LinuxQuestions wiki のガイド