Pintasan keyboard adalah kustomisasi yang tidak terlihat tetapi paling terasa: satu kombinasi tombol menggantikan gerakan mouse tiga langkah. Di Linux, pintasan bisa kita definisikan di hampir semua lapisan — dari panel pengaturan desktop environment, daemon khusus, sampai pemetaan ulang tombol fisik. Pada Chapter ini kita menaiki lapisan-lapisan tersebut satu per satu: membuat shortcut kustom yang menjalankan skrip, lalu mempelajari alat klasik X11 dan compose key untuk kebutuhan mengetik sehari-hari.

Shortcut Kustom di Desktop Environment #

Semua desktop environment menyediakan editor pintasan bawaan: panel Keyboard → View and Customize Shortcuts di GNOME Settings dan modul Shortcuts di System Settings Plasma. Editor tersebut memadai untuk mengganti pintasan bawaan, tetapi mekanisme di baliknya menarik untuk dibongkar karena bisa diotomatisasi. GNOME menyimpan pintasan kustom sebagai daftar jalur diikuti tiga key per jalur. Berikut contoh tampilan pemasangan pintasan Super+D yang menjalankan skrip pembisu notifikasi:

console
$ gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \
  "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
$ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'Bisukan notifikasi'
$ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command 'toggle-notifikasi.sh'
$ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding '<Super>d'

Baris pertama mendaftarkan jalur custom0/ ke array custom-keybindings — pintasan kedua cukup menambah custom1/ pada array yang sama. Tiga baris berikutnya mengisi name (label di editor), command (perintah yang dijalankan), dan binding (kombinasi tombol). Nilai command dijalankan seperti diketik di terminal, sehingga nama skrip harus berada di PATH atau ditulis dengan path penuh. Di Plasma, peran serupa dipegang modul Custom Shortcuts yang menyimpan pemicu berupa kombinasi tombol maupun gerakan mouse, dengan hasil akhir tetap sebuah perintah.

Skrip yang Dipicu Shortcut #

Apa pun lapisannya, hasil akhir sebuah pintasan kustom selalu sama: satu perintah dijalankan. Karena itu beban sesungguhnya ada pada skrip yang dirancang untuk dipicu berulang. Pola yang paling berguna adalah toggle — sekali tekan menyalakan, tekan berikutnya mematikan — yang biasanya disimpan sebagai berkas status. Berikut versi latihannya:

bash
mkdir -p ~/.local/bin
cat > ~/.local/bin/toggle-notifikasi.sh <<'EOF'
#!/bin/bash
BERKAS="$HOME/.notifikasi-dibisukan"
if [ -f "$BERKAS" ]; then
  rm "$BERKAS"
  echo "notifikasi: aktif kembali"
else
  touch "$BERKAS"
  echo "notifikasi: dibisukan"
fi
EOF
chmod +x ~/.local/bin/toggle-notifikasi.sh
~/.local/bin/toggle-notifikasi.sh
ls -a ~ | sort
~/.local/bin/toggle-notifikasi.sh

Output yang Dihasilkan:

text
notifikasi: dibisukan
.
..
.local
.notifikasi-dibisukan
notifikasi: aktif kembali

Mari kita bedah perilaku skrip tersebut:

  1. Baris BERKAS="$HOME/.notifikasi-dibisukan": menetapkan berkas status; keberadaan berkas ini adalah satu-satunya sumber kebenaran kondisi.
  2. Blok if [ -f "$BERKAS" ]: bila berkas ada, cabang pertama menghapusnya dan mencetak pesan aktif; bila tidak ada, cabang else membuatnya lewat touch.
  3. Baris chmod +x: memberi hak eksekusi — pintasan gagal diam-diam bila skrip tidak bisa dieksekusi.
  4. ls -a ~ pada tengah blok: membuktikan tekanan pertama membuat berkas status, sebelum tekanan kedua menghapusnya kembali.

Pada desktop sungguhan, isi cabang if tinggal diganti perintah sesungguhnya — misalnya dunstctl set-paused toggle untuk server notifikasi dunst — sementara kerangka toggle-nya tetap sama.

xbindkeys: Perekat Universal untuk X11 #

Editor DE menyelesaikan hampir semua kebutuhan, tetapi pada sesi window manager ringan seperti Openbox atau i3, daemon xbindkeys mengambil peran itu. Daemon kecil ini membaca ~/.xbindkeysrc, menangkap kombinasi tombol lewat server X, lalu menjalankan perintah yang dipasangkan. Format berkasnya hanya dua baris per pintasan:

bash
cat > ~/.xbindkeysrc <<'EOF'
# Bisukan notifikasi: tekan Super+D
"/home/budi/.local/bin/toggle-notifikasi.sh"
  Mod4 + d

# Tangkapan layar area: tekan Print
"gnome-screenshot -a"
  Print
