मुख्य चरित्र मानचित्र फ़ाइलें

मुख्य चरित्र मानचित्र फ़ाइलें ( .kcm फ़ाइलें) यूनिकोड वर्णों में संशोधक के साथ एंड्रॉइड कुंजी कोड के संयोजन को मैप करने के लिए ज़िम्मेदार हैं।

डिवाइस-विशिष्ट कुंजी लेआउट फ़ाइलों की आवश्यकता उन सभी आंतरिक (अंतर्निहित) इनपुट डिवाइसों के लिए होती है जिनमें कुंजियाँ होती हैं, यदि केवल सिस्टम को यह बताने के लिए कि डिवाइस केवल विशेष उद्देश्य के लिए है (पूर्ण कीबोर्ड नहीं)।

डिवाइस-विशिष्ट कुंजी लेआउट फ़ाइलें बाहरी कीबोर्ड के लिए वैकल्पिक हैं, और अक्सर इनकी बिल्कुल भी आवश्यकता नहीं होती है। सिस्टम एक सामान्य कुंजी चरित्र मानचित्र प्रदान करता है जो कई बाहरी कीबोर्ड के लिए उपयुक्त है।

यदि कोई डिवाइस-विशिष्ट कुंजी लेआउट फ़ाइल उपलब्ध नहीं है, तो सिस्टम इसके बजाय एक डिफ़ॉल्ट का चयन करेगा।

जगह

मुख्य चरित्र मानचित्र फ़ाइलें USB विक्रेता, उत्पाद (और वैकल्पिक रूप से संस्करण) आईडी या इनपुट डिवाइस नाम द्वारा स्थित होती हैं।

निम्नलिखित पथों को क्रम से परामर्श दिया गया है।

  • /odm/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /vendor/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /system/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /data/system/devices/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /odm/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /vendor/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /system/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /data/system/devices/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /odm/usr/keychars/DEVICE_NAME.kcm
  • /vendor/usr/keychars/DEVICE_NAME.kcm
  • /system/usr/keychars/DEVICE_NAME.kcm
  • /data/system/devices/keychars/DEVICE_NAME.kcm
  • /odm/usr/keychars/Generic.kcm
  • /vendor/usr/keychars/Generic.kcm
  • /system/usr/keychars/Generic.kcm
  • /data/system/devices/keychars/Generic.kcm
  • /odm/usr/keychars/Virtual.kcm
  • /vendor/usr/keychars/Virtual.kcm
  • /system/usr/keychars/Virtual.kcm
  • /data/system/devices/keychars/Virtual.kcm

डिवाइस नाम वाले फ़ाइल पथ का निर्माण करते समय, डिवाइस नाम में '0'-'9', 'a'-'z', 'A'-'Z', '-' या '_' के अलावा सभी अक्षर '_' द्वारा प्रतिस्थापित किया जाता है।

सामान्य कुंजी वर्ण मानचित्र फ़ाइल

सिस्टम एक विशेष अंतर्निहित कुंजी वर्ण मानचित्र फ़ाइल प्रदान करता है जिसे Generic.kcm कहा जाता है। इस मुख्य चरित्र मानचित्र का उद्देश्य विभिन्न प्रकार के मानक बाहरी कीबोर्ड का समर्थन करना है।

सामान्य कुंजी वर्ण मानचित्र को संशोधित न करें!

वर्चुअल कुंजी वर्ण मानचित्र फ़ाइल

सिस्टम एक विशेष अंतर्निहित कुंजी कैरेक्टर मैप फ़ाइल प्रदान करता है जिसे Virtual.kcm कहा जाता है जिसका उपयोग वर्चुअल कीबोर्ड डिवाइस द्वारा किया जाता है।

वर्चुअल कीबोर्ड डिवाइस एक सिंथेटिक इनपुट डिवाइस है जिसकी आईडी -1 है ( KeyCharacterMap.VIRTUAL_KEYBOARD देखें)। यह एंड्रॉइड हनीकॉम्ब 3.0 से शुरू होने वाले सभी एंड्रॉइड डिवाइसों पर मौजूद है। वर्चुअल कीबोर्ड डिवाइस का उद्देश्य एक ज्ञात अंतर्निहित इनपुट डिवाइस प्रदान करना है जिसका उपयोग आईएमई या परीक्षण इंस्ट्रूमेंटेशन द्वारा अनुप्रयोगों में कीस्ट्रोक्स को इंजेक्ट करने के लिए किया जा सकता है, यहां तक ​​कि उन डिवाइसों के लिए भी जिनमें अंतर्निहित कीबोर्ड नहीं हैं।

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

