Bagaimana cara menyesuaikan pemetaan keyboard dengan Wayland

20

Saya menggunakan Linux pada Macbook dengan keyboard UK / GB dan saya menyesuaikan keymap untuk menyelesaikan beberapa masalah yang disebabkan oleh tata letak keyboard Apple yang aneh. Saya biasa xmodmapmelakukan ini. Saya ingin mencoba Wayland, tetapi xmodmaptidak berhasil. Bagaimana saya bisa mencapai hasil yang sama di Wayland? The .Xmodmapfile I penggunaan berisi berikut:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Baris 1: Di keyboard Inggris Shift- 3adalah £, jadi # biasanya memiliki kunci sendiri di dekat Return. Tetapi pada Mac # diperoleh dengan Altgr- 3. Sebagai seorang programmer saya menggunakan # jauh lebih dari £ sehingga baris ini menukar mereka. Memilih tata letak AS juga mencapai ini, tetapi melakukan itu di Linux juga menukar beberapa kunci yang biasa digunakan, sedangkan di OS X kunci-kunci lain tidak terpengaruh oleh US / Inggris.

Baris 2-5: Jadikan tombol kanan Cmdbertindak sebagai Kanan- Ctrl, karena keyboard ini tidak memiliki Ctrltombol kanan fisik .

Baris 6: CapsLockHanya berfungsi jika Anda menekannya Shift. Bukan khusus Mac, ini harus menjadi opsi standar untuk semua OS dan keyboard.

realh
sumber
Saya setengah jalan di sana: rupanya Wayland menggunakan xkb, dan xmodmap sudah tidak digunakan lagi di X. Sayangnya xkb jauh lebih rumit, dan GNOME tidak pernah menganggap bahwa pengguna mungkin perlu menyesuaikannya, jadi saya mengajukan pertanyaan kedua .
realh

Jawaban:

11

Sayangnya memodifikasi sistem basis data XKB /usr/share/X11/xkbadalah satu-satunya cara; dari pertanyaan Anda yang lain sepertinya bagian itu berfungsi.

Keterbatasan ini sebagian besar disebabkan oleh ketidakdewasaan Wayland dan pengawasan desain di XKB.

  • Alat seperti setxkbmapdan xkbcompmemberikan -Ipilihan untuk menambahkan database yang ditetapkan pengguna untuk mencari (misalnya ~/.xkbatau ~/.config/xkb, dengan file dan subdirektori diletakkan seperti sistem database). Alat-alat ini berinteraksi dengan server X, sehingga mereka mungkin berguna mengkonfigurasi Xwaylandlapisan kompatibilitas untuk menjalankan aplikasi X di bawah Wayland. Tetapi mereka saat ini tidak berbicara protokol Wayland.

  • Protokol wayland masih jatuh tempo. Saat ini tampaknya protokol input-methoddan text-inputyang paling relevan, dan keduanya tidak stabil. Tidak disebutkan apa pun tentang mengubah keymap yang ditentukan; detail ini diserahkan kepada komposer.

  • GNOME dan KDE keduanya menyediakan daemon pengaturan penanganan keyboard yang harus menangani opsi sistem XKB, termasuk mengubah dengan cepat. Sejauh pengetahuan saya, tidak ada cara untuk mengatakan tentang penyesuaian pengguna. Sejauh yang saya tahu, Weston dan kompositor lainnya bergantung pada file config atau variabel lingkungan untuk mengatur opsi XKB saat startup, dan tidak memberikan cara untuk mengubahnya selain keluar dan memulai kembali.

  • Bahkan di XKB sendiri, ini tidak sepenuhnya didukung. File simbol khusus Anda dapat includefile simbol sistem lainnya. Tetapi saat ini tidak ada includefungsi untuk file aturan XKB, jadi bahkan jika Anda memiliki alat yang akan berbicara dengan komposer Wayland dan akan mencari kustomisasi pribadi Anda, Anda harus memasukkan secara manual semua aturan yang ingin Anda gunakan (yaitu menyalin rules/evdev*dari sistem XKB dan memodifikasinya). libxkbcommonmemiliki masalah terbuka tentang topik ini dan bug terkait .