EOF
cat ~/.xbindkeysrc

Output yang Dihasilkan:

text
# Bisukan notifikasi: tekan Super+D
"/home/budi/.local/bin/toggle-notifikasi.sh"
  Mod4 + d

# Tangkapan layar area: tekan Print
"gnome-screenshot -a"
  Print

Struktur berkas tersebut sederhana namun ketat:

  1. Baris dalam tanda kutip: perintah yang dijalankan — path skrip ditulis penuh karena daemon xbindkeys tidak membaca PATH kita.
  2. Baris Mod4 + d: kombinasi pemicunya; Mod4 adalah nama X untuk tombol Super, dan Print adalah keysym tombol tangkapan layar.
  3. Baris kosong antar pintasan: pemisah yang membuat berkas mudah dibaca; komentar ditandai #.
  4. Nama berkas: daemon membaca tepat ~/.xbindkeysrc — bukan .xbindkeyrc — dan memuat ulang berkas ini otomatis setiap kali isinya berubah.

Jalankan daemon xbindkeys sekali di awal sesi — misalnya dari berkas startup yang kita bahas di Chapter Display dan Multiple Monitors — dan seluruh pintasan berkas ini langsung hidup. Rincian sintaksnya dirangkum di halaman Xbindkeys ArchWiki .

Remap Tombol dengan Xmodmap #

Kebutuhan berikutnya lebih dalam: mengubah arti tombol fisik itu sendiri. Alat klasiknya adalah xmodmap, yang membaca berkas ~/.Xmodmap berisi tabel pemetaan. Kasus paling populer adalah menjadikan Caps Lock sebagai Escape — berkah bagi punggung jari kelingking pemakai Vim:

bash
cat > ~/.Xmodmap <<'EOF'
! Jadikan Caps Lock sebagai Escape
clear lock
keycode 66 = Escape
EOF
cat ~/.Xmodmap

Output yang Dihasilkan:

text
! Jadikan Caps Lock sebagai Escape
clear lock
keycode 66 = Escape

Tiga baris tersebut bekerja sebagai berikut:

  1. Baris ! ...: komentar — xmodmap menandai komentar dengan tanda seru, bukan #.
  2. Baris clear lock: melepas semua tombol dari modifier lock sehingga Caps Lock berhenti menjadi tombol pengunci.
  3. Baris keycode 66 = Escape: menugaskan ulang kode tombol 66 — Caps Lock pada kebanyakan keyboard — agar mengirim keysym Escape.

Berkas diterapkan dengan xmodmap ~/.Xmodmap. Perlu dicatat xmodmap adalah alat era lama: pemetaannya berlaku mentah tanpa pemahaman layout, dan sistem modern X11 memakai XKB yang lebih benar — satu baris setxkbmap -option caps:escape mencapai hasil yang sama secara lebih aman. xmodmap tetap berguna untuk kasus aneh yang tak dijangkau opsi XKB; perbandingan keduanya dibahas di halaman konfigurasi keyboard ArchWiki dan halaman Xmodmap ArchWiki .

Compose Key untuk Karakter Khusus #

Lapisan terakhir bukan memicu perintah melainkan mengetik karakter. Compose key (juga disebut Multi_key) adalah tombol yang menyalakan mode urutan: tekan compose lalu dua-tiga tombol berikutnya, dan satu karakter khusus muncul — compose, o, c menghasilkan ©. Sequens bawaannya ribuan jumlahnya, dan tabelnya bisa kita perluas lewat ~/.XCompose:

bash
cat > ~/.XCompose <<'EOF'
include "%L"
<Multi_key> <e> <m> : "[email protected]"
<Multi_key> <r> <p> <t> : "Ruang Rapat 3"
EOF
cat ~/.XCompose

Output yang Dihasilkan:

text
include "%L"
<Multi_key> <e> <m> : "[email protected]"
<Multi_key> <r> <p> <t> : "Ruang Rapat 3"

Baris include "%L" memuat tabel bawaan sehingga sequences standar tetap bekerja; %L menunjuk lokasi tabel sistem. Setiap baris berikutnya mendefinisikan sequences baru: daftar keysym dalam kurung siku, titik dua, lalu hasil teksnya. Aplikasi GTK dan Qt menghormati berkas ini, sehingga cuplikan yang sering diketik — alamat surel, nama ruang rapat — bisa lahir dari tiga ketikan. Compose key-nya sendiri diaktifkan dari GNOME Tweaks atau setxkbmap -option compose:ralt (Alt kanan sebagai compose).

Tangan kita kini bekerja lebih sedikit berkat pintasan, remap, dan compose key. Berikutnya kita rapikan apa yang dilihat mata: resolusi layar, penyusunan multi-monitor, dan penskalaan HiDPI — materi Chapter Display dan Multiple Monitors.