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