वर्चुअल कुंजी वर्ण मानचित्र को संशोधित न करें!

वाक्य - विन्यास

एक मुख्य चरित्र मानचित्र फ़ाइल एक सादा पाठ फ़ाइल होती है जिसमें एक कीबोर्ड प्रकार की घोषणा और कुंजी घोषणाओं का एक सेट होता है।

कीबोर्ड प्रकार की घोषणा

कीबोर्ड प्रकार की घोषणा कीबोर्ड के समग्र व्यवहार का वर्णन करती है। एक चरित्र मानचित्र फ़ाइल में एक कीबोर्ड प्रकार की घोषणा होनी चाहिए। स्पष्टता के लिए, इसे अक्सर फ़ाइल के शीर्ष पर रखा जाता है।

type FULL

निम्नलिखित कीबोर्ड प्रकार पहचाने जाते हैं:

  • NUMERIC : एक संख्यात्मक (12-कुंजी) कीबोर्ड।

    एक संख्यात्मक कीबोर्ड मल्टी-टैप दृष्टिकोण का उपयोग करके पाठ प्रविष्टि का समर्थन करता है। वांछित अक्षर या प्रतीक उत्पन्न करने के लिए किसी कुंजी को कई बार टैप करना आवश्यक हो सकता है।

    इस प्रकार का कीबोर्ड आमतौर पर अंगूठे से टाइप करने के लिए डिज़ाइन किया गया है।

    KeyCharacterMap.NUMERIC से मेल खाता है।

  • PREDICTIVE : एक कीबोर्ड जिसमें सभी अक्षर हैं, लेकिन प्रति कुंजी एक से अधिक अक्षर हैं।

    इस प्रकार का कीबोर्ड आमतौर पर अंगूठे से टाइप करने के लिए डिज़ाइन किया गया है।

    KeyCharacterMap.PREDICTIVE से मेल खाता है।

  • ALPHA : सभी अक्षरों और शायद कुछ संख्याओं वाला एक कीबोर्ड।

    एक वर्णमाला कीबोर्ड सीधे पाठ प्रविष्टि का समर्थन करता है लेकिन इसमें छोटे फॉर्म फैक्टर के साथ एक संक्षिप्त लेआउट हो सकता है। FULL कीबोर्ड के विपरीत, कुछ प्रतीक केवल विशेष ऑन-स्क्रीन कैरेक्टर पिकर का उपयोग करके ही पहुंच योग्य हो सकते हैं। इसके अलावा, टाइपिंग की गति और सटीकता में सुधार करने के लिए, फ्रेमवर्क अल्फाबेटिक कीबोर्ड जैसे ऑटो-कैपिटलाइज़ेशन और टॉगल/लॉक SHIFT और ALT कुंजी के लिए विशेष सुविधाएं प्रदान करता है।

    इस प्रकार का कीबोर्ड आमतौर पर अंगूठे से टाइप करने के लिए डिज़ाइन किया गया है।

  • FULL : एक पूर्ण पीसी-शैली कीबोर्ड।

    एक पूर्ण कीबोर्ड एक पीसी कीबोर्ड की तरह व्यवहार करता है। ऑन-स्क्रीन समर्थन या ऑटो-कैपिटलाइज़ेशन जैसे खर्चों के बिना कीबोर्ड पर कुंजी दबाकर सभी प्रतीकों तक सीधे पहुंचा जा सकता है।

    इस प्रकार का कीबोर्ड आम तौर पर पूर्ण दो हाथों से टाइपिंग के लिए डिज़ाइन किया गया है।

  • SPECIAL_FUNCTION : एक कीबोर्ड जिसका उपयोग टाइपिंग के बजाय केवल सिस्टम नियंत्रण कार्यों को करने के लिए किया जाता है।

    एक विशेष फ़ंक्शन कीबोर्ड में केवल होम और पावर जैसी गैर-प्रिंटिंग कुंजियाँ होती हैं जिनका वास्तव में टाइपिंग के लिए उपयोग नहीं किया जाता है।

