Ubuntu ckbcomp: कंसोल कीमैप कंपाइल व सेटअप गाइड

परिचय

लिनक्स वर्चुअल कंसोल (TTY) में XKB-आधारित जटिल कीबोर्ड विन्यास को सीधे निष्पादित नहीं किया जा सकता; इसके लिए पहले उन्हें कंसोल-अनुकूल बाइनरी अथवा टेक्स्ट कीमैप में संकलित करना आवश्यक होता है। इस कार्य को ckbcomp टूल अत्यंत सुगम बना देता है। लंबे-चौड़े मैन्युअल पेजों (man pages) में उलझने के बजाय, इस ट्यूटोरियल में हम व्यावहारिक कमांड्स के माध्यम से ckbcomp के मूलभूत उपयोग, विभिन्न देशों के लेआउट चयन, CapsLock तथा Ctrl कुंजियों की अदला-बदली जैसी कस्टम मैपिंग्स और अंततः loadkeys द्वारा उन्हें तत्काल लागू करने की पूरी प्रक्रिया को समझेंगे।

1. आवश्यक पैकेज इंस्टॉलेशन एवं बेसिक US लेआउट संकलन

कंसोल परिवेश में X11/XKB कीबोर्ड विन्यासों को ट्रांसलेट व सक्रिय करने के लिए सिस्टम पर console-setup, kbd तथा xkb-data पैकेजों का होना अनिवार्य है।

sudo apt-get update -qq && sudo apt-get install -y console-setup kbd xkb-data

ckbcomp यूटिलिटी XKB लेआउट डेफिनिशन को प्रोसेस करके लिनक्स कर्नेल कंसोल के समझने योग्य loadkeys प्रारूप में रूपांतरित करती है।
मानक US लेआउट को कंपाइल कर आउटपुट की शुरुआती संरचना देखने के लिए हम इसे head -n 30 के साथ पाइप करते हैं:
⚙️ [प्रमुख विकल्प (Options)]

-model : उपयोग में आने वाले कीबोर्ड हार्डवेयर मॉडल (जैसे pc105 अथवा pc104) को इंगित करता है।
-variant : किसी विशिष्ट लेआउट के उप-प्रकार (जैसे dvorak या colemak) का चयन करता है।
-option : XKB एक्सटेंशन विकल्प जोड़ता है, जैसे CapsLock के व्यवहार को बदलना (ctrl:nocaps)।
-charmap : जनरेट होने वाली कीमैप फाइल का कैरेक्टर एन्कोडिंग सेट (उदा. UTF-8 अथवा ISO-8859-1) तय करता है।
-compact : डुप्लिकेट की-डेफिनिशन को आपस में मिलाकर जनरेटेड मैपिंग फाइल का आकार छोटा करता है।
-freebsd : लिनक्स कर्नेल के बजाय FreeBSD कंसोल मानकों के अनुसार कीमैप तैयार करता है।

ckbcomp us | head -n 30

2. हार्डवेयर मॉडल (-model) व क्षेत्रीय लेआउट वेरिएंट (-variant) का उपयोग

मानक 105-कुंजी वाले कीबोर्ड (-model pc105) के लिए कोरियन विन्यास (-layout kr) निर्दिष्ट करके कंसोल कीमैप संकलित किया जा सकता है।
इसके आउटपुट में प्रत्येक की-कोड संख्या के सापेक्ष यूनीकोड कैरेक्टर मान और विभिन्न संयोजन अवस्थाओं की स्पष्ट मैपिंग देखी जा सकती है।

ckbcomp -model pc105 -layout kr | head -n 25

वहीं जर्मन लेआउट (-layout de) में यदि आप डेड-कीज़ का प्रभाव हटाना चाहते हैं, तो -variant nodeadkeys विकल्प का प्रयोग करें।
डेड-की (Dead keys) कार्यप्रणाली निष्क्रिय हो जाने से एक्सेंट वाले अक्षरों को टाइप करते समय संयोजन का इंतजार किए बिना संकेत तुरंत स्क्रीन पर प्रिंट हो जाते हैं।

