टर्मिनल (कोई डेस्कटॉप वातावरण) में कंपोज़ कुंजी को कैसे परिभाषित करें?


18

मैं एक परिभाषित करना चाहूंगा compose अपने सिस्टम पर कुंजी (डेबियन सिड "व्हीज़ी")। मेरे पास कोई Xorg नहीं है (और कोई डेस्कटॉप वातावरण नहीं चाहिए)। केवल टर्मिनल में।

मैं इसे अपनी Alt-Grकुंजी (दाएं Alt) पर स्थापित करना चाहूंगा । मैंने थोड़ी देर के लिए कोशिश की है, लेकिन मैं यह पता नहीं लगा सकता कि इसे कैसे स्थापित किया जाए।

मैं जाँच कर रहा हूँ और कुछ दिशाएँ मिली हैं:

  • $ showkeyमुझे मेरी Alt-Grचाबी का कोड (# 100) देता है

  • $ dumpkeysऔर $ dumpkeys --compose-onlyआउटपुट "कीबोर्ड के ड्राइवर की वर्तमान सामग्री", पृष्ठ के keymapsअनुसार, निर्दिष्ट प्रारूप मेंman

  • $ loadkeys एक कीबोर्ड अनुवाद तालिका लोड करें

मुझे यकीन है कि यह मुश्किल नहीं है, लेकिन मुझे याद है कि इससे कैसे निपटना है ...


हम्म, मैं 100% का अनुसरण नहीं कर रहा हूं, जब आप इसे हिट करते हैं तो आप ऑल्ट-जीआर को क्या पसंद करेंगे?
इमानुएल बर्ग

मैं चाहूंगा कि यह कंपोज़ की हो । वास्तव में, मैं बस एक कंपोज कुंजी को परिभाषित करना चाहूंगा, और जब से मैं इसे अपने Alt-Gr पर उपयोग करने के लिए उपयोग कर रहा हूं, मैं वहां परिभाषित करना चाहूंगा। GUI के साथ सेट अप करना बहुत आसान है , लेकिन मुझे शुद्ध कंसोल मोड में परिभाषित करने में सक्षम होना चाहिए क्योंकि मेरे पास कोई एक्स सिस्टम स्थापित नहीं है (यह एक विकल्प नहीं है)। मैं अभी पता नहीं लगा सकता कि कैसे।
cedbeu

जवाबों:


11

नए डेबियन और उबंटू सिस्टम पर, आपकी कीबोर्ड सेटिंग्स /etc/default/keyboardएक्स और कंसोल के बीच डाल दी जाती हैं । बस दौडो

sudo dpkg-reconfigure keyboard-configuration

और चुनें Compose key: Right Alt (AltGr) उपयुक्त स्क्रीन पर ।

तुम भी डाल सकता है XKBOPTIONS=compose:raltमें /etc/default/keyboardऔर रन

sudo dpkg-reconfigure console-setup

पुराने सिस्टम में कंसोल पर डिफ़ॉल्ट रूप से एक कंपोज कुंजी है। में usलेआउट, दबाने दोनों Alt एक साथ कुंजी की तरह कार्य करता Compose1

उदाहरण के लिए: Alt+ AltGr, ",A => एक

यदि आप AltGrकेवल होना पसंद करते हैं Compose, तो आपको बदलने की आवश्यकता है

alt keycode 100 = Compose

अपने सक्रिय कीबोर्ड मैप में

keycode 100 = Compose

ऐसा करने का सबसे आसान तरीका उपरोक्त बदलाव करना है /lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc

एक बेहतर तरीका यह है /lib/kbd/keymaps/i386/include/altgr-is-compose.incकि उपरोक्त लाइन के साथ एक नई फ़ाइल बनाई जाए, एक नया कीमैप बनाएं जिसमें यह शामिल हो और जो आपके डिफ़ॉल्ट कीमैप में सेट हो।

  1. PrtScnComposeडिफ़ॉल्ट रूप से भी कार्य करता है।

मुझे यह काम करने के लिए नहीं मिल रहा है। dpkg-reconfigureजादूगर वास्तव में एक लिखें कुंजी के बारे में पूछता है, लेकिन यह यह "यूनिकोड मोड" में काम नहीं करता कहते हैं (?)। इसके अलावा, जब वह मोड में नहीं होता है, तो यह कहता है कि कंट्रोल + पीरियड एक कंपोज कीज की तरह काम करता है। लेकिन मुझे वह काम नहीं मिल रहा है।
इमैनुएल बर्ग

मुझे लगता है कि चेतावनी संदेश संदर्भित करता है unicode_start। मेरे लिए, यह अभी भी काम करता है, बशर्ते मैं कहूं setupconके dpkg-reconfigureअनुसार चलाऊं।
मिकेल

जब मैं setupconअपने एक्स टर्मिनल ( urxvt) में चलता हूं , तो यह कहता है कि "हम कंसोल पर नहीं हैं, कंसोल अनकंफर्टेबल है।" साथ ही, showkeyशिकायत करता है कि "कंसोल के लिए फ़ाइल डिस्क्रिप्टर नहीं मिल सका"। उन ttyदोनों में , काम करता है, लेकिन showkeyकहता है (पहली बात) कि "केबी मोड UNICODE था", इसलिए शायद यही कारण है कि यह काम नहीं कर रहा है। लेकिन, नियंत्रण + अवधि में काम करता है tty। ठीक है, यह अब समझ में आता है।
इमानुएल बर्ग

आपके प्रश्न में कहा गया है कि आपके पास नहीं है X? आपको setupconलिनक्स वर्चुअल कंसोल पर चलने की आवश्यकता है , जैसे Ctrl + Alt + F1।
मिकेल

1
ऐसा लगता console-setupहै कि डिफ़ॉल्ट रूप से बहुत सारे रचना क्रमों का समर्थन नहीं करता है। आप यह dumpkeys --compose-onlyदेखने के लिए दौड़ सकते हैं कि कौन से हैं। आपको console-setupअतिरिक्त कंपोज़ नियमों को जोड़ने के लिए init स्क्रिप्ट को संशोधित करने में सक्षम होना चाहिए जहां यह चलता है loadkeys
मिकेल

2

कंसोल पर "रचना" दो वर्णों को टाइप करने की अनुमति देता है लेकिन एक तिहाई उत्पादन करता है।

समस्या यह है कि रचना परिभाषा बाइट्स का उपयोग करती है , दोनों दो इनपुट के रूप में (अर्थात, आप टाइप की गई के संदर्भ में कंपोज़ को परिभाषित नहीं कर सकते हैं लेकिन केवल टाइप किए गए प्रतीकों की अवधि में) और आउटपुट के लिए।

यह UTF-8 में काम करने के लिए, जो मल्टीबाइट (1 से 4 बाइट्स, कम से कम) है जिस तरह से कंसोल इनपुट को संभाला जाता है, उसमें महान बदलावों की आवश्यकता होती है, और वर्तमान में कुछ अधिक जटिल द्वारा उपयोग किए जाने वाले सरल चार सरणी की जगह। ऐसा लगता है कि ऐसा करने की कोई योजना नहीं है (कर्नेल डेवेलोपर्स के बीच आम सहमति यह है कि कंसोल को एक कंसोल ही रहना चाहिए, कुछ सरल, केवल अंतिम रीसोर्ट के लिए उपयोग किया जाता है; यदि आपको वास्तव में यूनिकोड की आवश्यकता है, तो आपको बीड़ी, आकार देने आदि की भी आवश्यकता है;) एक ग्राफिकल टर्मिनल (एक्स 11 पर एक फुलस्क्रीन एक्सटर्म चलाना बेहतर है; लेकिन अन्य संभावनाएं हैं)।

तो, वास्तव में यह काम नहीं करता है, और कंसोल पर मल्टीबाइट पात्रों के साथ काम नहीं करेगा। लेकिन, यह अभी भी काम करता है यदि आप रचना की परिभाषाओं को ASCII के लिए प्रतिबंधित करते हैं।

और मुझे यह भी पता चला कि यह भी काम करता है अगर आउटपुट iso-8859-1 में है (जो कि 0x00ff तक के यूनिकोड मूल्यों के अनुरूप है); इसके लिए आप कुछ स्टार्ट स्क्रिप्ट को एक लाइन में रख सकते हैं:

    loadkeys / somepath / somefile

और उस फाइल को लिखें जिसे आप चाहते हैं (आईएसओ-8859-1 एन्कोडिंग में फ़ाइल को सहेजने के लिए सावधान रहें और आउटपुट के रूप में 0x7f से बड़े चार्ट का उपयोग करें) ऐसी फाइल का सिंटैक्स बहुत सरल है, इस तरह से लाइनें।

    to सोमचर ’को char सोमोथेरचर’ को som वांछित ’को रचना

उदाहरण के लिए:

    'a' को 'a' के लिए लिखें
    '' '' '' '' '' में लिखें।

प्रेरितों को बचना होगा।

उस फ़ाइल में मृत डायक्ट्रीक कीज़ के प्रभाव को भी परिभाषित किया गया है; dead_acute + के लिए आप एक लाइन परिभाषित करते हैं जैसे:

    '' '' ए '' '' '' के लिए लिखें

dead_grave backtick (`) का उपयोग करता है, dead_diaeresis doublequote (") का उपयोग करता है, dead_circumflex circumflex (^) का उपयोग करता है और dead_tilde tilde (~) का उपयोग करता है।


धन्यवाद, काम करने के लिए मिल गया। केवल, मैं परिवर्तन करना पड़ा compose 'a' 'a' to 'å'में compose 'o' 'a' to U+00E5, नहीं तो loadkeysएक सिंटैक्स त्रुटि के बारे में शिकायत की।
इमानुएल बर्ग

जब आपने 'å' का प्रयोग किया, तो क्या आपने फ़ाइल iso-8859-1 में लिखी थी (utf-8 नहीं)?
पाब्लो शरतगागा

मुझे नहीं पता। मैं कैसे जांच करूं?
इमानुएल बर्ग

यदि कोई फ़ाइल utf-8 में है, तो परीक्षण करें: iconv -f utf-8 -t utf-8 filename यदि कोई त्रुटि नहीं है, तो वह utf-8 में है
पाब्लो सरताक्सगा

ऐसा लगता है कि फ़ाइल को कैट किया जा रहा है, लेकिन नहीं, echo $?कम से कम कोई त्रुटि नहीं है , और कोई आउटपुट नहीं है stderr। यह भी fileबताता है कि यह UTF-8 है, इसलिए यह समझ में आता है।
इमानुएल बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.