ไฟล์การแมปอักขระหลัก (.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 SHIFTrshift
: ใช้เมื่อกดแป้นกดร่วม RIGHT SHIFTalt
: ใช้เมื่อกดเครื่องแก้ไข ALT ซ้ายหรือแป้นกดร่วม RIGHTlalt
: ใช้เมื่อกดเครื่องแก้ไข ALT ซ้ายralt
: ใช้เมื่อกดแป้นกดร่วม RIGHT ALTctrl
: มีผลเมื่อกดแป้นกดร่วมการควบคุมด้านซ้ายหรือตัวควบคุมขวาlctrl
: ใช้เมื่อกดตัวปรับแต่ง LEFT Controlrctrl
: ใช้เมื่อกดตัวปรับแต่งการควบคุมสิทธิ์meta
: ใช้เมื่อกดแป้นเมตาซ้ายหรือตัวแก้ไขเมตาขวาอย่างใดอย่างหนึ่งlmeta
: ใช้เมื่อกดตัวแก้ไข LEFTrmeta
: ใช้เมื่อกดตัวแก้ไขข้อมูลเมตาขวาsym
: ใช้เมื่อมีการกดตัวปรับแต่ง SYMBOLfn
: ใช้เมื่อกดตัวปรับแต่ง FUNCTIONcapslock
: ใช้เมื่อแป้นกดร่วม 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 เวอร์ชันในอนาคตอาจรองรับแป้นพิมพ์หลายภาษาได้ดียิ่งขึ้น หรือรูปแบบแป้นพิมพ์ที่ผู้ใช้เลือกได้
การตรวจสอบความถูกต้อง
ตรวจสอบไฟล์การแมปอักขระคีย์โดยใช้ เครื่องมือตรวจสอบคีย์แมป