pemurah
sumber
1
Seharusnya saya membuatnya lebih jelas bahwa saya sudah cukup banyak menyelesaikan ini sekarang. Saya mengatakan demikian dalam pertanyaan lain, tetapi informasinya agak terputus-putus. Saya bermaksud mendokumentasikan ini dengan lebih jelas ketika saya menambahkan blog ke situs web saya, maka saya harus ingat untuk menautkannya di sini.
realh
tentu, tapi itu masih pertanyaan yang belum terjawab, jadi saya mencoba untuk membahas .Xmodmapaspek yang setara dengan Wayland .
quixotic
3
Saya sekarang telah mendokumentasikan ini secara rinci dalam posting blog .
realh
5

Saya telah menggunakan Alat Intersepsi untuk Linux dengan sukses untuk ini, dan tahu orang - orang yang memproduksi plugin lain untuk pemetaan kustom mereka juga. caps2esc adalah plugin proof-of-concept pertama yang saya gunakan sehari-hari, dan berfungsi baik di X dan Wayland. Alat ini sedikit lebih rendah daripada perangkat lunak pemetaan biasa, tetapi cukup fleksibel, dan rencana saya untuk plugin berikutnya adalah alat pemetaan chording umum.

Penafian: Saya penulis.

pepper_chico
sumber
Alat Intersepsi terlihat sangat menarik! Terima kasih untuk pekerjaan anda!
balu
1
Tidak yakin bagaimana perasaan saya tentang menjalankan semua input keyboard saya melalui skrip python
Ace.C
4

Bagi mereka yang datang ke sini pada tahun 2018 (Ubuntu 17.10), bagian paling kritis dari ini dapat dicapai dengan menggunakan Alat Tweak GNOME.

Gnome Tweak Tool> Keyboard & Mouse> Opsi Tata Letak Tambahan> Ctrl dipetakan ke tombol Win (dan tombol Ctrl biasa).

Bardi Harborow
sumber
2
Apakah menggunakan "Alat Gnome Tweak" (apa pun itu) mengatur pemetaan baru untuk pengelola / lingkungan / cangkang grafis lainnya juga?
Mali Remorker
Gnome Tweak Tool tidak dapat memetakan ulang Caps Lock.
andyn
@ andyn my gnome-tweaks-3.34.0-1.fc31.noarchcan remap Caps Lock - mis. 'Caps Lock juga Ctrl', 'Jadikan caps Lock sebagai Esc tambahan', 'Caps Lock as Ctrl' dan banyak lagi.
maxschlepzig
2

Jawaban ini memiliki ide yang sama dengan jawaban quickotic tetapi hanya dengan contoh yang lebih rinci:

Gnome Tweaks memiliki daftar 20 atau 30 tweak keyboard yang dapat Anda lakukan melalui xkb. Terkadang Anda dapat menemukan tweak yang Anda cari secara default. Dalam kasus saya, saya ingin menukar tombol printscreen dengan Menu.

Satu-satunya pilihan untuk memodifikasi kunci printscr yang tersedia melalui xkb adalah menggantinya dengan Win_R. Gunnar Hjalmarsson pada utas ini menyarankan kepada saya agar saya memodifikasi modifikasi xkb sehingga printscr / win_r akan melakukan printscr / menu sebagai gantinya. Kami menyusun solusi bersama dan saya akan mengirimkannya kembali di sini:

Di terminal, masukkan:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Di bagian bawah file Anda akan menemukan:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Hapus bagian ini dan gantikan dengan ini:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Untuk menghapus dalam nano, gunakan tombol backspace (menyoroti dan menghapus tidak berfungsi). Untuk menempel, gunakan shift-ctrl-v. Untuk keluar dan menyimpan, tekan ctrl-x, pilih ya untuk menimpa dan tekan enter.

Mulai ulang. Di Gnome / Ubuntu, Pergi ke gnome-tweak-tools Dalam alat tweak, pergi ke bagian Keyboard & Mouse, tekan tombol Opsi Layout tambahan dan memperluas perilaku kunci Alt / Win. Memilih opsi di bagian paling bawah: Menang dipetakan ke printscr (ingat bahwa kami telah memodifikasi perilaku ini untuk menukar cetak dan Menu alih-alih mencetak dan Menang). (Saya yakin ada cara untuk mengaktifkan opsi xkb modded di KDE tapi saya tidak menggunakannya, jadi saya tidak bisa memberi Anda prosedur yang tepat).

aturan kebun
sumber