Jawaban:
xmodmap
sudah usang; jadi memang itu harus dilakukan dengan xkb
alat.
Swap yang Anda inginkan tampaknya tidak termasuk dalam file X11 default; jadi kamu harus menulis sendiri.
Halaman http://madduck.net/docs/extending-xkb/ membantu saya untuk memahami dan menemukan cara untuk melakukannya.
Buat file di ~/.xkb/keymap/mykbd
mana Anda meletakkan output setxkbmap
, itu akan menjadi definisi keyboard dasar Anda; misalnya:
setxkbmap -print > ~/.xkb/keymap/mykbd
kemudian, buat file simbol untuk menentukan pertukaran kunci Anda, masukkan misalnya ~/.xkb/symbols/myswap
di sana, letakkan baris berikut:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
kemudian, edit ~/.xkb/keymap/mykbd
file, dan ubah xkb_symbols
baris untuk ditambahkan
+myswap(swap_l_shift_ctrl)
akhirnya, Anda dapat memuatnya dengan xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(Anda tidak dapat menggunakan "~" untuk -I
parameter). Mungkin akan meludahkan banyak peringatan tentang simbol yang tidak terdefinisi untuk beberapa kunci langka, tetapi Anda dapat mengabaikannya (misalnya, redirect error to dave:) 2> /dev/null
.
Jika Anda ingin dapat dengan mudah bertukar antara ctrl / shift yang normal dan terbalik; buat saja di bawah ~/.xkb/keymap/
file lain, tanpa opsi "myswap" tambahan, dan muat dengan xkbcomp
. Anda dapat membuat dua skrip kecil untuk memuatnya.
xkbcomp $DISPLAY some.dump
setelah dan sebelum memanggil IBus, dan lakukan diff dari dua kesedihan (itu adalah definisi keyboard lengkap); Anda mungkin akan melihat perbedaan.
setxkbmap -option caps:escape
berfungsi. IBus ingat tombol bertukar tombol Esc dan Caps_Lock Tapi itu tidak berlaku untuk tombol Shift Kiri dan Kontrol Kiri yang ditukar.
Saya mengalami beberapa masalah pemetaan LALT
untuk Control_L
menggunakan solusi Pablo , tampaknya Anda perlu mengatur modifier_map
opsi juga.
Saya menyalin templat dari /usr/share/X11/xkb/symbols/altwin
- mencari xkb_symbols "ctrl_alt_win"
- dan memodifikasinya untuk mengatur perubahan berikut:
File terakhir ~/.xkb/symbols/myswap
adalah:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
Saya juga menambahkan -w0
ke xkbcomp
perintah untuk menghindari keluaran peringatan saat membuka shell baru.
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** Berganti-ganti antara Mac dan Linux, saya ingin memiliki dua tombol kontrol di Linux untuk memperkirakan keyboard Mac untuk memori otot saya.