تربط ملفات تنسيق المفاتيح (.kl
ملف) رموز مفاتيح Linux ورموز المحاور.
إلى رموز مفاتيح Android ورموز المحاور وتحديد علامات السياسة ذات الصلة.
ملفات تنسيق المفاتيح الخاصة بالجهاز هي:
- مطلوب لأجهزة الإدخال الداخلية (المضمَّنة) التي تتضمن مفاتيح، بما في ذلك مفاتيح خاصة مثل مفاتيح وسائط مستوى الصوت والتشغيل وسماعات الرأس.
- اختيارية لأجهزة الإدخال الأخرى ولكن يُنصَح بها لوحات المفاتيح وأذرع التحكم المخصصة لأغراض خاصة.
إذا لم يتوفر ملف تخطيط مفتاح خاص بالجهاز، يختار النظام كخيار افتراضي بدلاً من ذلك.
الموقع الجغرافي
تتوفّر ملفات تنسيق المفاتيح حسب مورِّد USB والمنتج (والإصدار الاختياري). المعرّف أو اسم جهاز الإدخال. تتم الرجوع إلى المسارات التالية بالترتيب:
/odm/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/vendor/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/odm/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/vendor/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX.kl
/odm/usr/keylayout/DEVICE_NAME.kl
/vendor/usr/keylayout/DEVICE_NAME.kl
/system/usr/keylayout/DEVICE_NAME.kl
/data/system/devices/keylayout/DEVICE_NAME.kl
/odm/usr/keylayout/Generic.kl
/vendor/usr/keylayout/Generic.kl
/system/usr/keylayout/Generic.kl
/data/system/devices/keylayout/Generic.kl
عند إنشاء مسار ملف يحتوي على اسم الجهاز، فإن جميع الأحرف في اسم الجهاز بخلاف "0"-"9" أو "a"-'z'، "A"-"Z" و"-" أو "_" يتم استبدالها بـ "_".
ملف تنسيق المفتاح العام
يوفر النظام ملف تخطيط مفتاح عام مدمج خاص يسمى
Generic.kl
يهدف هذا التخطيط الرئيسي إلى دعم مجموعة متنوعة من
لوحات المفاتيح الخارجية وأذرع التحكم القياسية. لا تعدِّل المفتاح العام.
صمِّم!
بناء الجملة
ملف تخطيط المفتاح هو ملف نص عادي يتكون من تصريحات رئيسية أو محور والإبلاغ عنها.
نماذج البيانات الرئيسية
تتكون تعريفات المفاتيح من الكلمة الرئيسية key
متبوعةً بكلمة Linux
أو رقم الرمز واسم الرمز الخاص بمفتاح Android، أو استخدام الكلمة الرئيسية متبوعًا
استخدام جهاز HID واسم رمز مفتاح Android يتم تمثيل استخدام الواجهة البشرية (HID) في صورة 32 بت
عدد صحيح، حيث تمثل القيم العالية 16 بت صفحة استخدام واجهة بشرية HID وشرائح 16 بت المنخفضة.
تمثّل معرّف استخدام HID. قد يكون أي من البيانين متبوعًا بسمة اختيارية
مجموعة من علامات السياسة مفصولة بمسافات.
key 1 ESCAPE key 114 VOLUME_DOWN key 16 Q VIRTUAL key usage 0x0c006F BRIGHTNESS_UP
يتم التعرّف على علامات السياسة التالية:
FUNCTION
: يجب تفسير المفتاح كما لو كان مفتاح FUNCTION كما تم الضغط عليها.GESTURE
: المفتاح الذي يتم إنشاؤه من خلال إيماءة المستخدم، مثل راحة اليد الشاشة التي تعمل باللمس.VIRTUAL
: المفتاح هو مفتاح أمان افتراضي (زر سعوي). بجانب الشاشة الرئيسية التي تعمل باللمس. ويتسبب هذا في ظهور منطق ارتداد خاص (انظر أدناه).
تعريفات المحور
تتألف كل إعلانات المحور من الكلمة الرئيسية axis
متبوعة
رقم رمز محور Linux والمؤهلات التي تتحكم في سلوك المحور
بما في ذلك اسم رمز واحد على الأقل لمحور Android.
المحاور الأساسية
يقوم المحور الأساسي ببساطة بتعيين رمز محور Linux إلى اسم رمز محور Android. تشير رسالة الأشكال البيانية
خرائط البيان التالية ABS_X
(يُشار إليها من خلال 0x00
)
إلى AXIS_X
(يُشار إليه باسم X
).
axis 0x00 X
في المثال أعلاه، إذا كانت قيمة ABS_X
هي 5
ثم يتم ضبط AXIS_X
على 5
.
محاور الانقسام
يعيّن محور الانقسام رمز محور Linux إلى اسمين لرمز محور Android، بحيث يتمّ قسمة القيم التي تقلّ عن حدّ معيّن أو تزيد عنه على محورَين مختلفَين عند تعيينها. يفيد هذا التعيين عندما يتم الإبلاغ عن محور فعلي واحد بواسطة يُرمّز الجهاز محورين منطقيين مختلفين نافيين بشكل تبادلي.
يربط البيان التالي قيم المحور ABS_Y
.
(يشار إليه بالاختصار 0x01
) إلى AXIS_GAS
عندما يكون أقل من
0x7f
أو إلى AXIS_BRAKE
عندما تكون القيمة أكبر من
0x7f
axis 0x01 split 0x7f GAS BRAKE
في المثال أعلاه، إذا كانت قيمة ABS_Y
هي 0x7d
ثم يتم ضبط AXIS_GAS
على 2
(0x7f - 0x7d
)
وتم ضبط AXIS_BRAKE
على 0
. وعلى العكس، إذا كانت القيمة
من ABS_Y
قيمة 0x83
ثم تم ضبط AXIS_GAS
على
تم ضبط 0
وAXIS_BRAKE
على 4
(0x83 - 0x7f
). وأخيرًا، إذا كانت قيمة ABS_Y
تساوي
قيمة القسمة 0x7f
ثم AXIS_GAS
تم ضبط AXIS_BRAKE
على 0
.
محاور مقلوبة
المحور المقلوب ينقلب علامة قيمة المحور. ما يلي:
يرتبط البيان ABS_RZ
(يُشار إليه بواسطة 0x05
) بـ
AXIS_BRAKE
(يشار إليه بـ BRAKE
)، ويعكس
الناتج عن طريق إلغائه.
axis 0x05 invert BRAKE
في المثال أعلاه، إذا كانت قيمة ABS_RZ
هي 2
ثم يتم ضبط AXIS_BRAKE
على -2
.
خيار مسطّح الأوسط
قد يُبلغ جهاز ذراع التحكّم عن أحداث الإدخال حتى في حال عدم استخدام ذراع التحكّم، وذلك بسبب التشويش. يصدر عادةً هذا الضوضاء من العصي اليسرى و/أو اليمنى، ويتسبب في إبلاغ السائق قيمة الموضع بالقرب من 0. "الشقة المركزية" تُحدد مقدار التشويش المتوقع من وحدة التحكم في حالة عدم النشاط.
يوفّر بروتوكول الإدخال في نظام التشغيل Linux طريقة لبرامج تشغيل أجهزة الإدخال لتحديد
القيمة المسطحة المركزية لمحاور ذراع التحكم، ولكن لا تُبلغ كل السائقين عنها، والبعض منها يوفرها
قيم غير صحيحة. لحلّ هذه المشكلة، قد يتبع بيان المحور علامة
خيار flat
الذي يحدّد عرض المنطقة المحيطة بالمركز
موضع المحور الذي ينبغي اعتباره في المنتصف.
على سبيل المثال، إذا أبلغ برنامج تشغيل الجهاز عن قيم لـ AXIS_X
بين 0 و100،
عندئذٍ، سيتم تعيين 0 إلى -1 وسيتم تعيين 100 إلى 1 من خلال نظام إدخال Android.
سيكون مركز النطاق 50 في الإحداثيات غير المقيسة و0 في الإحداثيات المُعدَّلة.
إذا كانت القيمة الثابتة تساوي 10،
فينبغي على المطوّرين أن يفترضوا أنّ أي قيمة AXIS_X
تم الإبلاغ عنها بين
تعد 0.1 و0.1 (بين 40 و60 في الإحداثيات غير المقيسة) تشويشًا، وتعامَل تلك القيم القادمة
من ذراع التحكم مثل الصفر.
ملاحظة: بينما يحدد ملف تنسيق المفتاح القيمة لمساحة إحداثيات السائق، القيمة التي تم الإبلاغ عنها بواسطة android.view.InputDevice.MotionRange#getFlat() متوفرة في Android والمساحة الإحداثية.
axis 0x03 Z flat 4096
في المثال أعلاه، يتم ضبط القيمة الثابتة للوسط على 4096
.
التعليقات
تبدأ سطور التعليق بالرمز # وتتابع إلى نهاية السطر:
# A comment!
ويتم تجاهل الأسطر الفارغة.
أمثلة
لوحة المفاتيح
# This is an example of a key layout file for a keyboard. key 1 ESCAPE key 2 1 key 3 2 key 4 3 key 5 4 key 6 5 key 7 6 key 8 7 key 9 8 key 10 9 key 11 0 key 12 MINUS key 13 EQUALS key 14 DEL # etc...
عناصر التحكّم في النظام
# This is an example of a key layout file for basic system controls, # such as volume and power keys which are typically implemented as GPIO pins # the device decodes into key presses. key 114 VOLUME_DOWN key 115 VOLUME_UP key 116 POWER
أزرار تكاثفية
# This is an example of a key layout file for a touch device with capacitive buttons. key 139 MENU VIRTUAL key 172 HOME VIRTUAL key 158 BACK VIRTUAL key 217 SEARCH VIRTUAL
عناصر التحكّم في الوسائط من خلال مقبس سمّاعة الرأس
# This is an example of a key layout file for headset mounted media controls. # A typical headset jack interface might have special control wires or detect known # resistive loads as corresponding to media functions or volume controls. # This file assumes that the driver decodes these signals and reports media # controls as key presses. key 163 MEDIA_NEXT key 165 MEDIA_PREVIOUS key 226 HEADSETHOOK
ذراع التحكّم
# This is an example of a key layout file for a joystick. # These are the buttons that the joystick supports, represented as keys. key 304 BUTTON_A key 305 BUTTON_B key 307 BUTTON_X key 308 BUTTON_Y key 310 BUTTON_L1 key 311 BUTTON_R1 key 314 BUTTON_SELECT key 315 BUTTON_START key 316 BUTTON_MODE key 317 BUTTON_THUMBL key 318 BUTTON_THUMBR # Left and right stick. # The reported value for flat is 128 in a range of -32767 to 32768, which is absurd. # This confuses applications that rely on the flat value because the joystick # actually settles in a flat range of +/- 4096 or so. We override it here. axis 0x00 X flat 4096 axis 0x01 Y flat 4096 axis 0x03 Z flat 4096 axis 0x04 RZ flat 4096 # Triggers. axis 0x02 LTRIGGER axis 0x05 RTRIGGER # Hat. axis 0x10 HAT_X axis 0x11 HAT_Y
مفاتيح التشغيل الافتراضية
يوفّر نظام الإدخال ميزات خاصة لتنفيذ مفاتيح التشغيل الافتراضية. في حالات الاستخدام التالية:
- إذا كانت المفاتيح الافتراضية المعروضة ظاهرة بيانيًا على الشاشة (مثلاً على Galaxy Nexus)، يتم تنفيذها بواسطة مكون شريط التنقل في حزمة واجهة مستخدم النظام ولأنّ المفاتيح الافتراضية الرسومية يتم تنفيذها بسرعة في النظام، ولا يتم تضمين ملفات تخطيط المفاتيح، وما يلي لا تنطبق المعلومات.
- في حال تنفيذ المفاتيح الافتراضية كمنطقة ممتدة قابلة للمس
التي تمثل جزءًا من شاشة اللمس الرئيسية (مثل شاشة Nexus One)،
ملف خريطة مفتاح افتراضي لترجمة إحداثيات اللمس X/Y إلى
أكواد مفتاح Linux، ثم يستخدم ملف تخطيط المفتاح لترجمة رموز مفاتيح Linux إلى
للاطّلاع على رموز مفاتيح Android (للحصول على تفاصيل حول ملفات خريطة المفاتيح الافتراضية، يُرجى الاطّلاع على
الأجهزة التي تعمل باللمس). يمثل ملف تخطيط المفتاح
يجب أن يحدد جهاز إدخال الشاشة التي تعمل باللمس تعيين المفتاح المناسب وأن يتضمن
العلامة
VIRTUAL
لكل مفتاح. - إذا تم استخدام المفاتيح الشخصية الافتراضية كأزرار سعوية منفصلة عن
شاشة اللمس الرئيسية (كما هو الحال على Nexus S) أو برنامج تشغيل جهاز النواة أو
البرامج الثابتة هي المسؤولة عن ترجمة اللمسات إلى رموز مفاتيح Linux التي
ثم يترجم نظام الإدخال إلى رموز مفاتيح Android باستخدام ملف تنسيق المفتاح.
يجب أن يحدّد ملف تنسيق المفتاح لجهاز إدخال الزر السعوي
ربط المفتاح المناسب وتضمين العلامة
VIRTUAL
لكل مفتاح.
عندما تتوفّر مفاتيح التحكّم الافتراضية في مكان قريب من الشاشة التي تعمل باللمس، من السهل على المستخدمين الضغط عن طريق الخطأ على الزر عند عند لمس الجزء السفلي من الشاشة أو عند تمرير الإصبع من أعلى إلى أسفل أو من أسفل إلى أعلى الشاشة. لمنع حدوث ذلك، يُطبق نظام الإدخال قليلاً مرة أخرى بحيث يتم تجاهل ضغطات المفاتيح الافتراضية لفترة قصيرة من الوقت بعد آخر لمسة على شاشة اللمس (يسمى هذا التأخير وقت سكون المفتاح الافتراضي).
لتفعيل ميزة "ارتداد المفتاح الأساسي" الافتراضي، اتّبِع الخطوات التالية:
- توفير ملف تنسيق مفتاح لشاشة اللمس أو زر السعة الكهربائية
جهاز إدخال تم ضبط العلامة
VIRTUAL
لكل مفتاح عليه.key 139 MENU VIRTUAL key 172 HOME VIRTUAL key 158 BACK VIRTUAL key 217 SEARCH VIRTUAL
- قم بتعيين قيمة وقت الهدوء للمفتاح الافتراضي في تراكب الموارد
إطار العمل
config.xml
.<!-- Specifies the amount of time to disable virtual keys after the screen is touched to filter out accidental virtual key presses due to swiping gestures or taps near the edge of the display. May be 0 to disable the feature. It is recommended that this value be no more than 250 ms. This feature should be disabled for most devices. --> <integer name="config_virtualKeyQuietTimeMillis">250</integer>
التحقُّق
يجب عليك التحقق من صحة ملفات تخطيط المفتاح باستخدام التحقق من خرائط المفاتيح.