Tata letak xkb khusus di mana satu kunci membuat dua titik kode unicode

14

Saya menulis tata letak keyboard khusus baru untuk Xorg, tetapi ada satu mesin terbang khusus yang tidak ada di Unicode. Namun, mudah untuk membuatnya dengan menggunakan huruf standar ditambah tanda diakritik gabungan.

Misalnya, jika saya ingin huruf vdengan macron di bawah ini, urutannya U0073+U0331menciptakan karakter yang saya inginkan.

Dalam definisi tata letak xkb saya, saya dapat menentukan satu titik Unicode (di sini altgr+dterikat ke ḏ dan altgr+shift+dke Ḏ):

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

Tapi sepertinya saya tidak bisa menentukan mesin terbang Unicode 'gabungan' untuk satu kunci:

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

Apakah mungkin untuk membuat definisi xkb seluruh sistem seperti ini?

SigueSigueBen
sumber

Jawaban:

11

EDIT:

Masih berusaha ...

Pengujian menunjukkan bahwa keymap HANYA akan mengambil satu kunci di setiap posisi.

TETAPI, jika Anda menggunakan kunciym langka / tidak pernah digunakan dalam definisi keymap, maka Xmodmap global untuk membuat THAT itu mengeluarkan output berbagai karakter unicode yang Anda butuhkan, ini akan berhasil.

Di peta kunci:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

Dalam Xmodmap global: (mungkin dimuat dari /etc/profile.d?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Ada beberapa keyyms yang tidak digunakan / digunakan khusus, saya memilih LaunchA / B sebagai contoh.

lornix
sumber
Terima kasih atas jawabannya. Salah satu kelemahannya adalah ini akan menjadi pengaturan sekali pakai, kan? Melakukannya dengan xkb akan membuatnya menjadi seluruh sistem dan berarti dapat didistribusikan dalam satu file. Tentu saja, syarat-syarat itu ada dalam pertanyaan awal saya!
SigueSigueBen
2
Saya menggali melalui kode sumber, sepertinya tidak ada dukungan untuk memasukkan beberapa penekanan tombol dalam definisi kunci keymap. Tentu saja, Anda dapat menulis ulang sendiri untuk menerapkan kemampuan itu!
lornix
Bukan jawaban yang saya inginkan tetapi tetap jawabannya. Saya akan menyodok kode sumber sedikit sendiri dan melihat opsi yang Anda sarankan. Terima kasih.
SigueSigueBen
4

Di sisi lain, Anda dapat melampirkan kunci yang diberikan unicode yang menggabungkan karakter diactityics itu sendiri, dan kemudian Anda bisa mengetiknya setelah karakter lain. Memang begitulah cara menggabungkan karakter unicode untuk bekerja.

Di X11 ada kunci mati, kunci mati berfungsi sebaliknya: pertama kunci mati, lalu huruf dasar. Ada <dead_belowmacron>, Anda bisa melampirkannya ke beberapa tombol.

Maka Anda perlu mengedit file Tulis untuk lokal Anda (jika seseorang tahu cara menambahkan definisi ke file Menulis dari lokasi yang ditentukan pengguna saya akan menghargai), dan menambahkan baris seperti:

# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"

file Compose yang akan digunakan ditentukan oleh lokal di file /usr/share/X11/locale/compose.dir (path dapat bervariasi).

Pablo Saratxaga
sumber