Tamam, bunu https://help.ubuntu.com/community/MultimediaKeys adresinde buldum
Klavyenizdeki bir tuşa bastığınızda, linux çekirdeği bunun için bir ham tarama kodu oluşturur (atanmışsa). Her tarama kodu bir anahtar koduyla eşlenebilir. Bu çekirdek seviyesinde. X'in anahtarları eşlemenin toplam bağımsız bir yolu vardır: X başlangıçta çekirdek anahtar kodu tablosunu okur, ardından anahtar kodunu bağımsız anahtar kodu tablosuyla eşler (çekirdek anahtar kodlarıyla aynıdır ancak farklıdır :)). Daha sonra her bir anahtar kodu bir key'e eşlenebilir, yani bir anahtarı temsil eden veya bir eylem öneren bir dize. Bu nedenle, anahtarlarımızın tamamen işlevsel olması için bir çekirdek tarama kodu / anahtar kodu artı bir X anahtar kodu / anahtar kelimesi gerekir. Tuhaf görünebilir, ancak X geliştiricilerinin çekirdekten ayrı bir klavye eşlemesi tutma nedenleri vardır. Hiç de zor değil, sadece oldukça sıkıcı bir prosedür.
Yani keycode'lar keysym ile eşleştirilir, peki keysym'ler nerede? Bu soruyu buldum ve yanıtladım: Bugünlerde tüm X anahtarlarının bir listesini nerede bulabilirim? Ses seviyesi tuşları hakkında konuştuğumuz için,XF86keysym.h
, cevapta belirtilen kaynak kodunda .
Bilgisayarımdaki bu dosyada birim için aşağıdakileri buldum:
#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
Tuhaf ... başka her şeyden farklı değerler, belki anahtarları işlemek için birden fazla sistem var mı? http://crunchbang.org/forums/viewtopic.php?id=16656
Xubuntu kullanıyorum ve tuşları kontrol etmek için, eylemleri elle eşlemeliyim (böyle xubuntu'da klavye kısayollarımı nasıl değiştirebilirim? ). Ancak bildirimler tuşa basar ve buna göre hareket ediyormuş gibi bağımsız görünmektedir, Ubuntu'daki diğer programların bu şekilde ayarlandığı anlamına gelebilir, bu nedenle komut dosyalarını anahtarlarla eşleştirmeye gerek yoktur.
Bu yüzden programların artık anahtarı aldığından eminim (bu yüzden komut dosyaları bulunmayacak).
Xubuntu'da Pulse Audio ile bu sorunu yaşadım ve ses seviyesini değiştirmek için özel komut dosyaları kullandım, Pulse'un Sessiz tuşunu, Sessiz tuşunun Alsa ve PulseAudio'yu susturduğu görülüyordu , ancak sadece Alsa'nın ilginç çözümler için yaptığı sesi açıyor .
NotifyOSD hakkında bunu kontrol edin https://wiki.ubuntu.com/NotifyOSD#Volume_changes
Bu diyagramlara bakarsanız: https://wiki.ubuntu.com/NotifyOSD#Architecture
Özellikle bu:
DBus veya HAL formunu alan bir "donanım anahtar dinleyicisi" olduğunu gösterir. Daha sonra ses ve parlaklık simgelerinin Notify-OSD kaynağında bulunduğu "görsel öğeyi sistemden alır" ve sonra balonu oradan yapar.
Bunların hepsi kafa karıştırıcı, ama anladığım kadarıyla (şimdiye kadar):
raw scancode (ex. e016)> keycode (ex. 160)> keysym (ex. XF86AudioMute)> gnome-settings-daemon (ex. ses şiddeti)> DBus sinyali> notify-osd için donanım tuşları-dinleyici (veya diğer program dinleme)