Vaka çalışması 03 · sürüm 12.08.2026
MediaController: klavyeden ses aygıtı yönetimi
Kulaklık ile hoparlör arasında geçmek, mikrofonu kapatmak ve ses seviyesini değiştirmek için ayarlara girmeyi bitiren, arka planda 28 MB yer kaplayan bir denetleyici.
| Süre | Sürekli geliştirme · ilk sürüm 03.2025 |
|---|---|
| Yığın | C#, .NET, Windows Core Audio API, düşük seviye klavye kancası |
| Kullanım | Kendi kullanımım ve açık kaynak kullanıcıları |
| Ölçüm | Kanca yanıtı 6 ms · bellek 28 MB · CPU %0,4 |
| Lisans | Açık kaynak, GitHub |
Sorun
Gün içinde toplantı, müzik ve test arasında geçerken ses çıkışını değiştirmek her seferinde üç tıklama ve bir menü arama gerektiriyordu. Var olan araçların çoğu ya arka planda yüzlerce megabayt tutuyor ya da her açılışta yönetici izni istiyordu.
Karar
Uygulamanın kaynak tüketimi ölçülebilir bir hedefe bağlandı: bellekte 30 MB altında kalmak ve tuşa basıldıktan sonra 10 ms içinde tepki vermek. Arayüz ikinci planda tutuldu, ana kullanım klavyeden. Ayarlar tek bir metin dosyasında saklanıyor, kayıt defterine dokunulmuyor.
Yapılan iş
- Sistem geneli klavye kancası ve çakışma denetimi: aynı tuş iki eyleme bağlanamıyor.
- Ses çıkışı ve girişi arasında tek tuşla geçiş, seviye adımı ayarlanabilir.
- Profiller: toplantı, oyun, sessiz. Her profil kendi cihaz ve seviye takımını taşıyor.
- Cihaz takılıp çıkarıldığında son duruma dönen kurtarma mantığı.
- Yapılan her işlemin zaman damgalı günlüğü, sorun ararken hangi kısayolun tetiklendiğini gösteriyor.
Sonuç
Ölçülen değerler hedefin altında kaldı: kanca yanıt süresi 6 ms, bellek 28 MB, boşta CPU kullanımı yüzde 0,4. Günlük kullanımda 14 kısayol bağlı ve çıkış değiştirme üç tıklamadan tek tuşa indi.
Bu iş neyi gösteriyor
İşletim sistemi seviyesinde çalışan, kullanıcı fark etmeden arka planda duran ve ölçülebilir kaynak hedefi olan yazılım yazabildiğimi. Aynı yaklaşım, üretim hattında bir cihazı dinleyip veri toplayan servisler için de geçerli.