Apa langkah-langkah yang diperlukan untuk membuat tata letak keyboard baru di ubuntu?

43

Keyboard yang saya coba buat memiliki banyak Unicode dan terlihat seperti ini: Keyboard yang saya coba buat

Tidak berhasil dengan tutorial berikut:

Saya bertanya-tanya apakah ada orang yang mau memberikan tutorial yang lebih baik dengan instruksi langkah demi langkah?

Akiva
sumber
2
Mmh, ini seperti duplikat bagi saya . Sayang sekali Anda sudah memberi hadiah pada pertanyaan Anda: /.
Glutanimate
@Glutanimate Oh rapi; tidak melihat itu. Saya masih akan menghargai jawaban yang lebih baik.
Akiva
Anda dapat menggunakan tautan ini. help.ubuntu.com/community/ComposeKey
Anandu M Das

Jawaban:

69

Di Ubuntu 14.04 , tata letak keyboard disimpan

/usr/share/X11/xkb/symbols/


Setiap file dalam direktori ini berisi serangkaian entri dari jenis berikut:

    key <AC01> {[a, A, aacute, Aacute]};

Entri ini memetakan tombol pada keyboard ke sejumlah karakter tertentu menggunakan konvensi berikut:

  1. < A C01> Huruf pertama Amenunjukkan kita cari di blok tombol alfanumerik (pilihan lain termasuk KP [for keypad]dan FK [for Function Key]);

  2. <A C 01> Huruf kedua Cmenunjukkan baris, dihitung dari bagian bawah di mana kunci ditemukan. (Pada keyboard AS standar, bilah spasi dalam barisan AAdan tombol angka ada pada barisan AE).

  3. <AC 01 > Angka-angka 01menunjukkan posisi kunci, dihitung dari kiri dan mengabaikan kunci yang bernama khusus seperti TABatau ~(tilde): AC01ada di baris ketiga ke atas, kunci pertama di atas dari kiri (mengabaikan Caps Lock, jika ada); pada keyboard AS standar, ini adalah tombol bertanda "a".

  4. Tanda kurung melampirkan daftar karakter yang ditetapkan untuk setiap tombol. Ini berisi hingga empat entri, dipisahkan dengan koma:

    1. a - Kunci yang tidak dimodifikasi.
    2. A - ShiftKarakter.
    3. á - Alt GrKarakter. ( aacute )
    4. Á - Karakter Shift+ Alt Gr. ( Aacute )

Membuat peta papan ketik khusus semudah mengganti karakter yang tidak Anda inginkan pada baris tertentu dengan yang Anda lakukan!

Sebagai contoh:

Sebagai seorang Anglo-Saxonist, saya mengetik ádan Ájauh lebih jarang daripada saya mengetik ædan Æ.

Untuk menambahkan karakter Anglo-Saxon ke daftar saya, saya cukup mengganti aacutedan Aacutedengan nama entitas atau titik kode Unicode untuk ædan Æ(masing-masing “aelig” atau U00E6 dan “AElig” atau U00C6 ):

    key {[a, A, aelig, AElig]};

atau

    key {[a, A, U00E6, U00C6]};

Ketika saya selesai memodifikasi tata letak keyboard saya, saya menyimpan file dengan nama baru, "oe" di direktori yang sama.

Menambahkan tata letak keyboard baru ke evdev.xmlfile.

Untuk menggunakan tata letak keyboard baru, Kami perlu memberi tahu X11bahwa itu ada. Dalam Ubuntu 14,04 X11melacak keyboard yang diinstal dalam /usr/share/X11/xkb/rules/evdev.xmlfile. Kemudian mari kita tambahkan tata letak baru di dalamnya.

  1. Buka X11/xkb/rules/evdev.xmldi editor
  2. Pergi ke akhir <layoutList>bagian (cari </layoutList>). Tambahkan berikut ini setelah </layout>tag terakhir , di mana Xnama file tata letak keyboard Anda di /usr/share/X11/xkb/symbols(dalam kasus saya oe); Ynama pendek yang cocok; dan Znama panjang yang tepat dalam satu atau lebih bahasa dan aaasebuah tiga surat hukum (639-2 ISO) kode bahasa (misalnya eng untuk bahasa Inggris):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

Ini dia, ikuti pengantar lengkap

Tautan terkait lainnya:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html

