Bagaimana cara menukar kunci Perintah dan Kontrol dengan xkb langkah demi langkah?

9

Saya ingin menggunakan keyboard aluminium Apple panjang dengan tombol Command Cmdand Control yang ditukar Ctrl. Bagaimana ini dilakukan langkah demi langkah menggunakan Trusty Tahr (14.04) xkb?

Catatan: Ini solusi tidak bekerja untuk saya karena xkbdiganti xmodmapdi 13.04 atau bahkan sebelumnya .

Aleksandar Savkov
sumber
1
Solusi ini tidak berhasil untuk saya. Kemungkinan besar sudah usang (sebenarnya saya cukup yakin, tidak dapat menemukan referensi sekarang). Saya sudah mencobanya sebelum memposting. Itu sebabnya saya menentukan versi Ubuntu.
Aleksandar Savkov
1
@WaldirLeoncio Saya harap ini menjelaskan mengapa pertanyaan ini BUKAN duplikat: askubuntu.com/questions/325272/...
Aleksandar Savkov

Jawaban:

7

Jawaban ini sebagian besar didasarkan pada jawaban yang diberikan di sini . Alasan saya bertanya dan menjawab pertanyaan ini lagi adalah langkah terakhir, yang tidak sepenuhnya dijelaskan. Untuk bacaan lebih lanjut tentang xkblihat di sini , di sini , dan di sini .

  1. Buat file dalam /usr/share/X11/xkb/symbols(bisa juga di /etc/X11/xkb/symbols) dipanggil altwin2dan berisi pemetaan berikut:

    // Control is SWAPPED with Win-keys 
    partial modifier_keys
    xkb_symbols "cmd_n_ctrl" {
        key <LWIN> {        [       Control_L               ]       };
        key <RWIN> {        [       Control_R               ]       };
        key <LCTL> {       [       Super_L         ]       };
        modifier_map Control { <LWIN>, <RWIN> };
        modifier_map Mod4 { <LCTL> };
    };
    
  2. Masukkan baris berikut di bawah option = symbolsbagian dalam /usr/share/X11/xkb/rules/evdev(abaikan peringatan pada baris pertama):

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. Tambahkan opsi baru ke /usr/share/X11/xkb/rules/evdev.lstbawah bagian option:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. Jika Anda tidak tahu di mana file konfigurasi keyboard Anda, Anda dapat mengeditnya menggunakan dconf-editor , menambahkan "altwin2:cmd_n_ctrl"di xkb-optionsbawah org :: gnome :: desktop :: input-sources seperti yang ditunjukkan di sini . Jika Anda tahu di mana file konfigurasi Anda, Anda harus memasukkan opsi baru di XkbOptionsbidang seperti yang ditunjukkan di bawah ini:

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. Mulai ulang atau mulai ulang lightdmuntuk memperbarui perubahan:

    sudo restart lightdm
    

CATATAN: jika ada perubahan yang dilakukan secara langsung dalam file tata letak, yaitu tidak menggunakan opsi, file yang di-cache /var/lib/xkb/perlu dihapus seperti yang ditunjukkan di sini .

Aleksandar Savkov
sumber
2
Seharusnya !option = symbolsbagian, bukan options = symbols(menghabiskan waktu mencari "options =" ​​untuk menemukan bagian).
Ben Davis
Lihat juga di sini: reddit.com/r/Ubuntu/comments/8lnr8q/remapping_keys
Aleksandar Savkov
Seperti kebanyakan hal dengan xkb dan xmodmap, tidak berfungsi, mungkin merusak sistem saya dengan cara lain, saya muak dengan omong kosong ini dan saya benar-benar berharap linux akan mendapatkan omong kosongnya bersama-sama dengan hal freaking paling mendasar tentang pemetaan kunci dan penjilidan.
Seph
Apakah ini ditulis pada tahun 2014 dan tidak berlaku untuk distribusi modern.
Aleksandar Savkov
3

Di 16,04, inilah cara saya akhirnya berhasil. Xmodmap tidak bekerja secara universal di semua aplikasi, alat tweak gnome tidak memiliki fungsi, mengedit dconf altwin2 key swap kustom (seperti jawaban utama di sini) gagal, jadi saya mencabut rambut saya sampai saya menggabungkan beberapa jawaban ke dalam ini lengkap, sederhana , dan solusi elegan:

gksudo gedit /usr/share/X11/xkb/symbols/pc

ubah ke:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC>  {    [ Escape        ]   };

// The extra key on many European keyboards:
key <LSGT> {    [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> {    [ backslash,    bar ]   };
key <SPCE> {    [    space      ]   };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {    [ BackSpace, BackSpace  ]   };

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return        ]   };

key <CAPS> {    [ Caps_Lock     ]   };
key <NMLK> {    [ Num_Lock      ]   };

key <LFSH> {    [ Shift_L       ]   };
key <LCTL> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_R     ]   };
key <RWIN> {    [ Super_R       ]   };
key <MENU> {    [ Menu          ]   };

// Beginning of modifier mappings.
modifier_map Shift  { Shift_L, Shift_R };
modifier_map Lock   { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2   { Num_Lock };
modifier_map Mod4   { Super_L, Super_R };

// Fake keys for virtual<->real modifiers mapping:
key <LVL3> {    [ ISO_Level3_Shift  ]   };
key <MDSW> {    [ Mode_switch       ]   };
modifier_map Mod5   { <LVL3>, <MDSW> };

key <ALT>  {    [ NoSymbol, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
modifier_map Mod1   { <META> };

key <SUPR> {    [ NoSymbol, Super_L ]   };
modifier_map Mod4   { <SUPR> };

key <HYPR> {    [ NoSymbol, Hyper_L ]   };
modifier_map Mod4   { <HYPR> };
// End of modifier mappings.

key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> {    [  Scroll_Lock      ]   };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key  <INS> {    [  Insert       ]   };
key <HOME> {    [  Home         ]   };
key <PGUP> {    [  Prior        ]   };
key <DELE> {    [  Delete       ]   };
key  <END> {    [  End          ]   };
key <PGDN> {    [  Next         ]   };

key   <UP> {    [  Up           ]   };
key <LEFT> {    [  Left         ]   };
key <DOWN> {    [  Down         ]   };
key <RGHT> {    [  Right        ]   };
};

Menyimpan.

rm -rf /var/lib/xkb/*

(Saya tidak tahu apakah ini diperlukan, tetapi saya melakukannya.)

Mulai ulang.

Tom Mercer
sumber
Terima kasih untuk itu. Saya akan mengujinya ketika saya bermigrasi ke 16,04 dalam waktu dekat.
Aleksandar Savkov
Baru saja menggunakan ini pada peningkatan 16.10 saya. Bekerja dengan sangat baik.
Tom Mercer
1
Sejauh ini jawaban yang paling sederhana, bekerja seperti pesona pada Fedora saya. Terima kasih!
hakunin