Generic.kcm और Virtual.kcm मुख्य चरित्र मानचित्र दोनों FULL कीबोर्ड हैं।

प्रमुख घोषणाएँ

मुख्य घोषणाओं में प्रत्येक कीवर्ड key के बाद एक एंड्रॉइड कुंजी कोड नाम, एक खुला घुंघराले ब्रेस, गुणों और व्यवहारों का एक सेट और एक करीबी घुंघराले ब्रेस शामिल होता है।

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

गुण

प्रत्येक कुंजी गुण कुंजी से व्यवहार तक मैपिंग स्थापित करता है। मुख्य चरित्र मानचित्र फ़ाइलों को अधिक कॉम्पैक्ट बनाने के लिए, कई गुणों को अल्पविराम से अलग करके समान व्यवहार में मैप किया जा सकता है।

उपरोक्त उदाहरण में, label प्रॉपर्टी को 'A' व्यवहार सौंपा गया है। इसी तरह, ctrl , alt और meta गुण सभी को एक साथ none व्यवहार सौंपा गया है।

निम्नलिखित गुण पहचाने गए हैं:

  • label : उस लेबल को निर्दिष्ट करता है जो कुंजी पर भौतिक रूप से मुद्रित होता है, जब इसमें एक ही वर्ण होता है। यह वह मान है जो KeyCharacterMap.getDisplayLabel विधि द्वारा लौटाया जाता है।

  • number : जब संख्यात्मक पाठ दृश्य पर फ़ोकस होता है, तो व्यवहार (वर्ण जिसे टाइप किया जाना चाहिए) निर्दिष्ट करता है, जैसे कि जब उपयोगकर्ता फ़ोन नंबर टाइप कर रहा हो।

    कॉम्पैक्ट कीबोर्ड अक्सर कई प्रतीकों को एक ही कुंजी में जोड़ते हैं, जैसे कि एक ही कुंजी का उपयोग शायद '1' और 'a' या '#' और 'q' टाइप करने के लिए किया जा सकता है। इन कुंजियों के लिए, number गुण को यह इंगित करने के लिए सेट किया जाना चाहिए कि संख्यात्मक संदर्भ में कौन सा प्रतीक टाइप किया जाना चाहिए, यदि कोई हो।

    कुछ विशिष्ट "संख्यात्मक" प्रतीक अंक '0' से '9' , '#' , '+' , '(' , ')' , ',' , और '.' .

  • base : कोई संशोधक दबाए जाने पर व्यवहार (वर्ण जिसे टाइप किया जाना चाहिए) निर्दिष्ट करता है।

  • <modifier> या <modifier1> + <modifier2> + ...: कुंजी दबाए जाने पर व्यवहार (वर्ण जिसे टाइप किया जाना चाहिए) निर्दिष्ट करता है और सभी निर्दिष्ट संशोधक सक्रिय होते हैं।

    उदाहरण के लिए, संशोधक गुण shift एक ऐसे व्यवहार को निर्दिष्ट करता है जो बाएँ शिफ्ट या दाएँ शिफ्ट संशोधक को दबाने पर लागू होता है।

    इसी प्रकार, संशोधक गुण rshift+ralt एक व्यवहार निर्दिष्ट करता है जो तब लागू होता है जब राइट शिफ्ट और राइट ALT संशोधक दोनों को एक साथ दबाया जाता है।

