Bagaimana cara mengganti tata letak keyboard untuk berbagai bahasa?

10

T: bagaimana cara beralih antara metode input untuk bahasa yang berbeda saat menggunakan tata letak keyboard yang tidak standar?

Saya harus mengedit teks dalam dua bahasa yang berbeda. Saya ingin dapat menggunakan ikatan kunci saya di kedua bahasa, kecuali, tentu saja, ketika memasukkan teks ke buffer. Sepertinya saya harus dapat toggle-input-method( C-\) dan memilih bahasa alternatif.

Sejauh ini, hampir begitu bagus.

Inilah intinya: Saya menggunakan tata letak bahasa Inggris Dvorak, yang saya atur di tingkat OS (yaitu, dengan setxkbmap). Ketika saya toggle-input-method, teks yang saya masukkan akan benar jika saya memiliki tata letak QWERTY (standar di AS), tetapi keluar sebagai omong kosong karena saya menggunakan Dvorak. (FWIW, ketika saya mengubah tata letak saya ke standar AS, itu berfungsi dengan baik.)

Jadi: bagaimana saya memberi tahu Emacs bahwa saya menggunakan Dvorak sehingga toggle-input-methoddan teman-teman menerjemahkan penekanan tombol saya ke karakter yang benar dalam bahasa lain?

Dan
sumber
swedia-postfix dan metode input komposisi lainnya bekerja untuk saya, metode apa yang Anda punya masalah?
shapr
@shapr: Saya beralih antara Bahasa Inggris dan Bahasa Arab. Masalahnya sepertinya saya menggunakan tata letak Dvorak di tingkat OS, karena toggling berfungsi dengan baik ketika saya menggunakan tata letak US standar di tingkat OS.
Dan

Jawaban:

7

Ada metode untuk mengubah definisi tata letak fisik untuk metode input dengan mengatur quail-keyboard-layout-type. Tapi sepertinya Dvorak bukan salah satu kandidat di quail-keyboard-layout-alistEmacs 24.4 saya.

Anda dapat menentukan tata letak keyboard fisik baru dengan melihat definisi quail-keyboard-layout-alistin quail.elatau membuat metode input baru dengan mendefinisikan kunci bahasa Arab yang sesuai untuk tata letak Dvorak.

Saya tidak berpengalaman dalam yang pertama, tetapi saya bisa bersaksi bahwa pendekatan kedua lebih mudah daripada yang Anda pikirkan. (Saya harus membuat metode input Turki Ottoman di atas Persia.) Salin arabic.el(yang berada di sistem Debian saya di /usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz) ke rumah Anda site-lispdan ubah kunci sesuai keinginan Anda. Juga, jangan lupa untuk mengubah nama metode input dll. Anda baru saja membuat metode input Dvorak-Arab baru.

Saya dapat memperbarui jawabannya dengan lebih detail jika ada yang tampak rumit.

Emre Sahin
sumber
Terima kasih! Itu membuat saya di jalan yang benar. Saya akan mengirim jawaban tambahan yang menjabarkan bagaimana saya sampai di sana pada ...-alistversi.
Dan
Sama-sama. Anda mungkin berpikir untuk mengirimkan pembaruan Anda quail-. *-alistke pengembangan Emacs. Saya yakin ada pengguna Dvorak lain yang akan mendapat manfaat dari itu.
Emre Sahin
7

@EmreSahin menempatkan saya di jalan yang benar untuk menjawab pertanyaan ini, jadi saya memberikan sedikit detail kalau-kalau ada orang lain yang harus berurusan dengan masalah seperti ini sendiri.

Seperti yang ditunjukkan Emre, kita perlu menambahkan tata letak Dvorak quail-keyboard-layout-alist. Ternyata quailperpustakaan tidak terdokumentasi dengan baik dalam manual , di mana dua fungsi terkait disebutkan lewat satu node.

Namun, setelah berkonsultasi dengan utas bantuan ini dan, terutama, halaman EmacsWiki pada bahasa Rusia dengan Dvorak (dari mana boks jawaban ini), saya pikir saya sudah menemukannya.

Docstring untuk variabel quail-keyboard-layoutmenjelaskan apa yang perlu kita masukkan quail-keyboard-layout-alist. Ini adalah string panjang yang sesuai dengan 6 baris masing-masing 15 kunci. Setiap baris sesuai dengan nilai yang tidak tergeser dan bergeser dari setiap tombol, dengan total 30 karakter per baris. Saya kurang yakin tentang poin berikut, tetapi tampaknya, untuk apa yang saya sebut keyboard "semi-standar" dengan 4 baris kunci, baris pertama dan keenam masing-masing harus 30 ruang kosong.

The big mengungkapkan:

(require 'quail)

(add-to-list 'quail-keyboard-layout-alist
             `("dvorak" . ,(concat "                              "
                                   "  1!2@3#4$5%6^7&8*9(0)[{]}`~  "
                                   "  '\",<.>pPyYfFgGcCrRlL/?=+    "
                                   "  aAoOeEuUiIdDhHtTnNsS-_\\|    "
                                   "  ;:qQjJkKxXbBmMwWvVzZ        "
                                   "                              ")))

(quail-set-keyboard-layout "dvorak")
Dan
sumber