เลย์เอาต์ xkb ที่กำหนดเองซึ่งหนึ่งคีย์สร้างจุดโค้ด Unicode สองจุด


14

ฉันกำลังเขียนรูปแบบแป้นพิมพ์แบบกำหนดเองใหม่สำหรับ Xorg แต่มีสัญลักษณ์หนึ่งอันซึ่งไม่มีอยู่ใน Unicode อย่างไรก็ตามเป็นเรื่องง่ายที่จะสร้างขึ้นโดยใช้ตัวอักษรมาตรฐานและเครื่องหมายกำกับรวม

ตัวอย่างเช่นถ้าฉันต้องการตัวอักษรที่vมี macron ด้านล่างลำดับU0073+U0331จะสร้างตัวละครที่ฉันต้องการ

ในคำจำกัดความเลย์เอาต์ xkb ของฉันฉันสามารถระบุจุด Unicode เดียว (ที่นี่altgr+dถูกผูกไว้กับḏและaltgr+shift+dถึงḎ):

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

แต่ดูเหมือนว่าฉันจะไม่สามารถระบุสัญลักษณ์ Unicode แบบ 'รวมกัน' สำหรับคีย์เดียว:

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

เป็นไปได้ไหมที่จะสร้างนิยาม xkb ทั่วทั้งระบบเช่นนี้?

คำตอบ:


11

แก้ไข:

ยังคงพยายาม ...

การทดสอบแสดงให้เห็นว่าคีย์แมปจะใช้คีย์เดียวในแต่ละตำแหน่งเท่านั้น

แต่ถ้าคุณใช้ keysym ที่หายาก / ไม่เคยใช้ในการกำหนด keymap แล้ว Xmodmap ทั่วโลกเพื่อให้การส่งออก keysym นั้นเป็นอักขระยูนิโค้ดต่างๆที่คุณต้องการสิ่งนี้จะได้ผล

ใน keymap:

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

ใน Xmodmap ทั่วโลก: (อาจโหลดจาก /etc/profile.d?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

มีคีย์ymsที่ใช้งาน / ใช้งานเป็นพิเศษค่อนข้างน้อยฉันเลือก LaunchA / B เป็นตัวอย่าง


ขอบคุณสำหรับคำตอบ. ข้อเสียเปรียบอย่างหนึ่งคือการตั้งค่านี้เป็นการใช้งานต่อครั้งใช่ไหม การทำด้วย xkb จะทำให้ทั้งระบบและหมายความว่ามันสามารถแจกจ่ายในไฟล์เดียว แน่นอนเงื่อนไขเหล่านั้นอยู่ในคำถามเดิมของฉัน!
SigueSigueBen

2
ฉันขุดผ่านซอร์สโค้ดดูเหมือนจะไม่มีการสนับสนุนใด ๆ สำหรับการรวมการกดแป้นหลายครั้งในคำจำกัดความที่สำคัญของ keymap แน่นอนคุณสามารถเขียนใหม่ด้วยตัวคุณเองเพื่อใช้ความสามารถนั้น!
lornix

ไม่ใช่คำตอบที่ฉันต้องการ แต่นั่นคือคำตอบอย่างไรก็ตาม ฉันจะกระตุ้นรอบ ๆ ซอร์สโค้ดตัวเองเล็กน้อยและดูตัวเลือกที่คุณแนะนำ ขอบคุณ
SigueSigueBen

4

ในอีกทางหนึ่งคุณสามารถแนบไปกับคีย์ที่กำหนดให้ยูนิโค้ดรวมอักขระไดอะแอกทิตี้เข้าด้วยกันและจากนั้นคุณสามารถพิมพ์ได้ตามอักขระอื่น ๆ แน่นอนว่าเป็นวิธีที่ยูนิโค้ดรวมตัวอักขระไว้ในการทำงาน

ใน X11 มีกุญแจล็อคตายแล้วปุ่มตายทำงานด้วยวิธีอื่น: อันดับแรกคือกุญแจตายแล้วตามด้วยตัวอักษรฐาน มี<dead_belowmacron>, คุณสามารถแนบมันกับกุญแจได้

จากนั้นคุณต้องแก้ไขไฟล์ Compose สำหรับโลแคลของคุณ (หากมีคนรู้วิธีผนวกคำจำกัดความในการเขียนไฟล์จากตำแหน่งที่ผู้ใช้กำหนดไว้ซึ่งฉันจะขออภัย) และเพิ่มบรรทัดเช่น:

# 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̱"

ไฟล์ Compose ที่จะใช้ถูกกำหนดโดยโลแคลในไฟล์ /usr/share/X11/locale/compose.dir (พา ธ อาจแตกต่างกัน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.