Tombol multimedia, Launch key di keyboard terkadang tidak berguna saat menggunakan DWM, Karena DWM tidak support XF86keysym.

Menggunakan Library Keysym

Di beberapa system, hal ini bisa diatasi dengan menambahkan include keysym di config dwm seperti berikut:

#include <X11/XF86keysym.h>

Kemudian bind tombol - tombol keyboard atau jika di laptop tombol kombinasi tombol FN dengan aplikasi yang kamu inginkan.

Untuk mencari simbol untuk tombol-tombolnya bisa mengetikan xev di terminal.

Contoh output xev ketika tombol volume ditekan.

> $ xev
KeyRelease event, serial 39, synthetic NO, window 0x4000001,
    root 0x3ee, subw 0x0, time 6095028, (762,44), root:(793,89),
    state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Dari situ kita bisa melihat baris berisi keycode 0x1008ff11 dan keysym XF86AudioLowerVolume.Nah keysym inilah yang bisa kalian gunakan untuk binding ke aplikasi tertentu. Contoh:

Di baris command:

static const char *downvol[] = { "amixer", "sset", "Master",    "5%-",     NULL };

kemudian di list keybinding keys[]:

    { 0,/*audio: down*/  XF86AudioLowerVolume,   spawn,  {.v = downvol } },

Update

Di ubuntu X11/XF86keysym.h menggunakan nama keysym yang sedikit berbeda dengan yang ditampilkan xev. Jika cara diatas tidak berhasil maka kamu bisa menambahkan XK_ pada nama keysym-nya misal: XF86AudioLowerVolume menjadi XF86XK_AudioLowerVolume XF86WebCam menjadi XF86XK_WebCam dan Seterusnya

Menggunakan KeyCode

Jika sudah menggunakan library tapi masih tetap tidak bisa menggunakan simbol keynya, kamu bisa menggunakan keycodenya. Misal untuk menurunkan volume audio seperti contoh sebelumnya maka di config dwmnya:

Di baris command:

kemudian di list keybinding ganti keysym dengan keycode:

    { 0,/*audio: down*/  0x1008ff11,   spawn,  {.v = downvol } },

Membuat definisi keysym sendiri

menggunakan keycode akan sulit dibaca, maka dari itu kita bisa menggunakan variabel atau konstan di C untuk memudahkan membaca keycodenya.

Saya sendiri lebih suka menggunakan #define, Berikut ini contoh beberaoa pendefinisian keycode yang saya gunakan di DWM.

/* extra keyboard keys */
#define XF86AudioLowerVolume  0x1008ff11
#define XF86AudioMute         0x1008ff12
#define XF86AudioRaiseVolume  0x1008ff13
#define XF86AudioPlay         0x1008ff14
#define XF86AudioStop         0x1008ff15
#define XF86AudioPrev         0x1008ff16
#define XF86AudioNext         0x1008ff17
#define XF86HomePage          0x1008ff18
#define XF86Mail              0x1008ff19
#define XF86Tools             0x1008ff81
#define XF86Calculator        0x1008ff1d
#define XF86Explorer          0x1008ff5d
#define XF_Print              0xff61
#define Print                 0xff61
#define XF86MonBrightnessUp   0x1008ff02
#define XF86MonBrightnessDown 0x1008ff03
#define XF86WWW               0x1008ff2e
#define XF86ScreenSaver       0x1008ff2d
#define XF86TouchpadToggle    0x1008ffa9
#define KP_Home               0xff95
#define XF86WebCam 		      0x1008ff8f
#define XF86Launch1 		  0x1008ff41
#define XF86Launch6 		  0x1008ff46

Kode diatas hanya tombol-tombol yan tersedia di laptop saya. Jika kalian menggunakan keyboard yang berbeda mungkin ada yang belum di list di situ.