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 ditampilkanxev
. Jika cara diatas tidak berhasil maka kamu bisa menambahkanXK_
pada nama keysym-nya misal:XF86AudioLowerVolume
menjadiXF86XK_AudioLowerVolume
XF86WebCam
menjadiXF86XK_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.