निम्नलिखित संशोधक संशोधक गुणों में पहचाने जाते हैं:

  • shift : तब लागू होता है जब लेफ्ट शिफ्ट या राइट शिफ्ट संशोधक दबाया जाता है।
  • lshift : तब लागू होता है जब LEFT SHIFT संशोधक दबाया जाता है।
  • rshift : राइट शिफ्ट संशोधक दबाने पर लागू होता है।
  • alt : तब लागू होता है जब बाएँ ALT या दाएँ ALT संशोधक को दबाया जाता है।
  • lalt : बाएँ ALT संशोधक को दबाने पर लागू होता है।
  • ralt : राइट एएलटी संशोधक दबाने पर लागू होता है।
  • ctrl : तब लागू होता है जब बायां नियंत्रण या दायां नियंत्रण संशोधक दबाया जाता है।
  • lctrl : यह तब लागू होता है जब बायां नियंत्रण संशोधक दबाया जाता है।
  • rctrl : राइट कंट्रोल संशोधक दबाने पर लागू होता है।
  • meta : तब लागू होता है जब बाएँ मेटा या दाएँ मेटा संशोधक को दबाया जाता है।
  • lmeta : बायां मेटा संशोधक दबाने पर लागू होता है।
  • rmeta : राइट मेटा संशोधक दबाने पर लागू होता है।
  • sym : यह तब लागू होता है जब SYMBOL संशोधक दबाया जाता है।
  • fn : फ़ंक्शन संशोधक दबाए जाने पर लागू होता है।
  • capslock : कैप्स लॉक संशोधक लॉक होने पर लागू होता है।
  • numlock : यह तब लागू होता है जब NUM LOCK संशोधक लॉक हो जाता है।
  • scrolllock : स्क्रॉल लॉक संशोधक लॉक होने पर लागू होता है।

संपत्तियों को सूचीबद्ध करने का क्रम महत्वपूर्ण है। किसी व्यवहार के लिए कुंजी मैप करते समय, सिस्टम सभी प्रासंगिक गुणों को क्रम में स्कैन करता है और अंतिम लागू व्यवहार लौटाता है जो उसे मिला।

नतीजतन, बाद में निर्दिष्ट गुण उन गुणों को ओवरराइड कर देते हैं जो किसी दिए गए कुंजी के लिए पहले निर्दिष्ट किए गए हैं।

व्यवहार

प्रत्येक संपत्ति एक व्यवहार को दर्शाती है। सबसे आम व्यवहार एक चरित्र टाइप करना है लेकिन अन्य भी हैं।

निम्नलिखित व्यवहार पहचाने जाते हैं:

  • none : कोई अक्षर टाइप न करें.

    जब कोई वर्ण निर्दिष्ट नहीं होता है तो यह व्यवहार डिफ़ॉल्ट होता है। कोई भी निर्दिष्ट करना वैकल्पिक none है लेकिन इससे स्पष्टता में सुधार होता है।

  • 'X' : निर्दिष्ट अक्षर अक्षरशः टाइप करें।

    यह व्यवहार निर्दिष्ट वर्ण को केंद्रित पाठ दृश्य में दर्ज करने का कारण बनता है। वर्ण शाब्दिक कोई भी ASCII वर्ण, या निम्नलिखित एस्केप अनुक्रमों में से एक हो सकता है:

    • '\\' : बैकस्लैश वर्ण टाइप करें।
    • '\n' : एक नया लाइन कैरेक्टर टाइप करें (ENTER/RETURN के लिए इसका उपयोग करें)।
    • '\t' : एक TAB वर्ण टाइप करें.
    • '\'' : एक एपॉस्ट्रॉफ़ी वर्ण टाइप करें।
    • '\"' : एक उद्धरण वर्ण टाइप करें.
    • '\uXXXX' : यूनिकोड वर्ण टाइप करें जिसका कोड बिंदु XXXX द्वारा हेक्स में दिया गया है।
  • fallback <एंड्रॉइड कुंजी कोड नाम>: यदि कुंजी को एप्लिकेशन द्वारा नियंत्रित नहीं किया जाता है तो एक डिफ़ॉल्ट क्रिया निष्पादित करें।

    यह व्यवहार सिस्टम को एक अलग कुंजी प्रेस का अनुकरण करने का कारण बनता है जब कोई एप्लिकेशन निर्दिष्ट कुंजी को मूल रूप से संभाल नहीं पाता है। इसका उपयोग नई कुंजियों के लिए डिफ़ॉल्ट व्यवहार का समर्थन करने के लिए किया जाता है, जिन्हें सभी एप्लिकेशन संभालना नहीं जानते हैं, जैसे कि ESCAPE या संख्यात्मक कीपैड कुंजियाँ (जब numlock दबाया नहीं जाता है)।

    जब फ़ॉलबैक व्यवहार निष्पादित किया जाता है, तो एप्लिकेशन को दो कुंजी प्रेस प्राप्त होंगी: एक मूल कुंजी के लिए और दूसरी फ़ॉलबैक कुंजी के लिए जिसे चुना गया था। यदि एप्लिकेशन कुंजी अप के दौरान मूल कुंजी को संभालता है, तो फ़ॉलबैक कुंजी ईवेंट रद्द कर दिया जाएगा ( KeyEvent.isCanceled true लौटाएगा)।

