ไฟล์แผนที่ตัวละครหลัก

ไฟล์แผนผังอักขระคีย์ (ไฟล์ .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 ที่ใช้โดยอุปกรณ์คีย์บอร์ดเสมือน

อุปกรณ์แป้นพิมพ์เสมือนเป็นอุปกรณ์อินพุตสังเคราะห์ซึ่งมี id เป็น -1 (ดู KeyCharacterMap.VIRTUAL_KEYBOARD ) มีอยู่ในอุปกรณ์ Android ทั้งหมดที่ขึ้นต้นด้วย Android Honeycomb 3.0 วัตถุประสงค์ของอุปกรณ์แป้นพิมพ์เสมือนคือการจัดหาอุปกรณ์อินพุตในตัวที่เป็นที่รู้จักซึ่งสามารถใช้สำหรับการฉีดการกดแป้นพิมพ์ลงในแอปพลิเคชันโดย IME หรือโดยเครื่องมือทดสอบ แม้แต่สำหรับอุปกรณ์ที่ไม่มีแป้นพิมพ์ในตัวก็ตาม

แป้นพิมพ์เสมือนจะถือว่ามีรูปแบบ QWERTY เต็มรูปแบบที่เหมือนกันในทุกอุปกรณ์ ทำให้แอปพลิเคชันสามารถแทรกการกดแป้นพิมพ์โดยใช้อุปกรณ์แป้นพิมพ์เสมือนและได้ผลลัพธ์เดียวกันเสมอ

อย่าแก้ไขแผนผังอักขระคีย์เสมือน!

ไวยากรณ์

ไฟล์แผนผังอักขระคีย์คือไฟล์ข้อความธรรมดาที่ประกอบด้วยการประกาศประเภทแป้นพิมพ์และชุดการประกาศคีย์

ประกาศประเภทแป้นพิมพ์

การประกาศประเภทแป้นพิมพ์จะอธิบายลักษณะการทำงานโดยรวมของแป้นพิมพ์ ไฟล์แผนผังอักขระต้องมีการประกาศประเภทแป้นพิมพ์ เพื่อความชัดเจน มักวางไว้ที่ด้านบนของไฟล์

type FULL

รู้จักประเภทแป้นพิมพ์ต่อไปนี้:

  • NUMERIC : แป้นพิมพ์ตัวเลข (12 คีย์)

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

    แป้นพิมพ์ประเภทนี้โดยทั่วไปได้รับการออกแบบสำหรับการพิมพ์ด้วยนิ้วหัวแม่มือ

    สอดคล้องกับ KeyCharacterMap.NUMERIC

  • PREDICTIVE : แป้นพิมพ์ที่มีตัวอักษรทั้งหมด แต่มีมากกว่าหนึ่งตัวอักษรต่อคีย์

    แป้นพิมพ์ประเภทนี้โดยทั่วไปได้รับการออกแบบสำหรับการพิมพ์ด้วยนิ้วหัวแม่มือ

    สอดคล้องกับ KeyCharacterMap.PREDICTIVE

  • ALPHA : แป้นพิมพ์ที่มีตัวอักษรทั้งหมด และอาจมีตัวเลขด้วย

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

    แป้นพิมพ์ประเภทนี้โดยทั่วไปได้รับการออกแบบสำหรับการพิมพ์ด้วยนิ้วหัวแม่มือ

  • FULL : คีย์บอร์ดสไตล์ PC เต็มรูปแบบ

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

    โดยทั่วไปแล้ว แป้นพิมพ์ประเภทนี้ได้รับการออกแบบสำหรับการพิมพ์โดยใช้สองมือเต็มๆ

  • 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 behavior พร้อมกัน

คุณสมบัติต่อไปนี้ได้รับการยอมรับ:

  • 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 : ใช้เมื่อมีการกดตัวปรับแต่ง LEFT SHIFT หรือ RIGHT SHIFT
  • lshift : ใช้เมื่อมีการกดตัวปรับแต่ง LEFT SHIFT
  • rshift : ใช้เมื่อมีการกดตัวปรับ RIGHT SHIFT
  • alt : ใช้เมื่อมีการกดตัวปรับแต่ง LEFT ALT หรือ RIGHT ALT
  • lalt : ใช้เมื่อกดตัวปรับแต่ง LEFT ALT
  • ralt : นำไปใช้เมื่อมีการกดตัวดัดแปลง RIGHT ALT
  • ctrl : ใช้เมื่อมีการกดตัวปรับแต่ง LEFT CONTROL หรือ RIGHT CONTROL
  • 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' : พิมพ์อักขระ Unicode ซึ่งมีจุดโค้ดกำหนดเป็นเลขฐานสิบหกคูณ XXXX
  • fallback <ชื่อรหัสคีย์ Android>: ดำเนินการตามค่าเริ่มต้นหากแอปพลิเคชันไม่ได้รับการจัดการคีย์

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

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

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

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

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

ระบบจดจำอักขระ Unicode ต่อไปนี้เป็นการรวมอักขระคีย์ตายตัวกำกับเสียง:

  • '\u0300' : สำเนียงที่จริงจัง
  • '\u0301' : สำเนียงเฉียบพลัน
  • '\u0302' : สำเนียง Circumflex
  • '\u0303' : สำเนียงตัวหนอน
  • '\u0308' : สำเนียง Umlaut

เมื่อพิมพ์ dead key ตามด้วยอักขระอื่น จะมีการสร้าง dead key และอักขระต่อไปนี้ ตัวอย่างเช่น เมื่อผู้ใช้พิมพ์คีย์ตายตัวเน้นเสียงแบบ Grave ตามด้วยตัวอักษร 'a' ผลลัพธ์จะเป็น 'à'

โปรดดูที่ 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 ไม่ถูกล็อค ไม่มีการกดปุ่ม CONTROL ไม่มีการกดปุ่ม ALT และไม่มีการกดปุ่ม META)

ดังนั้นลักษณะการทำงานที่เกิดขึ้นสำหรับคีย์ผสม 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 ถูกล็อคหรือไม่

การประกาศคีย์ต่อไปนี้ช่วยให้แน่ใจว่า 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
}

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

ตัวอย่าง

คีย์บอร์ดเต็ม

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

การตรวจสอบ

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