Konfigurasikan Caps Lock sebagai AltGr dan Panah seperti di vim

9

1. Bagaimana cara global peta Caps Lockuntuk AltGr?

Saya tidak perlu CapsLock dan lebih suka memiliki akses mudah AltGr Key di sana

2. Saya ingin memetakan semua tombol gerakan ke vimposisi seperti

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

Jadi saya dapat dengan mudah berjalan melalui kode saya tanpa memindahkan tangan dari Posisi 10-Jari (seperti di vimeditor)

Saya menemukan jawaban ini: Bagaimana cara memetakan kembali kunci caps lock ke tombol backspace?
menyarankan menggunakan

xmodmap -e "keycode [code] = [new key]"

lihat: http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

Tapi saya tidak tahu, bagaimana cara menambahkan ini ke kombinasi misalnya AltGr + J

Mulai lain akan mengatur "Alternatif Karakter Key" di unity-control-center-> Keyboard-> Shortcuts-> Mengetik sebagaiCaps Lock

Pembaruan: Saya menemukan beberapa solusi (lihat di bawah) tetapi semuanya tidak bekerja di semua aplikasi, saya rasa ini adalah pengaturan global yang disebut "XFree 4" yang digunakan oleh beberapa aplikasi.

Bagaimana cara mengatur ikatan utama untuk XFree 4 juga?

rubo77
sumber
Saya tidak memiliki kunci AltGr, tetapi Anda mungkin menemukan pertanyaan serupa ini memberikan beberapa petunjuk.
Penatua Geek

Jawaban:

4

1. tambahkan file parsial XKB baru

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

dengan konten ini:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. sertakan parsial dalam file bahasa Anda

misalnya untuk jerman itu adalah /usr/share/X11/xkb/symbols/de(di mana /debahasa Anda) tambahkan ini di dalam blok pertama ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

Catatan: Bagian ini harus diulang setelah setiap pembaruan distribusi

3. memuat kembali sesi jendela

Tekan ALT + F2, masukkan "r" untuk memuat kembali sesi gnome atau cukup logout dan masuk lagi. Sekarang komposisi kunci baru akan tersedia

beberapa masalah

Beberapa aplikasi tidak menerima pengaturan, misalnya: sublimeyang dapat diganti dengan atom.

Beberapa aplikasi memerlukan pengaturan tambahan, mis. Dalam yakuakebinding kunci diatur ke "XFree 4", jika Anda mengaturnya ke "Linux" atau "Solaris", maka pengaturan XKB bekerja di sana juga:

rubo77
sumber
1
Saya sangat merekomendasikan menggunakan opsi XKB lv3:caps_switchdaripada mengubah <CAPS>definisi seperti yang Anda tunjukkan. lihat /usr/share/X11/xkb/symbols/level3(di mana opsi itu didefinisikan).
quixotic
@quixotic: dapatkah Anda menambahkan jawaban baru dengan konfigurasi yang diperlukan? Saya bisa membutuhkan jawaban lengkap yang bagus untuk karunia ini;)
rubo77
Ini bekerja dengan baik untuk saya. Hanya kepala saja, mungkin ingin mengubah "bagian" ke "angka" untuk shift + 3
mowwwalker
0

untuk mendapatkan AltGr+ h, j, k, latau tombol lain tanpa aplikasi apapun seperti Autokey untuk peform Anda dapat menyesuaikan tata letak keyboard yang ditemukan di / usr / share / X11 / xkb / simbol / . Saat ini saya menggunakan tata letak Jerman "de". Jadi pertama-tama saya akan:

