कस्टम xkb लेआउट जिसमें एक कुंजी दो यूनिकोड कोड बिंदु बनाती है


14

मैं Xorg के लिए एक नया कस्टम कीबोर्ड लेआउट लिख रहा हूं, लेकिन एक विशेष ग्लिफ़ है जो यूनिकोड में मौजूद नहीं है। हालाँकि, एक मानक पत्र के साथ-साथ एक संयोजन diacritic चिह्न का उपयोग करके इसे बनाना आसान है।

उदाहरण के लिए, यदि मुझे vनीचे मैक्रॉन के साथ अक्षर चाहिए , तो अनुक्रम U0073+U0331वह चरित्र बनाता है जो मुझे चाहिए।

मेरी xkb लेआउट परिभाषा में, मैं एक एकल यूनिकोड बिंदु निर्दिष्ट कर सकता हूं (यहां altgr+dkb और Ḏ के लिए बाध्य है altgr+shift+d):

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

लेकिन मैं एक एकल कुंजी के लिए एक 'संयुक्त' यूनिकोड ग्लिफ़ निर्दिष्ट करने में सक्षम नहीं लगता:

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

क्या इस तरह सिस्टम-वाइड xkb परिभाषा बनाना संभव है?

जवाबों:


11

संपादित करें:

अब भी कोशिश कर रहा हूं...

परीक्षण से पता चलता है कि कीमैप प्रत्येक स्थिति में केवल एक ही कुंजी लेगा।

लेकिन, अगर आप कीमैप की परिभाषा में एक दुर्लभ / कभी इस्तेमाल नहीं किया जाने वाला कीसम का उपयोग करते हैं, तो आपके द्वारा आवश्यक विभिन्न यूनिकोड वर्णों को बनाने के लिए एक वैश्विक एक्समॉडमैप बनाया जाएगा, यह काम करेगा।

कीमैप में:

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

एक वैश्विक Xmodmap में: (शायद /etc/profile.d से लोड किया गया है?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

काफी कुछ अप्रयुक्त / विशेष-उपयोग कीज़ हैं, मैंने एक उदाहरण के रूप में लॉन्चए / बी को चुना।


जवाब के लिए धन्यवाद। एक कमी यह है कि यह एक प्रति-उपयोग सेटिंग होगी, है ना? इसे xkb के साथ करने से यह सिस्टम-वाइड हो जाएगा और इसका मतलब यह है कि इसे एक ही फाइल में वितरित किया जा सकता है। बेशक, वे स्थितियाँ मेरे मूल प्रश्न में थीं!
SigueSigueBen

2
मैंने स्रोत कोड के माध्यम से खोदा, कीमैप की प्रमुख परिभाषाओं में कई कीस्ट्रोक्स सहित के लिए कोई समर्थन प्रतीत नहीं होता है। बेशक, आप उस क्षमता को लागू करने के लिए खुद को फिर से लिख सकते हैं!
लोर्निक्स

जवाब नहीं मैं चाहता था, लेकिन फिर भी यह जवाब है। मैं स्वयं स्रोत कोड के आसपास थोड़ा प्रहार करूंगा और आपके द्वारा सुझाए गए विकल्पों को देखूंगा। धन्यवाद।
सितंबर को

4

दूसरी ओर, आप किसी दिए गए कुंजी को यूनिकोड को डायक्टिटीज के चरित्र के साथ जोड़ सकते हैं, और फिर आप इसे किसी अन्य वर्ण के बाद टाइप कर सकते हैं। वास्तव में यही वह तरीका है जिसमें यूनिकोड को मिलाकर वर्णों को कार्य करने की अनुमति दी जाती है।

X11 में डेड कीज़ होती हैं, डेड कीज़ दूसरे तरीके से काम करती हैं: पहले डेड की, फिर बेस लेटर। वहाँ एक है <dead_belowmacron>, आप इसे कुछ कुंजी को संलग्न कर सकते हैं।

फिर आपको अपने लोकेल के लिए कम्पोज़ फ़ाइल को एडिट करने की ज़रूरत है (यदि कोई जानता है कि किसी यूज़र डिफ़ाइंड लोकेशन से कंपोज़ फाइल को कैसे डिफाइन करना है, जिसे मैं apreciate करूंगा), और लाइन्स ऐड करें:

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

उपयोग करने के लिए कंपोज़ फ़ाइल /usr/share/X11/locale/compose.dir फ़ाइल में लोकेल द्वारा परिभाषित की गई है (पथ भिन्न हो सकता है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.