αғsнιη
sumber
Saya mengerjakan posting ini sedikit; konten yang Anda berikan berkualitas sangat tinggi, tetapi masih perlu diperbaiki menurut saya. Tutorial yang Anda tautkan sudah sangat kuno dan ketinggalan zaman, dan penuh dengan "Jika Anda menggunakan 8.04, lakukan xy dan z". Saya ingin melihat jawaban tutorial lengkap (saya hanya berharap saya dapat meningkatkan karunia)
Akiva
@ Akiva Tidak membantu jawaban ini untuk Anda? Di mana Anda memiliki masalah?
αғsнιη
3
Jawabannya membantu; Menjelaskan AC01 ditulis dengan sangat baik, tetapi saya ingin jawaban lengkap dengan semua langkah. Ketika Anda ditautkan ke tutorial lainnya; mereka sudah tua, dan mereka bertiga ada. Demi pengguna lain, saya lebih suka memiliki jawaban lengkap yang disediakan di sini. Jadi misalnya; ada lebih banyak elemen yang ditemukan dalam file teks di luar Kunci <ac01> {[a, b, c, d]}, dan ada juga file XML yang perlu diedit. Ada juga pertanyaan tentang bagaimana menguji ini. Seperti Yang Dikatakan; Saya seharusnya memberikan hadiah 500 rep pada ini, karena itu adalah tugas yang cukup besar untuk membuat tutorial yang bagus.
Akiva
2
Saya akan segera menjawab ini sepenuhnya karena saya harus mendefinisikan tata letak keyboard saya. ketika saya menyiasatinya, saya akan menjawabnya dengan benar.
Akiva
Apakah ini hanya berfungsi untuk Xorg, atau juga untuk ttys?
Narcolessico
18

Catatan : Wayland memang menggunakan xkb, tetapi banyak xTools telah berhenti berfungsi dengan baik (xdotool misalnya)

Catatan : Ini adalah tutorial yang tidak lengkap. Ini sangat berguna bagi seseorang yang ingin membuat tata letak delapan tingkat baru dan memahami sintaksis.

Catatan: Solusi cepat dan kotor disediakan. Ini termasuk spreadsheet yang secara otomatis menghasilkan kode yang Anda butuhkan.


Memahami Direktori XKB

cd /usr/share/X11/xkb/ && ls
  1. types- Bagaimana kunci yang dihasilkan diubah oleh Pengubah Aktif . (Shift, Control, Alt ~)
    Penting jika Anda ingin menyesuaikan Tombol Pengubah.
  2. geometry- Digunakan untuk menggambar grafik keyboard.
    Penting jika Anda merancang perangkat keras keyboard yang tidak standar.
  3. rules- Mengambil konfigurasi yang sesuai untuk pengaturan Anda saat ini.
    Anda perlu mendefinisikan ini
  4. keycodes- Penerjemah kode kunci untuk perangkat keras keyboard.
    Contoh: Keyboard Macintosh memahami bilah spasi sebagai 57. Namun kami menulisnya sebagai<SPCE>
  5. symbols- Nilai mana yang ditugaskan untuk Keycodes apa .
    Di sinilah kita akan mendefinisikan tata letak khusus kita.
  6. compat- Pendek untuk Kompatibilitas .
    Perilaku internal Pengubah (Shift, Control, Alt ...)

Alur kerja

keycodes > symbols > compat

Saya hanya menyentuh symbols: Lihat di bawah untuk solusi Cepat dan Kotor .


Symbol Maps

/symbols/us File apa pun dalam direktori ini mengikuti struktur yang sama.

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial - Bukan peta keyboard lengkap

alphanumeric_keysBagian keyboard sedang dipetakan. Beberapa dapat digunakan
Catatan: Jika tidak *_keysditentukan, keyboard lengkap diasumsikan.

"basic" - Nama peta simbol

name[Group1]= "US/ASCII";Memberi nama unik untuk grup keyboard ini.

modifier_mapUntuk mengedit kunci pengubah . (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R };Biasanya tidak perlu. Ini memetakan kedua shift ke pengubah shift, alias level 2.

key <TLDE> Tombol Tilde - Biasanya tombol kiri atas tepat di atas Tab