1- menyalin tata letak standar

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- buka tata letak Anda dengan editor teks preferensi Anda (di sini: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

di sana Anda akan melihat sesuatu seperti:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

Seperti yang Anda lihat, AB, AC, AD, AE mewakili baris, dan angka tersebut mewakili posisinya di keyboard (ada beberapa tombol khusus, seperti tombol less / Greater, yang dapat dipetakan kembali ke tombol lain juga ..

Di sana Anda tidak akan menemukan semua keyboard, hanya saja yang berbeda dengan tata letak keyboard tersebut. Bahasa Jerman didasarkan pada "latin (type4)" seperti yang Anda lihat pada awal file:

include "latin(type4)"

Maka Anda hanya perlu mengubah sesuai dengan kebutuhan Anda. Ini berfungsi seperti:

key {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(itu juga mungkin menambahkan pengubah tingkat 5, atau lebih)

jika Anda ingin memeriksa perubahan tanpa memulai ulang; (mengubah "de" untuk tata letak Anda ... berikut adalah daftar dengan kemungkinan tata letak )

 setxkbmap -layout de

Panah diberi label seperti "Kiri, Kanan, Bawah, Atas", seperti yang diharapkan. Berikut adalah daftar nilai yang mungkin.

berikut adalah contoh tata letak khusus saya. (tetapi tidak digunakan saat ini)

Kemudian, Anda perlu memetakan ulang Capslock dan AltGr, atau apakah sudah berhasil mengikuti pertanyaan yang Anda posting ??

Jika Anda juga ingin mempertahankan tata letak jerman "normal", Anda dapat melakukan perubahan pada tata letak lain yang biasanya tidak Anda gunakan, (atau mengubah "jerman tanpa kunci mati" yang dapat Anda temukan lebih jauh di bawah pada file "de" yang sama. ..)

Sumber: tautan ke penjelasan xbk dan tata letak khusus yang sangat komprehensif.
tautan ke pertanyaan serupa dengan jawaban yang bagus.

Marcelo Avila
sumber
1
di Ubuntu modern dan turunannya, Anda dapat mengatur tata letak dan opsi XKB /etc/default/keyboardbegitu perubahan ini dibuat. lihat man 5 keyboarddetailnya. saya sarankan menambahkan varian & opsi baru daripada mengubah yang sudah ada.
quixotic
0

Untuk memetakan ulang CapsLock ke AltGr gunakan

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(sumber: https://superuser.com/a/138757/160420 )

Untuk memetakan tombol panah ke AltGr + h, j, k dan l, gunakan xmodmap -pkeuntuk menemukan pengaturan yang tepat:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

dan ubah nilai kelima ke kunci baru dan tambahkan ini semua dalam skrip bash:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(sumber: https://askubuntu.com/a/466315/34298 )

Letakkan skrip bash itu di Aplikasi Startup Anda (Pilih Dash> Startup Applications> Add , dan tambahkan perintah.)

Catatan: anehnya gnome-terminalini berfungsi dengan baik, tetapi di yakuakedalamnya berfungsi untuk BackSpace pada AltGr + F tetapi ia menetapkan AltGr + h, j, k dan l menjadi D, B, A dan C kecuali Anda mengatur Pengikat Kunci ke "Linux" alih-alih "(Default) XFree 4", dan di sublime-textdalamnya tidak berfungsi sama sekali

rubo77
sumber
xmodmaptidak digunakan lagi dan tidak dianjurkan. masih berfungsi di lingkungan X11 tetapi tidak akan berfungsi di Wayland dan penggantian X11 lainnya. menggunakan solusi berbasis XKB sebagai gantinya sangat dianjurkan.
quixotic
Jadi saya kira, saya harus menambahkan tata letak keyboard khusus baru? askubuntu.com/questions/482678/…
rubo77
1
menambahkan tata letak khusus adalah salah satu cara, meskipun Anda mungkin bisa lolos hanya dengan membuat opsi khusus . di GNOME atau Unity Anda mungkin perlu menonaktifkan plugin keyboard pengaturan-daemon agar kustomisasi xmodmap Anda berfungsi, tetapi jika Anda membuat layout / varian / opsi XKB seluruh sistem yang baru, Anda dapat mengaturnya /etc/default/keyboard.
quixotic
1
Tampaknya ini cukup banyak pekerjaan, tetapi apakah itu akan menyelesaikan masalah, bahwa kombinasi tombol baru tidak berfungsi di beberapa aplikasi?
rubo77