OK、これはhttps://help.ubuntu.com/community/MultimediaKeysで見つけました
キーボードのキーを押すと、Linuxカーネルはそのキーのrawスキャンコードを生成します(割り当てられている場合)。各スキャンコードはキーコードにマッピングできます。これはカーネルレベルです。Xには(準)完全に独立したキーマッピング方法があります:Xは起動時にカーネルキーコードテーブルを読み取り、キーコードをその独立したキーコードテーブルにマッピングします(カーネルキーコードと同じですが、:))。次に、各キーコードをキーシム、つまりキーを表すまたはアクションを提案する文字列にマッピングできます。したがって、キーを完全に機能させるには、カーネルスキャンコード/キーコードとXキーコード/キーシンボルが必要です。奇妙に思えるかもしれませんが、X開発者には、カーネルとは別個のキーボードマッピングを保持する理由があります。それはまったく難しいことではなく、非常に退屈な手順です。
それで、キーコードはキーシムにマッピングされます。キーシムはどこにありますか?私はこの質問から見つけて答えます:最近、すべてのXキーシムのリストはどこにありますか?ボリュームキーについて話しているのでXF86keysym.h
、答えに記載されているソースコードにあります。
私のコンピューター上のそのファイルで、ボリュームについて以下を見つけました。
#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
奇妙な...他のものとは異なる値、おそらくキーを処理するための複数のシステムがありますか?http://crunchbang.org/forums/viewtopic.php?id=16656
Xubuntuを使用しています。キーを制御するには、アクションを手動でマッピングする必要があります(xubuntuでキーボードショートカットを変更するにはどうすればよいですか?)。ただし、通知はキーを押してそれに応じて動作するかのように独立しているように見えます。これは、Ubuntuの他のプログラムがこのように設定されているため、スクリプトをキーにマップする必要がないことを意味します。
だから、私はプログラムがキーを拾い上げていると確信している(だからスクリップが見つからない)。
Xubuntuでは、Pulse Audioでこの問題が発生し、カスタムスクリプトを使用して音量を変更していました。
NotifyOSD https://wiki.ubuntu.com/NotifyOSD#Volume_changesについて確認してください
これらの図を見れば:https : //wiki.ubuntu.com/NotifyOSD#Architecture
特にこれ:
DBusまたはHALからフォームを受け取る「ハードウェアキーリスナー」があることを示しています。次に、サウンドと輝度のアイコンがNotify-OSDのソースにある「システムから視覚要素を取得」し、そこからバブルを作成します。
これはすべて非常に紛らわしいですが、私が理解している限り(これまで):
rawスキャンコード(例:e016)>キーコード(例:160)> keysym(例:XF86AudioMute)> gnome-settings-daemon(例:ボリュームアップ)> DBus信号> notify-osdのハードウェアキーリスナー(またはその他)プログラムリスニング)