सिस्टम विशेष कार्य करने के लिए दो यूनिकोड वर्ण आरक्षित करता है:

  • '\uef00' : जब यह व्यवहार किया जाता है, तो पाठ दृश्य कर्सर से पहले के चार वर्णों का उपभोग करता है और हटा देता है, उन्हें हेक्स अंकों के रूप में व्याख्या करता है, और संबंधित यूनिकोड कोड बिंदु सम्मिलित करता है।

  • '\uef01' : जब यह व्यवहार किया जाता है, तो पाठ दृश्य एक वर्ण पिकर संवाद प्रदर्शित करता है जिसमें विविध प्रतीक होते हैं।

सिस्टम निम्नलिखित यूनिकोड वर्णों को विशेषक मृत कुंजी वर्णों के संयोजन के रूप में पहचानता है:

  • '\u0300' : गंभीर उच्चारण.
  • '\u0301' : तीव्र उच्चारण.
  • '\u0302' : सर्कम्फ्लेक्स उच्चारण।
  • '\u0303' : टिल्डे उच्चारण।
  • '\u0308' : उमलौट उच्चारण।

जब एक मृत कुंजी के बाद दूसरा अक्षर टाइप किया जाता है, तो मृत कुंजी और निम्नलिखित अक्षर बन जाते हैं। उदाहरण के लिए, जब उपयोगकर्ता 'ए' अक्षर के बाद गंभीर उच्चारण मृत कुंजी टाइप करता है, तो परिणाम 'ए' होता है।

डेड की हैंडलिंग के बारे में अधिक जानकारी के लिए KeyCharacterMap.getDeadChar देखें।

टिप्पणियाँ

टिप्पणी पंक्तियाँ '#' से शुरू होती हैं और पंक्ति के अंत तक जारी रहती हैं। इस कदर:

# A comment!

ख़ाली रेखाओं को नज़रअंदाज कर दिया जाता है.

मुख्य संयोजनों को व्यवहार में कैसे मैप किया जाता है

जब उपयोगकर्ता एक कुंजी दबाता है, तो सिस्टम उस कुंजी प्रेस और वर्तमान में दबाए गए संशोधक के संयोजन से जुड़े व्यवहार को देखता है।

शिफ्ट + ए

मान लीजिए कि उपयोगकर्ता ने A और SHIFT को एक साथ दबाया। सिस्टम सबसे पहले KEYCODE_A से जुड़े गुणों और व्यवहारों के सेट का पता लगाता है।

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

सिस्टम गुणों को पहले से आखिरी और बाएं से दाएं स्कैन करता है, label और number गुणों को नजरअंदाज करता है, जो विशेष हैं।

सामने आई पहली संपत्ति base है। base गुण हमेशा एक कुंजी पर लागू होता है, चाहे कोई भी संशोधक दबाया गया हो। यह अनिवार्य रूप से कुंजी के लिए डिफ़ॉल्ट व्यवहार निर्दिष्ट करता है जब तक कि इसे निम्नलिखित गुणों द्वारा ओवरराइड नहीं किया जाता है। चूँकि base गुण इस कुंजी प्रेस पर लागू होता है, सिस्टम इस तथ्य पर ध्यान देता है कि इसका व्यवहार 'a' है (वर्ण a टाइप करें)।