ckbcomp -model pc105 -layout de -variant nodeadkeys | head -n 25

3. कस्टम की व्यवहार: CapsLock को Control कुंजी में बदलना

डेवलपर्स और सिस्टम एडमिनिस्ट्रेटर्स के लिए CapsLock को Control कुंजी के रूप में उपयोग करना काफी सुविधाजनक होता है। -option ctrl:nocaps के साथ कीमैप कंपाइल करें और grep से Caps_Lock सिंबल की जांच करें।
चूंकि CapsLock का मूल कार्य पूरी तरह हटकर Control में बदल चुका है, इसलिए परिणाम में कोई भी Caps_Lock प्रविष्टि प्रदर्शित नहीं होगी।

ckbcomp -layout us -option ctrl:nocaps | grep -i ‘caps_lock’ -B 2 -A 5

यदि आप दोनों कुंजियों की भूमिकाओं को परस्पर बदलना चाहते हैं, तो -option ctrl:swapcaps फ्लैग का प्रयोग करें।
परिणाम में देखा जा सकता है कि पारंपरिक Control कुंजी (keycode 29) पर अब Caps_Lock असाइन हो चुका है, जिससे दोनों कुंजियों के कार्य सफलतापूर्वक स्वैप हो जाते हैं।

ckbcomp -layout us -option ctrl:swapcaps | grep -E ‘Caps_Lock|Control’ | head -n 20

4. संकलित कीमैप को सहेजना और loadkeys से तुरंत सक्रिय करना

जनरेट की गई कस्टम कीमैप फाइलों को व्यवस्थित रखने के लिए सर्वप्रथम mkdir -p ~/keymaps चलाकर एक समर्पित डायरेक्टरी बनाएं।

mkdir -p ~/keymaps

इसके पश्चात, US लेआउट पर CapsLock-to-Ctrl मॉडिफिकेशन लागू करते हुए आउटपुट को रीडायरेक्शन (>) ऑपरेटर की मदद से ~/keymaps/custom_us.map फाइल में सेव करें।

ckbcomp -layout us -option ctrl:nocaps > ~/keymaps/custom_us.map

कंसोल में डिस्क उपयोग व मेमोरी दक्षता बढ़ाने के लिए मूल फाइल को सुरक्षित रखते हुए gzip -fk ~/keymaps/custom_us.map कमांड द्वारा इसे कंप्रेस करें।

gzip -fk ~/keymaps/custom_us.map

ls -lh ~/keymaps/custom_us.map* के जरिए जनरेटेड फाइलों का विवरण जांचें।
लगभग 120KB आकार की टेक्स्ट कीमैप फाइल सफलतापूर्वक कंप्रेस होकर मात्र 4.0KB की रह जाती है।

ls -lh ~/keymaps/custom_us.map*

अब इस कस्टमाइज्ड कीमैप को वर्तमान वर्चुअल कंसोल सेशन पर तत्काल प्रभाव से लागू करने के लिए sudo loadkeys ~/keymaps/custom_us.map निष्पादित करें।
बिना किसी त्रुटि के कमांड पूर्ण होते ही CapsLock कुंजी Control के रूप में कार्य करने लगेगी और आपके नए की-बाइंडिंग्स TTY कंसोल में तुरंत सक्रिय हो जाएंगे।

sudo loadkeys ~/keymaps/custom_us.map

इस लेख में हमने उबंटू के अंतर्गत ckbcomp का उपयोग कर XKB लेआउट्स को लिनक्स कंसोल कीमैप में कंपाइल करने और loadkeys के जरिए उन्हें सक्रिय करने की चरणबद्ध विधि देखी।
जटिल मैन पेजों में समय गंवाने के बजाय इन व्यावहारिक चरणों का पालन कर आप कंसोल वातावरण में भी अपनी इच्छानुसार कीबोर्ड मैपिंग आसानी से सेट कर सकते हैं।