की-कैरेक्टर मैप फ़ाइलें (.kcm
फ़ाइलें), Android की कोड के कॉम्बिनेशन को मॉडिफ़ायर के साथ यूनिकोड वर्णों में मैप करने के लिए ज़िम्मेदार होती हैं.
डिवाइस के हिसाब से बने बटन लेआउट की फ़ाइलें, डिवाइस में पहले से मौजूद सभी इनपुट डिवाइसों के लिए ज़रूरी हैं. ऐसा सिर्फ़ इसलिए किया जाता है, ताकि सिस्टम को यह पता चल सके कि डिवाइस सिर्फ़ किसी खास काम के लिए है, न कि वह एक पूरा कीबोर्ड है.
एक्सटर्नल कीबोर्ड के लिए, डिवाइस के हिसाब से बने बटन लेआउट की फ़ाइलें ज़रूरी नहीं हैं. अक्सर, इनकी ज़रूरत भी नहीं होती. यह सिस्टम, एक सामान्य की-कैरेक्टर मैप उपलब्ध कराता है, जो कई बाहरी कीबोर्ड के साथ काम करता है.
अगर डिवाइस के हिसाब से बटन का कोई लेआउट उपलब्ध नहीं है, तो सिस्टम डिफ़ॉल्ट लेआउट चुन लेगा.
जगह की जानकारी
मुख्य वर्ण मैप फ़ाइलें, यूएसबी वेंडर, प्रॉडक्ट (और वैकल्पिक रूप से वर्शन) के आईडी या इनपुट डिवाइस के नाम से मिलती हैं.
नीचे दिए गए पाथ को क्रम से देखा जाता है.
/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
देखें). यह Android Honeycomb 3.0 से शुरू होने वाले सभी Android डिवाइसों पर मौजूद है. वर्चुअल कीबोर्ड डिवाइस का मकसद, पहले से मौजूद ऐसा इनपुट डिवाइस उपलब्ध कराना है जिसका इस्तेमाल, IME या टेस्ट इंस्ट्रूमेंटेशन की मदद से ऐप्लिकेशन में कीस्ट्रोक डालने के लिए किया जा सकता है. ऐसा उन डिवाइसों के लिए भी किया जा सकता है जिनमें पहले से कीबोर्ड मौजूद नहीं है.
वर्चुअल कीबोर्ड में QWERTY लेआउट होता है, जो सभी डिवाइसों पर एक जैसा होता है. इससे ऐप्लिकेशन, वर्चुअल कीबोर्ड डिवाइस का इस्तेमाल करके कीस्ट्रोक डाल सकते हैं और उन्हें हमेशा एक जैसे नतीजे मिलते हैं.
वर्चुअल बटन के कैरेक्टर मैप में बदलाव न करें!
वाक्य-विन्यास
की-कैरेक्टर मैप फ़ाइल एक साधारण टेक्स्ट फ़ाइल होती है. इसमें कीबोर्ड टाइप की जानकारी और की के एलान का एक सेट होता है.
कीबोर्ड टाइप का एलान
कीबोर्ड टाइप के एलान से, कीबोर्ड के पूरे व्यवहार के बारे में पता चलता है. कैरेक्टर मैप फ़ाइल में, कीबोर्ड टाइप का एलान होना चाहिए. इसे साफ़ तौर पर देखने के लिए, अक्सर इसे फ़ाइल में सबसे ऊपर रखा जाता है.
type FULL
इन तरह के कीबोर्ड का इस्तेमाल किया जा सकता है:
-
NUMERIC
: अंकों वाला (12 बटन वाला) कीबोर्ड.अंकों वाले कीबोर्ड पर, एक से ज़्यादा बार टैप करके टेक्स्ट डाला जा सकता है. अपनी पसंद का अक्षर या चिह्न जनरेट करने के लिए, किसी बटन पर कई बार टैप करना पड़ सकता है.
आम तौर पर, इस तरह के कीबोर्ड को अंगूठे से टाइप करने के लिए डिज़ाइन किया जाता है.
KeyCharacterMap.NUMERIC
के लिए इस्तेमाल किया जाता है. -
PREDICTIVE
: ऐसा कीबोर्ड जिसमें सभी अक्षर हों, लेकिन हर बटन पर एक से ज़्यादा अक्षर हों.आम तौर पर, इस तरह के कीबोर्ड को अंगूठे से टाइप करने के लिए डिज़ाइन किया जाता है.
KeyCharacterMap.PREDICTIVE
के लिए इस्तेमाल किया जाता है. -
ALPHA
: सभी अक्षरों और शायद कुछ संख्याओं वाला कीबोर्ड.अक्षर वाले कीबोर्ड से सीधे टेक्स्ट डाला जा सकता है. हालांकि, इसमें छोटा फ़ॉर्म फ़ैक्टर वाला छोटा लेआउट हो सकता है.
FULL
कीबोर्ड के उलट, कुछ चिह्नों को सिर्फ़ ऑन-स्क्रीन वर्ण चुनने वाले टूल का इस्तेमाल करके ऐक्सेस किया जा सकता है. इसके अलावा, टाइप करने की स्पीड और सटीक जानकारी देने के लिए, फ़्रेमवर्क में अंग्रेज़ी के कीबोर्ड के लिए खास सुविधाएं दी गई हैं. जैसे, अपने-आप कैपिटल लेटर में बदलना और SHIFT और ALT बटन को टॉगल / लॉक करना.आम तौर पर, इस तरह के कीबोर्ड को अंगूठे से टाइप करने के लिए डिज़ाइन किया जाता है.
-
FULL
: पीसी स्टाइल वाला पूरा कीबोर्ड.फ़ुल कीबोर्ड, पीसी कीबोर्ड की तरह काम करता है. सभी सिंबल को सीधे तौर पर कीबोर्ड पर बटन दबाकर ऐक्सेस किया जाता है. इसके लिए, ऑन-स्क्रीन सहायता या सुविधाओं, जैसे कि अपने-आप कैपिटल लेटर होने की सुविधा का इस्तेमाल नहीं किया जाता.
आम तौर पर, इस तरह के कीबोर्ड को दोनों हाथों से टाइप करने के लिए डिज़ाइन किया जाता है.
-
SPECIAL_FUNCTION
: ऐसा कीबोर्ड जिसका इस्तेमाल सिर्फ़ टाइप करने के बजाय, सिस्टम कंट्रोल फ़ंक्शन करने के लिए किया जाता है.किसी खास फ़ंक्शन वाले कीबोर्ड में सिर्फ़ ऐसी बटन होती हैं जिनसे कोई वर्ण नहीं लिखा जा सकता. जैसे, होम और पावर बटन. इनका इस्तेमाल टाइप करने के लिए नहीं किया जाता.
Generic.kcm
और Virtual.kcm
बटन के वर्ण मैप, दोनों FULL
कीबोर्ड हैं.
मुख्य एलान
हर कीवर्ड एलान में, कीवर्ड key
के बाद Android की कोड का नाम, ओपन कर्ली ब्रैकेट, प्रॉपर्टी और व्यवहार का एक सेट, और क्लोज़ कर्ली ब्रैकेट होता है.
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
से उस व्यवहार के बारे में पता चलता है जो तब लागू होता है, जब LEFT SHIFT या RIGHT SHIFT मॉडिफ़ायर को दबाया जाता है.इसी तरह, मॉडिफ़ायर प्रॉपर्टी
rshift+ralt
से उस व्यवहार के बारे में पता चलता है जो तब लागू होता है, जब RIGHT SHIFT और RIGHT ALT, दोनों मॉडिफ़ायर को एक साथ दबाया जाता है.
मॉडिफ़ायर प्रॉपर्टी में, इन मॉडिफ़ायर की पहचान की जाती है:
shift
: यह तब लागू होता है, जब लेफ़्ट SHIFT या राइट SHIFT मॉडिफ़ायर को दबाया जाता है.lshift
: यह तब लागू होता है, जब LEFT SHIFT मॉडिफ़ायर को दबाया जाता है.rshift
: यह तब लागू होता है, जब राइट SHIFT बटन को दबाया जाता है.alt
: यह तब लागू होता है, जब लेफ़्ट ALT या राइट ALT बटन दबाया जाता है.lalt
: यह तब लागू होता है, जब LEFT ALT मॉडिफ़ायर को दबाया जाता है.ralt
: यह विकल्प तब लागू होता है, जब RIGHT ALT बटन को दबाया जाता है.ctrl
: यह तब लागू होता है, जब लेफ़्ट कंट्रोल या राइट कंट्रोल बटन को दबाया जाता है.lctrl
: यह तब लागू होता है, जब LEFT CONTROL मॉडिफ़ायर को दबाया जाता है.rctrl
: यह तब लागू होता है, जब RIGHT CONTROL मॉडिफ़ायर को दबाया जाता है.meta
: यह तब लागू होता है, जब LEFT META या RIGHT META मॉडिफ़ायर को दबाया जाता है.lmeta
: यह तब लागू होता है, जब LEFT META मॉडिफ़ायर को दबाया जाता है.rmeta
: यह तब लागू होता है, जब RIGHT META मॉडिफ़ायर को दबाया जाता है.sym
: यह तब लागू होता है, जब SYMBOL मॉडिफ़ायर को दबाया जाता है.fn
: FUNCTION मॉडिफ़ायर दबाने पर लागू होता है.capslock
: यह तब लागू होता है, जब CAPS LOCK मॉडिफ़ायर लॉक हो.numlock
: यह तब लागू होता है, जब NUM LOCK मॉडिफ़ायर लॉक हो.scrolllock
: यह तब लागू होता है, जब SCROLL LOCK मॉडिफ़ायर लॉक हो.
प्रॉपर्टी को जिस क्रम में लिस्ट किया गया है वह अहम है. किसी कीवर्ड को किसी व्यवहार से मैप करते समय, सिस्टम सभी काम की प्रॉपर्टी को क्रम से स्कैन करता है और आखिरी लागू व्यवहार दिखाता है.
इसलिए, बाद में बताई गई प्रॉपर्टी, किसी की के लिए पहले बताई गई प्रॉपर्टी को बदल देती हैं.
बटन दबाने पर होने वाली कार्रवाई
हर प्रॉपर्टी, किसी व्यवहार से मैप होती है. आम तौर पर, कोई वर्ण टाइप करने पर यह गतिविधि शुरू होती है. हालांकि, इसके अलावा भी अन्य गतिविधियां हो सकती हैं.
इन गतिविधियों को पहचाना जाता है:
-
none
: कोई वर्ण न टाइप करें.कोई वर्ण न बताने पर, यह डिफ़ॉल्ट तौर पर लागू होता है.
none
की वैल्यू देना ज़रूरी नहीं है, लेकिन इससे प्रॉडक्ट की जानकारी साफ़ तौर पर दिखती है. -
'X'
: तय किया गया वर्ण लिटरल टाइप करें.इस वजह से, फ़ोकस किए गए टेक्स्ट व्यू में, चुना गया वर्ण डाल दिया जाता है. वर्ण लिटरल, ASCII वर्ण या इनमें से कोई एक एस्केप सीक्वेंस हो सकता है:
'\\'
: बैकस्लैश कैरेक्टर टाइप करें.'\n'
: नई लाइन का वर्ण टाइप करें (ENTER / RETURN के लिए इसका इस्तेमाल करें).'\t'
: Tab दबाएं.'\''
: ऐपोस्ट्रॉफ़ वर्ण टाइप करें.'\"'
: कोटेशन का वर्ण टाइप करें.'\uXXXX'
: वह यूनिकोड वर्ण टाइप करें जिसका कोड पॉइंट XXXX के तौर पर हेक्स में दिया गया है.
-
fallback
<Android key code name>: अगर ऐप्लिकेशन, बटन को मैनेज नहीं करता है, तो डिफ़ॉल्ट ऐक्शन करें.इस वजह से, जब कोई ऐप्लिकेशन तय की गई कुंजी को नेटिव तौर पर मैनेज नहीं करता है, तो सिस्टम किसी दूसरी कुंजी को दबाने का अनुकरण करता है. इसका इस्तेमाल, उन नई बटनों के लिए डिफ़ॉल्ट व्यवहार को लागू करने के लिए किया जाता है जिन्हें सभी ऐप्लिकेशन हैंडल नहीं कर सकते. जैसे, ESCAPE या अंकों वाले कीपैड बटन (जब numlock बटन दबाया न गया हो).
फ़ॉलबैक व्यवहार लागू होने पर, ऐप्लिकेशन को दो बटन दबाए जाने का पता चलेगा: एक ओरिजनल बटन के लिए और दूसरा चुने गए फ़ॉलबैक बटन के लिए. अगर ऐप्लिकेशन, बटन को छोड़ने के दौरान ओरिजनल बटन को मैनेज करता है, तो फ़ॉलबैक बटन के इवेंट को रद्द कर दिया जाएगा (
KeyEvent.isCanceled
,true
दिखाएगा).
सिस्टम, खास फ़ंक्शन करने के लिए दो यूनिकोड वर्ण सुरक्षित रखता है:
-
'\uef00'
: ऐसा करने पर, टेक्स्ट व्यू, कर्सर से पहले के चार वर्णों को इस्तेमाल करता है और हटा देता है. साथ ही, उन्हें हेक्साडेसिमल अंकों के तौर पर समझता है और उनसे जुड़ा यूनिकोड कोड पॉइंट डालता है. -
'\uef01'
: ऐसा करने पर, टेक्स्ट व्यू में एक वर्ण पिकर डायलॉग दिखता है. इसमें अलग-अलग तरह के सिंबल होते हैं.
सिस्टम, इन यूनिकोड वर्णों को डायाक्रिटिकल डेड बटन वर्णों के तौर पर पहचानता है:
'\u0300'
: ग्रेव ऐक्सेंट.'\u0301'
: ऐक्यूट ऐक्सेंट.'\u0302'
: सर्कमफ़्लेक्स एक्सेंट.'\u0303'
: टिल्ड ऐक्सेंट.'\u0308'
: ऐक्सेंट के लिए Umlaut का इस्तेमाल.
जब किसी डेड बटन के बाद कोई दूसरा वर्ण टाइप किया जाता है, तो डेड बटन और उसके बाद के वर्ण टाइप हो जाते हैं. उदाहरण के लिए, जब उपयोगकर्ता ग्रेव ऐक्सेंट डेड बटन के बाद 'a' लिखता है, तो नतीजा 'à' होता है.
डेड बटन को मैनेज करने के बारे में ज़्यादा जानकारी के लिए, KeyCharacterMap.getDeadChar
देखें.
टिप्पणियां
टिप्पणी वाली लाइनें '#' से शुरू होती हैं और लाइन के आखिर तक चलती हैं. जैसे:
# A comment!
खाली लाइनों को अनदेखा किया जाता है.
बटन के कॉम्बिनेशन को व्यवहार के हिसाब से कैसे मैप किया जाता है
जब उपयोगकर्ता किसी बटन को दबाता है, तो सिस्टम उस बटन और फ़िलहाल दबाए गए मॉडिफ़ायर के कॉम्बिनेशन से जुड़ा व्यवहार देखता है.
Shift + A
मान लीजिए कि उपयोगकर्ता ने 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 लॉक नहीं होता, Control बटन नहीं दबाया जाता, ALT बटन नहीं दबाया जाता, और मेटा बटन नहीं दबाया जाता.
इसलिए, SHIFT + A बटन के कॉम्बिनेशन से 'A'
दिखेगा.
CONTROL + A
अब देखें कि अगर उपयोगकर्ता ने A और CONTROL बटन को एक साथ दबाया, तो क्या होगा.
पहले की तरह, सिस्टम प्रॉपर्टी की टेबल को स्कैन करेगा. यह पता चलेगा कि base
प्रॉपर्टी लागू है, लेकिन यह तब तक स्कैन करना जारी रखेगा, जब तक कि वह control
प्रॉपर्टी तक न पहुंच जाए. ऐसा होता है, क्योंकि control
प्रॉपर्टी base
के बाद दिखती है. इसलिए, इसका व्यवहार base
के व्यवहार को बदल देता है.
इसलिए, बटन के कॉम्बिनेशन CONTROL + A का नतीजा none
है.
ESC बटन
अब मान लें कि उपयोगकर्ता ने ESCAPE दबाया.
key ESCAPE { base: fallback BACK alt, meta: fallback HOME ctrl: fallback MENU }
इस बार सिस्टम को व्यवहार fallback BACK
मिलता है, जो फ़ॉलबैक व्यवहार है.
कोई वर्ण लिटरल न दिखने की वजह से, कोई वर्ण टाइप नहीं किया जाएगा.
पासकोड प्रोसेस करते समय, सिस्टम सबसे पहले ऐप्लिकेशन को KEYCODE_ESCAPE
डिलीवर करेगा. अगर ऐप्लिकेशन इसे मैनेज नहीं करता है, तो सिस्टम फिर से कोशिश करेगा. हालांकि, इस बार यह ऐप्लिकेशन को KEYCODE_BACK
डिलीवर करेगा, जैसा कि फ़ॉलबैक व्यवहार के लिए अनुरोध किया गया है.
इसलिए, KEYCODE_ESCAPE
को पहचानने और इस्तेमाल करने वाले ऐप्लिकेशन के पास, इसे वैसे ही मैनेज करने का विकल्प होता है. हालांकि, ऐसे अन्य ऐप्लिकेशन के पास, फ़ॉलबैक ऐक्शन करने का विकल्प होता है. इसमें, पासकोड को KEYCODE_BACK
के तौर पर इस्तेमाल किया जाता है.
NUM LOCK के साथ या उसके बिना NUMPAD_0
न्यूमेरिक कीपैड की अलग-अलग तरह से काम करती हैं. यह इस बात पर निर्भर करता है कि 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 }
साथ काम करने से जुड़ा नोट
Android Honeycomb 3.0 से पहले, Android की मुख्य वर्ण मैप को एक अलग सिंटैक्स का इस्तेमाल करके तय किया गया था. साथ ही, बिल्ड के समय इसे बाइनरी फ़ाइल फ़ॉर्मैट (.kcm.bin
) में कंपाइल किया गया था.
हालांकि, नए फ़ॉर्मैट में उसी एक्सटेंशन .kcm
का इस्तेमाल किया जाता है, लेकिन सिंटैक्स काफ़ी अलग है और ज़्यादा बेहतर है.
Android Honeycomb 3.0 के बाद, Android की सभी मुख्य कैरेक्टर मैप फ़ाइलों को, इस दस्तावेज़ में बताए गए नए सिंटैक्स और प्लैन टेक्स्ट फ़ाइल फ़ॉर्मैट का इस्तेमाल करना होगा.
पुराना सिंटैक्स काम नहीं करता और सिस्टम, पुरानी .kcm.bin
फ़ाइलों को पहचानता नहीं है.
भाषा से जुड़ा नोट
फ़िलहाल, Android पर कई भाषाओं वाले कीबोर्ड काम नहीं करते. इसके अलावा, डिफ़ॉल्ट तौर पर मौजूद सामान्य बटन के वर्ण का मैप, अमेरिकन इंग्लिश कीबोर्ड लेआउट के हिसाब से होता है.
अगर OEM ने अपने कीबोर्ड को दूसरी भाषाओं के लिए डिज़ाइन किया है, तो उन्हें अपने कीबोर्ड के लिए पसंद के मुताबिक बटन के वर्णों के मैप उपलब्ध कराने चाहिए.
Android के आने वाले वर्शन में, कई भाषाओं वाले कीबोर्ड या उपयोगकर्ता के चुने गए कीबोर्ड लेआउट के लिए बेहतर सहायता मिल सकती है.
पुष्टि करें
कीमैप की पुष्टि करें टूल का इस्तेमाल करके, अपनी मुख्य कैरेक्टर मैप फ़ाइलों की पुष्टि करना न भूलें.