ไฟล์การแมปอักขระของแป้นพิมพ์ (ไฟล์ .kcm) มีหน้าที่รับผิดชอบในการแมปชุดค่าผสมของรหัสแป้น Android กับตัวหลีกไปยังอักขระ Unicode
ต้องระบุไฟล์เลย์เอาต์แป้นเฉพาะอุปกรณ์สำหรับอุปกรณ์อินพุตภายใน (ในตัว) ทั้งหมดที่มีแป้น เพื่อบอกให้ระบบทราบว่าอุปกรณ์มีไว้เพื่อวัตถุประสงค์พิเศษเท่านั้น (ไม่ใช่แป้นพิมพ์แบบเต็ม)
ไฟล์เลย์เอาต์แป้นพิมพ์เฉพาะอุปกรณ์เป็นไฟล์ที่ไม่บังคับสำหรับแป้นพิมพ์ภายนอก และมักไม่จำเป็นเลย ระบบมีแผนที่อักขระแป้นพิมพ์ทั่วไปที่เหมาะสำหรับแป้นพิมพ์ภายนอกหลายรุ่น
หากไม่มีไฟล์เลย์เอาต์แป้นเฉพาะอุปกรณ์ ระบบจะเลือกค่าเริ่มต้นแทน
ตำแหน่ง
ไฟล์การแมปอักขระของแป้นพิมพ์จะอยู่ที่รหัสผู้ให้บริการ 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) ซึ่งจะอยู่ในอุปกรณ์ Android ทั้งหมดตั้งแต่ Android Honeycomb 3.0 ขึ้นไป วัตถุประสงค์ของอุปกรณ์แป้นพิมพ์เสมือนคือการเป็นอุปกรณ์อินพุตในตัวที่รู้จักซึ่งสามารถใช้เพื่อแทรกการกดแป้นพิมพ์ลงในแอปพลิเคชันโดย IME หรือเครื่องมือทดสอบได้ แม้กระทั่งสำหรับอุปกรณ์ที่ไม่มีแป้นพิมพ์ในตัว
ระบบจะถือว่าแป้นพิมพ์เสมือนมีเลย์เอาต์ QWERTY แบบเต็มเหมือนกันในทุกอุปกรณ์ ซึ่งช่วยให้แอปพลิเคชันแทรกการกดแป้นพิมพ์โดยใช้อุปกรณ์แป้นพิมพ์เสมือนและได้ผลลัพธ์เหมือนกันเสมอ
อย่าแก้ไขแผนที่อักขระของแป้นพิมพ์เสมือน
วากยสัมพันธ์
ไฟล์แผนที่อักขระของแป้นพิมพ์คือไฟล์ข้อความธรรมดาที่ประกอบด้วยการประกาศประเภทแป้นพิมพ์และชุดการประกาศคีย์
การประกาศประเภทแป้นพิมพ์
การประกาศประเภทแป้นพิมพ์จะอธิบายลักษณะการทำงานโดยรวมของแป้นพิมพ์ ไฟล์แผนที่อักขระต้องมีประกาศประเภทแป้นพิมพ์ มักจะวางไว้ที่ด้านบนของไฟล์เพื่อความชัดเจน
type FULL
แป้นพิมพ์ต่อไปนี้จะได้รับการจดจำ
-
NUMERIC: แป้นพิมพ์ตัวเลข (12 ปุ่ม)แป้นพิมพ์ตัวเลขรองรับการป้อนข้อความโดยใช้วิธีการแตะหลายครั้ง คุณอาจต้องแตะแป้นหลายครั้งเพื่อสร้างตัวอักษรหรือสัญลักษณ์ที่ต้องการ
โดยทั่วไปแล้ว แป้นพิมพ์ประเภทนี้ออกแบบมาสำหรับการพิมพ์ด้วยนิ้วหัวแม่มือ
สอดคล้องกับ
KeyCharacterMap.NUMERIC -
PREDICTIVE: แป้นพิมพ์ที่มีตัวอักษรครบทุกตัว แต่มีมากกว่า 1 ตัวอักษรต่อแป้นโดยทั่วไปแล้ว แป้นพิมพ์ประเภทนี้ออกแบบมาสำหรับการพิมพ์ด้วยนิ้วหัวแม่มือ
สอดคล้องกับ
KeyCharacterMap.PREDICTIVE -
ALPHA: แป้นพิมพ์ที่มีตัวอักษรทั้งหมดและอาจมีตัวเลขบางส่วนแป้นพิมพ์ตัวอักษรรองรับการป้อนข้อความโดยตรง แต่อาจมีเลย์เอาต์ที่กะทัดรัดและมีขนาดกะเล็ก ซึ่งแตกต่างจากแป้นพิมพ์
FULLเนื่องจากสัญลักษณ์บางรายการอาจเข้าถึงได้โดยใช้เครื่องมือเลือกอักขระพิเศษบนหน้าจอเท่านั้น นอกจากนี้ เฟรมเวิร์กยังมีสิ่งอํานวยความสะดวกพิเศษสําหรับแป้นพิมพ์ตัวอักษร เช่น การใช้อักษรตัวพิมพ์ใหญ่โดยอัตโนมัติ และแป้น SHIFT และ ALT ที่เปิด/ปิด/ล็อกโดยทั่วไปแล้ว แป้นพิมพ์ประเภทนี้ออกแบบมาสำหรับการพิมพ์ด้วยนิ้วหัวแม่มือ
-
FULL: แป้นพิมพ์แบบ PC เต็มรูปแบบแป้นพิมพ์แบบเต็มจะทำงานเหมือนแป้นพิมพ์ของ PC เข้าถึงสัญลักษณ์ทั้งหมดได้โดยตรงด้วยการกดแป้นบนแป้นพิมพ์โดยไม่ต้องใช้การสนับสนุนหรือสิ่งอำนวยความสะดวกบนหน้าจอ เช่น การใช้อักษรตัวพิมพ์ใหญ่โดยอัตโนมัติ
โดยปกติแล้วแป้นพิมพ์ประเภทนี้ออกแบบมาสำหรับการพิมพ์ด้วยมือทั้ง 2 ข้าง
-
SPECIAL_FUNCTION: แป้นพิมพ์ที่ใช้เพื่อดำเนินการควบคุมระบบเท่านั้น ไม่ใช่สำหรับการพิมพ์แป้นพิมพ์ฟังก์ชันพิเศษประกอบด้วยแป้นที่ไม่พิมพ์เท่านั้น เช่น HOME และ POWER ที่ไม่ได้ใช้พิมพ์จริง
แผนที่อักขระของแป้น Generic.kcm และ Virtual.kcm เป็นแบบแป้นพิมพ์ FULL ทั้งคู่
การประกาศคีย์
การประกาศคีย์แต่ละรายการประกอบด้วยคีย์เวิร์ด key ตามด้วยชื่อโค้ดคีย์ Android, เครื่องหมายวงเล็บปีกกาเปิด, ชุดพร็อพเพอร์ตี้และลักษณะการทำงาน และเครื่องหมายวงเล็บปีกกาปิด
key A {
label: 'A'
base: 'a'
shift, capslock: 'A'
ctrl, alt, meta: none
}
คุณสมบัติ
พร็อพเพอร์ตี้คีย์แต่ละรายการจะสร้างการแมปจากคีย์ไปยังลักษณะการทำงาน หากต้องการให้ไฟล์การแมปอักขระหลักมีขนาดกะทัดรัดยิ่งขึ้น คุณสามารถแมปพร็อพเพอร์ตี้หลายรายการให้มีลักษณะการทำงานแบบเดียวกันได้โดยคั่นด้วยคอมมา
ในตัวอย่างข้างต้น พร็อพเพอร์ตี้ label ได้รับการกําหนดลักษณะการทํางาน 'A'
ในทํานองเดียวกัน ระบบจะกําหนดลักษณะการทํางาน none ให้กับพร็อพเพอร์ตี้ ctrl, alt และ meta ทั้งหมดพร้อมกัน
ระบบจะจดจำพร็อพเพอร์ตี้ต่อไปนี้
-
label: ระบุป้ายกำกับที่พิมพ์บนกุญแจจริงเมื่อประกอบด้วยอักขระเดียว นี่คือค่าที่แสดงโดยเมธอดKeyCharacterMap.getDisplayLabel -
number: ระบุลักษณะการทำงาน (อักขระที่ควรพิมพ์) เมื่อมุมมองข้อความตัวเลขได้รับโฟกัส เช่น เมื่อผู้ใช้พิมพ์หมายเลขโทรศัพท์แป้นพิมพ์แบบกะทัดรัดมักจะรวมสัญลักษณ์หลายรายการไว้ในแป้นเดียว เช่น แป้นเดียวกันอาจใช้พิมพ์
'1'และ'a'หรือ'#'และ'q'สำหรับคีย์เหล่านี้ คุณควรตั้งค่าพร็อพเพอร์ตี้numberเพื่อระบุสัญลักษณ์ที่ควรพิมพ์ในบริบทตัวเลข (หากมี)สัญลักษณ์ "ตัวเลข" ทั่วไปบางรายการคือตัวเลข
'0'ถึง'9','#','+','(',')',','และ'.' -
base: ระบุลักษณะการทำงาน (อักขระที่ควรพิมพ์) เมื่อไม่ได้กดตัวปรับแต่ง -
<modifier> หรือ <modifier1>
+<modifier2>+...: ระบุลักษณะการทำงาน (อักขระที่ควรพิมพ์) เมื่อกดแป้นและตัวควบคุมที่ระบุทั้งหมดทำงานอยู่ตัวอย่างเช่น พร็อพเพอร์ตี้ตัวแก้ไข
shiftจะระบุลักษณะการทำงานที่มีผลเมื่อกดตัวแก้ไข SHIFT ซ้ายหรือขวาในทำนองเดียวกัน พร็อพเพอร์ตี้ตัวแก้ไข
rshift+raltจะระบุลักษณะการทำงานที่จะมีผลเมื่อกดแป้น SHIFT ขวาและ ALT ขวาพร้อมกัน
ระบบจะจดจำตัวแก้ไขต่อไปนี้ในพร็อพเพอร์ตี้ตัวแก้ไข
shift: ใช้เมื่อกดแป้น SHIFT ซ้ายหรือขวาlshift: ใช้เมื่อกดตัวควบคุม SHIFT ซ้ายrshift: ใช้เมื่อกดแป้นแป้นพิมพ์ลัด SHIFT ขวาalt: ใช้เมื่อกดแป้นกดร่วม ALT ซ้ายหรือขวาlalt: ใช้เมื่อกดแป้นกดร่วม ALT ซ้ายralt: ใช้เมื่อกดแป้นกดร่วม ALT ขวาctrl: ใช้เมื่อกดแป้นกดร่วม Ctrl ซ้ายหรือขวาlctrl: ใช้เมื่อกดตัวควบคุมแป้นพิมพ์ Ctrl ซ้ายrctrl: ใช้เมื่อกดตัวควบคุมแป้นควบคุมขวาmeta: ใช้เมื่อกดตัวแก้ไข META ซ้ายหรือขวาlmeta: ใช้เมื่อกดตัวแก้ไข META ซ้ายrmeta: ใช้เมื่อกดตัวแก้ไข META ขวาsym: ใช้เมื่อกดตัวหลีก SYMBOLfn: ใช้เมื่อกดตัวแก้ไข FUNCTIONcapslock: ใช้เมื่อแป้นกดร่วม CAPS LOCK ล็อกอยู่numlock: ใช้เมื่อตัวแก้ไข NUM LOCK ล็อกอยู่scrolllock: ใช้เมื่อตัวแก้ไข SCROLL LOCK ล็อกอยู่
ลำดับที่แสดงที่พักมีความสำคัญ เมื่อแมปคีย์กับลักษณะการทํางาน ระบบจะสแกนพร็อพเพอร์ตี้ที่เกี่ยวข้องทั้งหมดตามลําดับ แล้วแสดงลักษณะการทํางานที่เกี่ยวข้องล่าสุดที่พบ
ดังนั้น พร็อพเพอร์ตี้ที่ระบุในภายหลังจะลบล้างพร็อพเพอร์ตี้ที่ระบุไว้ก่อนหน้านี้สำหรับคีย์หนึ่งๆ
ลักษณะการทำงาน
แต่ละพร็อพเพอร์ตี้จะจับคู่กับลักษณะการทำงาน ลักษณะการทำงานที่พบบ่อยที่สุดคือการพิมพ์อักขระ แต่ก็ยังมีลักษณะการทำงานอื่นๆ อีกมากมาย
ระบบจะจดจำพฤติกรรมต่อไปนี้
-
none: อย่าพิมพ์อักขระลักษณะการทำงานนี้เป็นค่าเริ่มต้นเมื่อไม่ได้ระบุอักขระ การระบุ
noneเป็นตัวเลือกที่ไม่บังคับ แต่จะช่วยให้ชัดเจนขึ้น -
'X': พิมพ์อักขระที่ระบุลักษณะการทำงานนี้จะทำให้ระบบป้อนอักขระที่ระบุลงในมุมมองข้อความที่โฟกัส อักขระตัวยึดตำแหน่งอาจเป็นอักขระ ASCII ใดก็ได้ หรือเป็นอักขระหลีกค่าใดค่าหนึ่งต่อไปนี้
'\\': พิมพ์อักขระแบ็กสแลช'\n': พิมพ์อักขระบรรทัดใหม่ (ใช้สำหรับ ENTER / RETURN)'\t': พิมพ์อักขระ TAB'\'': พิมพ์อักขระเครื่องหมายอะพอสทรอฟี'\"': พิมพ์เครื่องหมายคำพูด'\uXXXX': พิมพ์อักขระ Unicode ที่มีจุดโค้ดเป็นเลขฐาน 16 ตามด้วย XXXX
-
fallback<Android key code name>: ดำเนินการเริ่มต้นหากแอปพลิเคชันไม่ได้จัดการคีย์ลักษณะการทำงานนี้จะทำให้ระบบจำลองการกดแป้นอื่นเมื่อแอปพลิเคชันไม่ได้จัดการแป้นที่ระบุโดยค่าเริ่มต้น ใช้ในการรองรับลักษณะการทำงานเริ่มต้นสำหรับแป้นใหม่ที่แอปพลิเคชันบางรายการไม่ทราบวิธีจัดการ เช่น แป้น ESCAPE หรือแป้นตัวเลข (เมื่อไม่ได้กด NumLock)
เมื่อลักษณะการทํางานสำรองทำงาน แอปพลิเคชันจะได้รับการกดแป้น 2 ครั้ง แป้นแรกสําหรับแป้นเดิม และอีกแป้นสําหรับแป้นสำรองที่เลือก หากแอปพลิเคชันจัดการคีย์เดิมระหว่างที่ยกเลิกการกดแป้น ระบบจะยกเลิกเหตุการณ์คีย์สำรอง (
KeyEvent.isCanceledจะแสดงผลเป็นtrue)
ระบบสงวนอักขระ Unicode 2 ตัวไว้เพื่อใช้ฟังก์ชันพิเศษ ดังนี้
-
'\uef00': เมื่อใช้ลักษณะการทำงานนี้ มุมมองข้อความจะลบและนำอักขระ 4 ตัวที่อยู่หน้าเคอร์เซอร์ออก ตีความอักขระเหล่านั้นเป็นตัวเลขฐาน 16 และแทรกจุดโค้ด Unicode ที่เกี่ยวข้อง -
'\uef01': เมื่อใช้ลักษณะการทำงานนี้ มุมมองข้อความจะแสดงกล่องโต้ตอบเครื่องมือเลือกอักขระที่มีสัญลักษณ์อื่นๆ
ระบบจะจดจำอักขระ Unicode ต่อไปนี้ว่าเป็นอักขระการกำกับการออกเสียงที่ตายแล้วซึ่งรวมกัน
'\u0300': เกรฟแอกเซนต์'\u0301': อะคิวต์แอกเซนต์'\u0302': เครื่องหมายเซอร์คัมเฟลกซ์'\u0303': เครื่องหมายทิลเดอ'\u0308': เครื่องหมายกำกับการออกเสียงแบบอูมลัต
เมื่อพิมพ์แป้นตายตามด้วยอักขระอื่น ระบบจะรวมแป้นตายและอักขระที่ตามเข้ามา เช่น เมื่อผู้ใช้พิมพ์แป้นตายเครื่องหมายกำกับการออกเสียงลงตามด้วยตัวอักษร "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 และไม่ได้กดแป้น META)
ดังนั้นลักษณะการทำงานที่ได้สำหรับชุดแป้น SHIFT + A คือ 'A'
CONTROL + A
ตอนนี้ให้พิจารณาว่าจะเกิดอะไรขึ้นหากผู้ใช้กดแป้น A และแป้น CONTROL พร้อมกัน
ระบบจะสแกนตารางพร็อพเพอร์ตี้ตามปกติ แต่จะเห็นว่าพร็อพเพอร์ตี้ base มีผล แต่ก็จะสแกนต่อไปจนกว่าจะถึงพร็อพเพอร์ตี้ control ในกรณีนี้ พร็อพเพอร์ตี้ control จะปรากฏหลังจาก base ดังนั้นลักษณะการทํางานของพร็อพเพอร์ตี้ control จะลบล้างลักษณะการทํางานของ 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 แทน
NUMPAD_0 ที่มีหรือไม่มี NUM LOCK
ปุ่มบนแป้นตัวเลขมีวิธีตีความที่แตกต่างกันมาก โดยขึ้นอยู่กับว่าปุ่ม NUM LOCK ล็อกอยู่หรือไม่
การประกาศคีย์ต่อไปนี้ช่วยให้มั่นใจว่า KEYCODE_NUMPAD_0 จะพิมพ์ 0
เมื่อกด NUM LOCK เมื่อไม่ได้กด NUM LOCK ระบบจะส่งคีย์ไปยังแอปพลิเคชันตามปกติ และหากแอปพลิเคชันไม่ได้จัดการคีย์ดังกล่าว ระบบจะส่งคีย์สำรอง KEYCODE_INSERT แทน
key NUMPAD_0 {
label, number: '0'
base: fallback INSERT
numlock: '0'
ctrl, alt, meta: none
}
เราเห็นว่าการประกาศคีย์สำรองช่วยเพิ่มความเข้ากันได้อย่างมากกับแอปพลิเคชันรุ่นเก่าที่ไม่รู้จักหรือรองรับแป้นทั้งหมดในแป้นพิมพ์สไตล์ PC แบบเต็ม
ตัวอย่าง
แป้นพิมพ์แบบเต็ม
# 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 เวอร์ชันในอนาคตอาจรองรับแป้นพิมพ์หลายภาษาหรือเลย์เอาต์แป้นพิมพ์ที่ผู้ใช้เลือกได้ดีขึ้น
การตรวจสอบความถูกต้อง
ตรวจสอบว่าได้ตรวจสอบไฟล์การแมปอักขระของคีย์โดยใช้เครื่องมือตรวจสอบการแมปคีย์