Ganti tata letak keyboard dengan setxkbmap


Jadi ceritanya laptop yang biasa dipakai untuk bekerja mulai bermasalah. Salah satunya masalah di papantik alias keyboard. Salah satu kunci (key) di keyboard, yakni tombol panah kanan tiba-tiba saja tak bisa digunakan, padahal fungsinya cukup signifikan. Untunglah ada setxkbmap.

Dari hasil googling, ternyata penggunaan xmodmap sudah tidak disarankan lagi. Bahkan berkas konfigurasi .xmodmap katanya tidak akan dibaca sama sistem. Padahal -masih dari hasil googling- katanya penggunaan xmodmap cukup mudah untuk memetakan ulang tombol di keyboard. Beruntung ada xkb dan kawan-kawannya.

Terus bagaimana caranya? Mudah saja. Pertama, siapkan direktori .xkb/keymap dan .xkb/symbols. Mari gunakan terminal untuk membuatnya.

~: $ mkdir -p .xkb/keymap
~: $ mkdir -p .xkb/symbols

Setelah itu, simpan konfigurasi letak keyboard kita pada berkas mykbd menggunakan setxkbmap.

~: $ setxkbmap -print > ~/.xkb/keymap/mykbd

Sekarang mari buat berkas konfigurasi swapnya. Di sini, saya menggantikan tombol panah kanan (RGHT) dengan Menu yang jarang digunakan. Ya daripada mubazir ya. Misalkan konfigurasinya dinamakan myswap, dan disimpan di direktori .xkb/symbols.

~: $ nano .xkb/symbols/myswap

Oh iya, untuk mengetahui tombol mana dipetakan ke mana, kita bisa manfaatkan aplikasi xev atau lihat konfigurasi di /usr/share/X11/xkb/symbols/pc. Kalau kita gunakan xev, lalu tekan tombol atas (Up), maka keluarannya seperti ini.

KeyRelease event, serial 37, synthetic NO, window 0x2400001,
    root 0x105, subw 0x0, time 4532783, (430,108), root:(530,271),
    state 0x0, keycode 111 (keysym 0xff52, Up), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Masalahnya kan tombol kanannya rusak, jadi susah cari keycodenya apa. Jadi mending intip berkas konfig xkb saja. Contohnya seperti ini.

$ less /usr/share/X11/xkb/symbols/pc | grep Right
    key  {	[  Right		]	};

$ less /usr/share/X11/xkb/symbols/pc | grep Menu 
    key  {	[ Menu			]	};

Dari sana ketahuan bahwa tombol kanan simbolnya RGHT, dan Menu simbolnya MENU. Kita gunakan informasi ini di berkas myswap. Mari kita tukar keduanya.

partial modifier_keys
xkb_symbols "swap_right_menu" {
        replace key <RGHT> { [ Menu ] };
        replace key <MENU> { [ Right ] };
};

Selesai? Tentu saja belum. Agar konfigurasi ini bisa dipakai, sekarang kita edit berkas mykbd, dan tambahkan konfigurasi swap_right_menu di bagian xkb_symbols. Jadinya seperti ini.

xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+us+us:2+inet(evdev)+terminate(ctrl_alt_bksp)+myswap(swap_right_menu)"       };
        xkb_geometry  { include "pc(pc105)"     };
};

Jika sudah, lakukan langkah terakhir, yakni menjalankan perintah agama xkbcomp.

~: $ xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY

Jika tidak ada halangan, rintangan dan cobaan seharusnya tidak ada error, cuma warning saja. Tapi kalau masih ada error, coba periksa lagi, apakah ada saltik atau tidak. Contoh error seperti ini:

$ xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
syntax error: line 3 of myswap
last scanned symbol is: RIGHT
Error:            Error interpreting include file "myswap"
                  Exiting
                  Abandoning symbols file "(null)"
Error:            success in unknown
                  Couldn't write keyboard description to :0

Di situ, saya salah tulis simbol untuk tombol kanan. Seharusnya RGHT, bukan RIGHT. Silakan edit lagi berkas mykbd atau myswap-nya, lalu jalankan lagi perintah xkbcomp di atas.

$ xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
Warning:          Key <OUTP> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
Warning:          Key <KITG> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
Warning:          Key <KIDN> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
Warning:          Key <KIUP> not found in evdev+aliases(qwerty) keycodes
                  Symbols ignored
...

Seharusnya kali ini tidak ada error, cuma warning. Jika begitu, selamat! Untuk sementara kamu belum perlu beli keyboard baru 😐

Selamat mencoba. Hidup Linux!


One response to “Ganti tata letak keyboard dengan setxkbmap”

Ada komentar?

This site uses Akismet to reduce spam. Learn how your comment data is processed.