Oke, temukan ini di https://help.ubuntu.com/community/MultimediaKeys
Ketika Anda menekan tombol pada keyboard Anda, kernel linux menghasilkan scancode mentah untuk itu (jika ditugaskan). Setiap scancode dapat dipetakan ke kode kunci. Ini pada level kernel. X memiliki cara pemetaan kunci independen total (kuasi): X membaca tabel kode kunci kernel saat startup, kemudian memetakan kode kunci tersebut ke tabel kode kunci independennya (sama dengan kode kunci kernel tetapi berbeda :)). Kemudian setiap kode kunci dapat dipetakan ke keysym, yaitu string yang mewakili kunci atau menyarankan suatu tindakan. Dengan demikian agar kunci kita berfungsi penuh, mereka membutuhkan scancode / keycode kernel ditambah keycode / keysym. Ini mungkin terlihat aneh, tetapi pengembang X memiliki alasan untuk menyimpan pemetaan keyboard terpisah dari kernel. Sama sekali tidak sulit, hanya prosedur yang cukup membosankan.
Jadi kode kunci dipetakan ke kunci-kunci, Jadi di mana kunci-kunci itu? Saya menemukan dan menjawab dari pertanyaan ini: Di mana saya menemukan daftar semua kunci X hari ini? Karena kita berbicara tentang kunci volume, itu akan ditemukan di XF86keysym.h
dalam kode sumber yang disebutkan dalam jawaban.
Dalam file itu di komputer saya, saya menemukan berikut ini untuk volume:
#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
Aneh ... nilai yang berbeda dari yang lain, mungkin ada beberapa sistem untuk menangani kunci? http://crunchbang.org/forums/viewtopic.php?id=16656
Saya menggunakan Xubuntu, dan untuk mengontrol tombol, saya perlu memetakan tindakan secara manual (seperti ini Bagaimana cara mengubah pintasan keyboard saya di xubuntu? ). Namun, notifikasi tersebut tampak independen seolah-olah mereka mengambil penekanan tombol dan bertindak sesuai, Ini mungkin berarti bahwa program lain di Ubuntu diatur dengan cara ini, jadi tidak perlu memetakan skrip ke tombol.
Jadi saya cukup yakin bahwa program sekarang mengambil kunci (jadi tidak ada skrip yang ditemukan).
Di Xubuntu saya punya masalah dengan Pulse Audio dan menggunakan skrip khusus untuk mengubah volume, Tampaknya Pulse mencegat tombol Bisu, tombol Bisu membisukan Alsa dan PulseAudio, tetapi tidak bersuara hanya Alsa yang dibuat untuk penyelesaian yang menarik.
Lihat ini tentang NotifyOSD https://wiki.ubuntu.com/NotifyOSD#Volume_changes
Jika Anda melihat diagram ini: https://wiki.ubuntu.com/NotifyOSD#Architecture
Terutama yang ini:
Ini menunjukkan bahwa ada "pendengar kunci perangkat keras" yang menerima formulir DBus atau HAL? Ini kemudian "mengambil elemen visual dari sistem" yang ikon suara dan kecerahan di sumber Notify-OSD, dan kemudian membuat gelembung dari sana.
Ini semua membingungkan, tetapi sejauh yang saya mengerti (sejauh ini):
raw scancode (mis. e016)> kode kunci (mis. 160)> keysym (mis. XF86AudioMute)> gnome-settings-daemon (mis. volume-up)> sinyal DBus> hardware-keys-listener untuk notify-osd (atau lainnya mendengarkan program)