सिस्टम बाद की संपत्तियों को स्कैन करना जारी रखता है, यदि उनमें से कोई भी base से अधिक विशिष्ट है और इसे ओवरराइड करता है। यह shift का सामना करता है जो कुंजी प्रेस SHIFT + A पर भी लागू होता है। इसलिए सिस्टम base प्रॉपर्टी के व्यवहार को अनदेखा करने का निर्णय लेता है और shift प्रॉपर्टी से जुड़े व्यवहार को चुनता है, जो 'A' है (वर्ण A टाइप करें)।

इसके बाद यह तालिका को स्कैन करना जारी रखता है, हालांकि इस कुंजी प्रेस पर कोई अन्य गुण लागू नहीं होता है (CAPS LOCK लॉक नहीं होता है, न ही नियंत्रण कुंजी दबाई जाती है, न ही ALT कुंजी दबाई जाती है और न ही मेटा कुंजी दबाई जाती है)।

तो कुंजी संयोजन SHIFT + A के लिए परिणामी व्यवहार 'A' है।

नियंत्रण + ए

अब विचार करें कि यदि उपयोगकर्ता A और CONTROL को एक साथ दबाए तो क्या होगा।

पहले की तरह, सिस्टम गुणों की तालिका को स्कैन करेगा। यह देखेगा कि base संपत्ति लागू हो गई है, लेकिन तब तक स्कैनिंग जारी रहेगी जब तक कि यह अंततः control संपत्ति तक नहीं पहुंच जाती। जैसा कि होता है, control गुण base के बाद दिखाई देता है इसलिए इसका व्यवहार base व्यवहार से आगे निकल जाता है।

तो कुंजी संयोजन CONTROL + A के लिए परिणामी व्यवहार none है।

पलायन

अब मान लीजिए कि उपयोगकर्ता ने ESCAPE दबाया।

key ESCAPE {
    base:                               fallback BACK
    alt, meta:                          fallback HOME
    ctrl:                               fallback MENU
}

इस बार सिस्टम को fallback BACK व्यवहार, फ़ॉलबैक व्यवहार प्राप्त होता है। चूँकि कोई वर्ण शाब्दिक प्रकट नहीं होता, कोई वर्ण टाइप नहीं किया जाएगा।

कुंजी को संसाधित करते समय, सिस्टम सबसे पहले एप्लिकेशन को KEYCODE_ESCAPE वितरित करेगा। यदि एप्लिकेशन इसे संभाल नहीं पाता है, तो सिस्टम फिर से प्रयास करेगा लेकिन इस बार यह फ़ॉलबैक व्यवहार के अनुरोध के अनुसार एप्लिकेशन को KEYCODE_BACK वितरित करेगा।

इसलिए जो एप्लिकेशन KEYCODE_ESCAPE पहचानते हैं और उनका समर्थन करते हैं, उनके पास इसे वैसे ही संभालने का अवसर होता है, लेकिन अन्य एप्लिकेशन जो ऐसा नहीं करते हैं, वे कुंजी को KEYCODE_BACK के रूप में मानने की फ़ॉलबैक कार्रवाई कर सकते हैं।

NUMPAD_0 NUM LOCK के साथ या उसके बिना

संख्यात्मक कीपैड कुंजियों की बहुत भिन्न व्याख्याएं होती हैं, जो इस बात पर निर्भर करती हैं कि NUM LOCK कुंजी लॉक है या नहीं।

निम्नलिखित कुंजी घोषणा यह सुनिश्चित करती है कि NUM LOCK दबाने पर KEYCODE_NUMPAD_0 0 टाइप करता है। जब NUM LOCK नहीं दबाया जाता है, तो कुंजी सामान्य रूप से एप्लिकेशन को वितरित की जाती है, और यदि इसे नियंत्रित नहीं किया जाता है, तो इसके बजाय फ़ॉलबैक कुंजी KEYCODE_INSERT वितरित की जाती है।

key NUMPAD_0 {
    label, number:                      '0'
    base:                               fallback INSERT
    numlock:                            '0'
    ctrl, alt, meta:                    none
}

जैसा कि हम देख सकते हैं, फ़ॉलबैक कुंजी घोषणाएँ पुराने अनुप्रयोगों के साथ संगतता में काफी सुधार करती हैं जो पूर्ण पीसी स्टाइल कीबोर्ड पर मौजूद सभी कुंजियों को पहचानती या सीधे समर्थन नहीं करती हैं।