key <AE01> Ilustrasi - Terdiri dari Tiga Bagian,AE01

  1. A= blok kunci alfanumerik.
    KP= Keypad = Tombol
    FKFungsi

  2. E= Baris pada Keyboard.
    Space Key= Abaris
    Shift Key= Bbaris
    Caps Lock= Cbaris
    Tab Key= Dbaris

  3. 01= Posisi kunci pada baris.
    AE01= 1
    AB02= X
    AC05=G

[+ ]- Dalam Bahasa C; Kurung kotak menunjukkan daftar, di mana item dibagi ,. Panjang daftar menentukan jumlah level. Sebagai contoh:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

Biasanya, Level menunjukkan penekanan tombol berikut dengan:

  1. Tidak Ada Kunci Pengubah
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - Tidak mungkin melihat apa pun di luar level 4.

Singkatnya, jika Anda ingin memetakan kunci untuk menggeser + altgr, daftar Anda harus memiliki setidaknya empat item.


PERINGATAN - Kesalahan Umum

Salah satu dari baris ini akan menyebabkan kesalahan kritis, dan akan meninggalkan Anda tanpa keyboard yang dapat digunakan:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspaceseharusnya BackSpace: Memberi perhatian ekstra pada ejaan.
  • Entri kosong seharusnya VoidSymbol.

Ukuran Keamanan Terbaik!

  1. Cadangkan file Anda yang sedang diedit:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Buat skrip yang dapat Anda jalankan tanpa root password

Sesuatu seperti:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

Jika ada yang tidak beres, gunakan mouse Anda untuk menjalankan baris kode itu (terkandung dalam skrip bash yang Anda berikan izin kepada sudoers. Ingatlah chmod +xuntuk mengizinkan menjalankan sebagai yang dapat dieksekusi.)


Strategi cadangan untuk memulihkan sistem yang rusak

  • PERINGATAN: Keyboard & Keyboard di Layar akan berhenti bekerja dengan kesalahan sedikit pun.
  • Mouse akan bekerja . Mengetik dapat dilakukan dengan menyorot karakter, dan menempelkannya menggunakan klik tengah. Di Bash, Anda bisa return(Menekan Enter) dengan menempelkan linebreak.
  • Keyboard akan bekerja dalam mode pemulihan di shell root. (Diakses dari bash)
  • Anda selalu dapat menggunakan lingkungan langsung untuk memperbaiki file.

Solusi cepat dan kotor

  1. Kesini
  2. File> Buat Salin
  3. Mapper Sheet adalah tempat Anda menentukan tata letak Anda.
    • Entri Karakter Tunggal diterjemahkan ke dalam kode yang dipahami oleh program.
      ( !menjadi U0021). Unicode didukung!
    • String tidak diterjemahkan dan diperlakukan apa adanya. PASTIKAN TIDAK ADA Ejaan atau KASUS kesalahan !.
    • Kotak Kosong secara otomatis diisi dengan VoidSymbol.
  4. XKB-Sort Lembar berisi grup utama, misalnya:
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    Mengubah ini di semua 8 level:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBTab juga memiliki garis. Setiap tab lainnya dapat diabaikan (kodenya).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. Ganti konten tata letak. Pilih satu yang tidak akan Anda gunakan. Sebagai contoh: Saya mengubah entri colemak meninggalkan struktur utuh, dan mengganti kunci.

Garis minat:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5

Akiva
sumber
Baris teratas dari jawaban Anda mengatakan: "(WIP - Jangan memilih.)". Jawabannya sepertinya cukup lengkap untuk saya - mungkin catatan ini harus dihapus?
MattKelly
1
@MattKelly Ahh Saya belum sempat memperbaruinya. Saya benar-benar membuat spreadsheet yang membuat kode secara otomatis berdasarkan karakter apa yang Anda masukkan ke dalam layout keyboard tiruan.
Akiva
Itu terdengar seperti spreadsheet yang berguna - apakah tersedia untuk umum?
MattKelly
@MattKelly Ini salinannya. Dibutuhkan banyak cruft yang dihilangkan, dan mungkin beberapa setang ditambahkan, tetapi seperti yang Anda lihat menghasilkan kode: docs.google.com/spreadsheets/d/…
Akiva
Pendekatan ini tidak memungkinkan pengaturan RALT untuk bertindak sebagai backspace lain, atau pengaturan kunci masukkan untuk bertindak sebagai backquote / tilde.
Craig Hicks