ไฟล์การแมปอักขระหลัก

ไฟล์การแมปอักขระหลัก (.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 เต็มรูปแบบ

    แป้นพิมพ์แบบเต็มจะทำงานเหมือนแป้นพิมพ์พีซี เข้าถึงสัญลักษณ์ทั้งหมดได้โดยตรง ด้วยการกดแป้นบนแป้นพิมพ์ที่ ไม่มีการสนับสนุนบนหน้าจอหรือค่าใช้จ่าย การใช้อักษรตัวพิมพ์ใหญ่อัตโนมัติ

    แป้นพิมพ์ประเภทนี้มักออกแบบมาสำหรับการพิมพ์ด้วยมือทั้ง 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' ในทำนองเดียวกัน พร็อพเพอร์ตี้ ctrl, alt และ meta จะได้รับการกำหนดพร้อมกันทั้งหมด ลักษณะการทำงานของ none

ระบบรู้จักพร็อพเพอร์ตี้ต่อไปนี้

  • label: ระบุป้ายกำกับที่พิมพ์บนคีย์เมื่อ ประกอบด้วยอักขระตัวเดียว นี่คือค่าที่ส่งกลับโดย เมธอด KeyCharacterMap.getDisplayLabel

  • number: ระบุลักษณะการทำงาน (อักขระที่ควรพิมพ์) เมื่อตัวเลข มีโฟกัสอยู่ในมุมมองข้อความ เช่น เมื่อผู้ใช้กำลังพิมพ์หมายเลขโทรศัพท์

    แป้นพิมพ์ขนาดกะทัดรัดมักจะรวมสัญลักษณ์หลายๆ ตัวเข้าด้วยกันเป็นแป้นเดียว จึงทำให้ อาจมีการใช้คีย์เดียวกันในการพิมพ์ '1' และ 'a' หรือ '#' และ 'q' สำหรับคีย์เหล่านี้ คุณควรตั้งค่าพร็อพเพอร์ตี้ number เพื่อระบุสัญลักษณ์ ควรพิมพ์ในบริบทที่เป็นตัวเลข หากมี

    "ตัวเลข" โดยทั่วไป สัญลักษณ์เป็นตัวเลข '0' ถึง '9', '#', '+' '(', ')', ',' และ '.'

  • base: ระบุลักษณะการทำงาน (อักขระที่ควรพิมพ์) เมื่อไม่มีแป้นกดร่วม จะกด

  • <modifier> หรือ <modifier1>+<modifier2>+...: ระบุ (อักขระที่ควรพิมพ์) เมื่อกดแป้นและ คีย์ตัวปรับแต่งที่ระบุทำงานอยู่

    เช่น พร็อพเพอร์ตี้ตัวแก้ไข shift จะระบุลักษณะการทำงานที่จะมีผลเมื่อ ระบบจะกดแป้นกดร่วม Shift ซ้ายหรือแป้นขวา

    ในทํานองเดียวกัน พร็อพเพอร์ตี้ตัวปรับแต่ง rshift+ralt จะระบุลักษณะการทํางานที่เข้าข่าย เมื่อทั้งแป้นกดร่วม RIGHT และตัวปรับแต่ง ALT ขวาถูกกดร่วมกัน

ระบบรู้จักตัวแก้ไขต่อไปนี้ในพร็อพเพอร์ตี้ของตัวปรับแต่ง

  • shift: มีผลเมื่อมีการกดแป้นกดร่วม SHIFT ซ้ายหรือแป้นขวา
  • lshift: ใช้เมื่อกดแป้นกดร่วม LEFT SHIFT
  • rshift: ใช้เมื่อกดแป้นกดร่วม RIGHT SHIFT
  • alt: ใช้เมื่อกดเครื่องแก้ไข ALT ซ้ายหรือแป้นกดร่วม RIGHT
  • lalt: ใช้เมื่อกดเครื่องแก้ไข ALT ซ้าย
  • ralt: ใช้เมื่อกดแป้นกดร่วม RIGHT ALT
  • ctrl: มีผลเมื่อกดแป้นกดร่วมการควบคุมด้านซ้ายหรือตัวควบคุมขวา
  • lctrl: ใช้เมื่อกดตัวปรับแต่ง LEFT Control
  • rctrl: ใช้เมื่อกดตัวปรับแต่งการควบคุมสิทธิ์
  • meta: ใช้เมื่อกดแป้นเมตาซ้ายหรือตัวแก้ไขเมตาขวาอย่างใดอย่างหนึ่ง
  • lmeta: ใช้เมื่อกดตัวแก้ไข LEFT
  • rmeta: ใช้เมื่อกดตัวแก้ไขข้อมูลเมตาขวา
  • sym: ใช้เมื่อมีการกดตัวปรับแต่ง SYMBOL
  • fn: ใช้เมื่อกดตัวปรับแต่ง FUNCTION
  • capslock: ใช้เมื่อแป้นกดร่วม CAPS LOCK ล็อกอยู่
  • numlock: ใช้เมื่อแป้นกดร่วม LOCK ล็อกอยู่
  • scrolllock: ใช้เมื่อตัวปรับแต่ง SCROLL LOCK ล็อกอยู่

ลำดับการแสดงที่พักมีนัยสำคัญ เมื่อจับคู่คีย์กับ ระบบจะสแกนคุณสมบัติที่เกี่ยวข้องทั้งหมดตามลำดับและแสดง พฤติกรรมที่เกี่ยวข้องที่พบได้

ดังนั้น พร็อพเพอร์ตี้ที่ระบุในภายหลังจะลบล้างพร็อพเพอร์ตี้ที่ ที่ระบุก่อนหน้านี้สำหรับคีย์ที่ระบุ

ลักษณะการทำงาน

พร็อพเพอร์ตี้แต่ละรายการจะแมปกับลักษณะการทำงาน ลักษณะการทำงานที่พบบ่อยที่สุดคือการพิมพ์อักขระ แต่มีอีกที่อื่นๆ

ลักษณะการทำงานที่ระบบรู้จักมีดังนี้

  • none: ไม่พิมพ์อักขระ

    ลักษณะการทำงานนี้จะเป็นค่าเริ่มต้นเมื่อไม่มีการระบุอักขระ กำลังระบุ none ไม่บังคับ แต่จะช่วยเพิ่มความชัดเจน

  • 'X': พิมพ์ลิเทอรัลอักขระที่ระบุ

    การทำงานนี้จะทำให้อักขระที่ระบุถูกป้อนลงใน มุมมองข้อความ อักขระตามตัวอักษรอาจเป็นอักขระ ASCII หรืออักขระอย่างใดอย่างหนึ่ง ลำดับหลีกต่อไปนี้

    • '\\': พิมพ์อักขระแบ็กสแลช
    • '\n': พิมพ์อักขระการขึ้นบรรทัดใหม่ (ใช้สำหรับ ENTER / RETURN)
    • '\t': พิมพ์อักขระ TAB
    • '\'': พิมพ์อักขระอะพอสทรอฟี
    • '\"': พิมพ์อักขระเครื่องหมายคำพูด
    • '\uXXXX': พิมพ์อักขระ Unicode ซึ่งมีจุดรหัสเป็นเลขฐานสิบหกด้วย XXXX
  • fallback <Android key code name>: ดำเนินการเริ่มต้นหากคีย์ไม่ใช่ ที่แอปพลิเคชันจัดการ

    การทำงานลักษณะนี้ทำให้ระบบจำลองการกดแป้นที่แตกต่างออกไปเมื่อแอปพลิเคชัน ไม่ได้จัดการคีย์ที่ระบุโดยค่าเริ่มต้น ซึ่งใช้เพื่อรองรับลักษณะการทำงานเริ่มต้น สำหรับคีย์ใหม่ที่แอปพลิเคชันบางอย่างไม่รู้จักวิธีจัดการ เช่น ESCAPE หรือ แป้นกดตัวเลข (เมื่อไม่ได้กด numlock)

    เมื่อมีลักษณะการทำงานที่เป็นการสำรอง แอปพลิเคชันจะได้รับการกดแป้น 2 ครั้ง ดังนี้ อันหนึ่งสำหรับคีย์เดิมและอีกอันสำหรับคีย์สำรองที่เลือกไว้ หากแอปพลิเคชันจัดการคีย์เดิมในระหว่างการขึ้นคีย์ คีย์สำรอง กิจกรรมจะถูกยกเลิก (KeyEvent.isCanceled จะเดินทางกลับ true)

ระบบสงวนอักขระ Unicode สองตัวไว้สำหรับทำงานพิเศษต่างๆ ดังนี้

  • '\uef00': เมื่อดำเนินการนี้ มุมมองข้อความจะใช้และนำ อักขระสี่ตัวข้างหน้าเคอร์เซอร์ แปลความหมายเป็นตัวเลขฐานสิบหก และแทรก Code Point ของ Unicode ที่สอดคล้องกัน

  • '\uef01': เมื่อดำเนินการนี้ มุมมองข้อความจะแสดง กล่องโต้ตอบเครื่องมือเลือกอักขระที่มีสัญลักษณ์เบ็ดเตล็ด

ระบบจะรับรู้ว่าอักขระ Unicode ต่อไปนี้เป็นการรวมอักขระที่ตายแล้วในการออกเสียง อักขระหลัก:

  • '\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 และไม่ได้กดแป้น META)

ดังนั้นลักษณะการทำงานของชุดแป้น SHIFT + A จึงเป็น 'A'

การควบคุม + 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

มีหรือไม่มี NUMPAD_0 ล็อก

แป้นกดตัวเลขมีการตีความที่แตกต่างกันมาก ขึ้นอยู่กับว่า แป้น 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 เวอร์ชันในอนาคตอาจรองรับแป้นพิมพ์หลายภาษาได้ดียิ่งขึ้น หรือรูปแบบแป้นพิมพ์ที่ผู้ใช้เลือกได้

การตรวจสอบความถูกต้อง

ตรวจสอบไฟล์การแมปอักขระคีย์โดยใช้ เครื่องมือตรวจสอบคีย์แมป