Skip to content

Unifikasi Keybindings Pada Linux dan MacOS

Posted on:13 Oktober 2023 at 07.25

Hal yang paling menjengkelkan bagi saya saat switching os terutama dari MacOS ke OS lain spesifik ke Linux / Windows adalah perbedaan keybindings yang membuat muscle memory saya bingung.

Copy Paste dan Control+c

Menurut saya entah siapapun yang mendesign ini diawal amat sangat jenius. pada MacOS untuk melakukan Copy adalah Command+C / Super+C. Bukan Control+c, jika kamu menggunakan MacOS dan sering bergelut dengan terminal pasti kamu mengerti maksud saya.

Pada terminal, Control+c tidak dapat digunakan untuk melakukan text copy, karena Control+c pada terminal sudah reserved sebagai tombol kombinasi untuk meng-interupsi sebuah process. maka dari itu jika kita ingin melakukan text copy pada terminal kita harus menambahkan kombinasi Shift (Control+Shift+c) begitu pula dengan Paste harus menggunakan Control+Shift+v. Hal ini akan membuat muscle memory kita menjadi sangat bingung karena tidak hanya perlu mengingat kombinasi tapi juga harus aware terhadap context

Jika Terminal Maka
  Control+Shift+c
Jika Tidak
  Contro+c

Mungkin kamu akan berfikir

Kalau begitu, kenapa tidak selalu menggunakan Control+Shift+c di semua aplikasi?

Mungkin di beberapa aplikasi selain termial Control+Shift+c ter-registrasi sebagai perintah copy, namun jika kamu tekan kombinasi tersebut pada browser chromium based (Google Chrome, Brave) maka justru yang akan terbuka adalah developer console. hal ini pasti membuat muscle memory kita jadi semakin kacau!

CapsLock - Tombol yang paling tidak berguna

Hal lain yang saya harap menjadi default adalah CapsLock seharusnya adalah Escape karena jika coba ingat-ingat, atau setidaknya bagi saya, tombol Escape jauh lebih sering saya gunakan daripada CapsLock. Atau bahkan saya tidak pernah menggunakan CapsLock dalah beberapa tahun kebelakang, karena usecase apa yang membuat saya harus menulis huruf kapital scara panjang? jika butuh capital saya bisa menggunakan Shift

Remapping (Linux)

Pada section ini, untuk sementara ini saya akan membahas cara melakukan remap pada platform linux, atau jika spesifik ke kasus saya, menggunakan Wayland based on wlroots

Software yang saya gunakan adalah xremap Software tersebut mendukung x11 dan wayland dengan keterbatas jika x11 harus terinstall secara multi-user / system wide.

Berikut adalah konfigurasi yang saya gunakan

karena saya menggunakan nix & home-manager maka config saya menggunakan syntax nix

services.xremap = {
  withHypr = true;
  config = {
    keymap = [
      {
        name = "macos terminal copy paste";
        remap = {
          "Alt-c" = "CONTROL-Shift-c";
          "Alt-v" = "CONTROL-Shift-v";
        };
        application = {
          only = ["Alacritty"];
        };
      }

      {
        name = "macos copy paste";
        remap = {
          "Alt-c" = "CONTROL-c";
          "Alt-v" = "CONTROL-v";
        };
        application = {
          not = ["Alacritty"];
        };
      }

      {
        name = "macos super";
        remap = {
          "Alt-q" = "SUPER-c"; # remap to hyprland quit
          "Alt-s" = "CONTROL-s";
          "Alt-e" = "SUPER-e";
          "Alt-w" = "CONTROL-w";
          "Alt-t" = "CONTROL-t";
          "Alt-Space" = "SUPER-s"; # rofi
          "Alt-1" = "SUPER-1";
          "Alt-2" = "SUPER-2";
          "Alt-3" = "SUPER-3";
          "Alt-4" = "SUPER-4";
          "Alt-5" = "SUPER-5";
          "Alt-6" = "SUPER-6";
          "Alt-7" = "SUPER-7";
          "Alt-8" = "SUPER-8";
          "Alt-9" = "SUPER-9";
          "Alt-0" = "SUPER-0";
          "Alt-Tab" = "SUPER-Tab";
        };
      }
    ];

    modmap = [
      {
        name = "capslock esc - control";
        remap = {
          "CapsLock" = {
            "held" = ["CONTROL_L"];
            "alone" = ["Esc"];
            alone_timeout_millis = 300;
          };
        };
      }
    ];
  };
};

Highlight

Dengan config diatas, meski tidak semua keybindings sama, setidaknya telah mencover tombol-tombol kombinasi yang paling sering saya gunakan.