उदाहरण

पूर्ण कीबोर्ड

# This is an example of part of a key character map file for a full keyboard
# include a few fallback behaviors for special keys that few applications
# handle themselves.

type FULL

key C {
    label:                              'C'
    base:                               'c'
    shift, capslock:                    'C'
    alt:                                '\u00e7'
    shift+alt:                          '\u00c7'
    ctrl, meta:                         none
}

key SPACE {
    label:                              ' '
    base:                               ' '
    ctrl:                               none
    alt, meta:                          fallback SEARCH
}

key NUMPAD_9 {
    label, number:                      '9'
    base:                               fallback PAGE_UP
    numlock:                            '9'
    ctrl, alt, meta:                    none
}

अल्फ़ान्यूमेरिक कीबोर्ड

# This is an example of part of a key character map file for an alphanumeric
# thumb keyboard.  Some keys are combined, such as `A` and `2`.  Here we
# specify `number` labels to tell the system what to do when the user is
# typing a number into a dial pad.
#
# Also note the special character '\uef01' mapped to ALT+SPACE.
# Pressing this combination of keys invokes an on-screen character picker.

type ALPHA

key A {
    label:                              'A'
    number:                             '2'
    base:                               'a'
    shift, capslock:                    'A'
    alt:                                '#'
    shift+alt, capslock+alt:            none
}

key SPACE {
    label:                              ' '
    number:                             ' '
    base:                               ' '
    shift:                              ' '
    alt:                                '\uef01'
    shift+alt:                          '\uef01'
}

गेम पैड

# This is an example of part of a key character map file for a game pad.
# It defines fallback actions that enable the user to navigate the user interface
# by pressing buttons.

type SPECIAL_FUNCTION

key BUTTON_A {
    base:                               fallback BACK
}

key BUTTON_X {
    base:                               fallback DPAD_CENTER
}

key BUTTON_START {
    base:                               fallback HOME
}

key BUTTON_SELECT {
    base:                               fallback MENU
}

अनुकूलता नोट

एंड्रॉइड हनीकॉम्ब 3.0 से पहले, एंड्रॉइड कुंजी चरित्र मानचित्र को एक बहुत अलग सिंटैक्स का उपयोग करके निर्दिष्ट किया गया था और निर्माण समय पर एक बाइनरी फ़ाइल प्रारूप ( .kcm.bin ) में संकलित किया गया था।

हालाँकि नया प्रारूप समान एक्सटेंशन .kcm का उपयोग करता है, वाक्यविन्यास काफी अलग है (और बहुत अधिक शक्तिशाली)।

एंड्रॉइड हनीकॉम्ब 3.0 के अनुसार, सभी एंड्रॉइड कुंजी चरित्र मानचित्र फ़ाइलों को इस दस्तावेज़ में वर्णित नए सिंटैक्स और सादे पाठ फ़ाइल प्रारूप का उपयोग करना होगा। पुराना सिंटैक्स समर्थित नहीं है और पुरानी .kcm.bin फ़ाइलें सिस्टम द्वारा मान्यता प्राप्त नहीं हैं।

भाषा नोट

एंड्रॉइड वर्तमान में बहुभाषी कीबोर्ड का समर्थन नहीं करता है। इसके अलावा, अंतर्निहित सामान्य कुंजी चरित्र मानचित्र एक अमेरिकी अंग्रेजी कीबोर्ड लेआउट मानता है।

यदि ओईएम को अन्य भाषाओं के लिए डिज़ाइन किया गया है तो उन्हें अपने कीबोर्ड के लिए कस्टम कुंजी चरित्र मानचित्र प्रदान करने के लिए प्रोत्साहित किया जाता है।

एंड्रॉइड के भविष्य के संस्करण बहुभाषी कीबोर्ड या उपयोगकर्ता-चयन योग्य कीबोर्ड लेआउट के लिए बेहतर समर्थन प्रदान कर सकते हैं।

मान्यकरण

वैलिडेट कीमैप्स टूल का उपयोग करके अपनी मुख्य चरित्र मानचित्र फ़ाइलों को सत्यापित करना सुनिश्चित करें।