Anahtar düzeni dosyaları ( .kl
dosyaları), Linux anahtar kodlarını ve eksen kodlarını Android anahtar kodlarına ve eksen kodlarına eşler ve ilgili politika işaretlerini belirtir. Cihaza özel tuş düzeni dosyaları şunlardır:
- Ses seviyesi, güç ve kulaklık medya tuşları gibi özel tuşlar da dahil olmak üzere tuşlara sahip dahili (yerleşik) giriş cihazları için gereklidir .
- Diğer giriş aygıtları için isteğe bağlıdır ancak özel amaçlı klavyeler ve joystick'ler için önerilir .
Cihaza özel bir tuş düzeni dosyası mevcut değilse sistem bunun yerine bir varsayılanı seçer.
Konum
Anahtar düzeni dosyaları USB satıcısına, ürün (ve isteğe bağlı olarak sürüm) kimliğine veya giriş cihazı adına göre bulunur. Aşağıdaki yollara sırasıyla başvurulur:
-
/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
Cihaz adını içeren bir dosya yolu oluştururken, cihaz adındaki '0'-'9', 'a'-'z', 'A'-'Z', '-' veya '_' dışındaki tüm karakterler '_' ile değiştirilir.
Genel anahtar düzeni dosyası
Sistem, Generic.kl
adı verilen özel bir yerleşik genel anahtar düzeni dosyası sağlar. Bu tuş düzeni, çeşitli standart harici klavyeleri ve kumanda kollarını desteklemeyi amaçlamaktadır. Genel tuş düzenini değiştirmeyin!
Sözdizimi
Anahtar düzeni dosyası, anahtar veya eksen bildirimlerinden ve bayraklardan oluşan düz metin dosyasıdır.
Anahtar beyanlar
Anahtar bildirimleri, anahtar kelime key
ardından bir Linux anahtar kod numarası ve Android anahtar kod adının veya anahtar kelime kullanımının ardından HID kullanımı ve Android anahtar kod adının gelmesinden oluşur. HID kullanımı 32 bitlik bir tamsayı olarak temsil edilir; burada yüksek 16 bit HID kullanım sayfasını, düşük 16 bit ise HID kullanım kimliğini temsil eder. Her iki bildirimin ardından isteğe bağlı olarak boşluklarla ayrılmış politika bayrakları kümesi gelebilir.
key 1 ESCAPE key 114 VOLUME_DOWN key 16 Q VIRTUAL key usage 0x0c006F BRIGHTNESS_UP
Aşağıdaki politika bayrakları tanınır:
-
FUNCTION
: Bu tuş, İŞLEV tuşuna da basılmış gibi yorumlanmalıdır. -
GESTURE
: Dokunmatik ekranı avuçla tutmak gibi bir kullanıcı hareketi tarafından oluşturulan tuş. -
VIRTUAL
: Tuş, ana dokunmatik ekranın yanında bulunan sanal bir yazılım tuşudur (kapasitif düğme). Bu, özel geri dönüş mantığının etkinleştirilmesine neden olur (aşağıya bakın).
Eksen beyanları
Eksen bildirimlerinin her biri axis
anahtar kelimesinden ve ardından bir Linux eksen kod numarasından ve en az bir Android eksen kod adı içeren eksenin davranışını kontrol eden niteleyicilerden oluşur.
Temel eksenler
Temel bir eksen, bir Linux eksen kodunu bir Android eksen kod adıyla eşler. Aşağıdaki bildirim ABS_X
( 0x00
ile gösterilir) AXIS_X
( X
ile gösterilir) eşler.
axis 0x00 X
Yukarıdaki örnekte ABS_X
değeri 5
ise AXIS_X
5
ayarlanır.
Bölünmüş eksenler
Bölünmüş eksen, bir Linux eksen kodunu iki Android eksen kod adıyla eşler; böylece bir eşikten küçük veya büyük değerler, eşlendiğinde iki farklı eksene bölünür. Bu eşleme, aygıt tarafından bildirilen tek bir fiziksel eksenin birbirini dışlayan iki farklı mantıksal ekseni kodladığı durumlarda kullanışlıdır.
Aşağıdaki bildirim, ABS_Y
ekseninin değerlerini ( 0x01
ile gösterilir) 0x7f
küçük olduğunda AXIS_GAS
veya 0x7f
büyük olduğunda AXIS_BRAKE
eşler.
axis 0x01 split 0x7f GAS BRAKE
Yukarıdaki örnekte, ABS_Y
değeri 0x7d
ise AXIS_GAS
2
( 0x7f - 0x7d
) ve AXIS_BRAKE
0
ayarlanır. Tersine, eğer ABS_Y
değeri 0x83
ise AXIS_GAS
0
ve AXIS_BRAKE
4
( 0x83 - 0x7f
) ayarlanır. Son olarak, ABS_Y
değeri 0x7f
bölünmüş değerine eşitse, hem AXIS_GAS
hem de AXIS_BRAKE
0
ayarlanır.
Ters eksenler
Ters çevrilmiş bir eksen, eksen değerinin işaretini tersine çevirir. Aşağıdaki bildirim ABS_RZ
( 0x05
ile gösterilir) AXIS_BRAKE
( BRAKE
ile gösterilir) ile eşler ve çıkışı olumsuzlayarak tersine çevirir.
axis 0x05 invert BRAKE
Yukarıdaki örnekte ABS_RZ
değeri 2
ise AXIS_BRAKE
-2
olarak ayarlanır.
Merkezi düz seçeneği
Bir joystick cihazı, gürültü nedeniyle joystick kullanılmadığında bile giriş olaylarını rapor edebilir. Bu gürültü genellikle sol ve/veya sağ çubuklardan gelir ve sürücünün 0'a yakın bir konum değeri bildirmesine neden olur. "Orta düz" değeri, hareketsiz durumdaki kontrol cihazından beklenecek gürültü miktarını belirtir.
Linux giriş protokolü, giriş aygıtı sürücülerinin joystick eksenlerinin merkez düz değerini belirtmesi için bir yol sağlar, ancak tüm sürücüler bunu bildirmez ve bazıları yanlış değerler sağlar. Bu sorunu çözmek için, bir eksen bildiriminin ardından, eksenin merkez konumu etrafındaki, ortalanmış olarak kabul edilmesi gereken bölgenin genişliğini belirten flat
bir seçenek gelebilir.
Örneğin, bir aygıt sürücüsü AXIS_X
için 0 ile 100 arasında değerler bildirirse, Android giriş sistemi tarafından 0 -1 ile, 100 ise 1 ile eşlenecektir. Aralığın merkezi ölçeklenmemiş koordinatlarda 50, ölçekli koordinatlarda 0 olacaktır. Düz değer 10'a eşitse, geliştiriciler -0,1 ile 0,1 arasında (ölçeklendirilmemiş koordinatlarda 40 ile 60 arasında) bildirilen herhangi bir AXIS_X
değerinin gürültü olduğunu varsaymalı ve joystick'ten gelen bu değerleri sıfır olarak ele almalıdır.
Not : Anahtar yerleşim dosyası sürücü koordinat alanı değerini belirtirken, android.view.InputDevice.MotionRange#getFlat() tarafından bildirilen değer Android koordinat alanındadır.
axis 0x03 Z flat 4096
Yukarıdaki örnekte orta düz değer 4096
olarak ayarlanmıştır.
Yorumlar
Yorum satırları # ile başlar ve satırın sonuna kadar devam eder:
# A comment!
Boş satırlar dikkate alınmaz.
Örnekler
Tuş takımı
# 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...
Sistem kontrolleri
# 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
Kapasitif düğmeler
# 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
Kulaklık jakı medya kontrolleri
# 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
Oyun kolu
# 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
Sanal yazılım tuşları
Giriş sistemi, aşağıdaki kullanım durumlarında sanal yazılım tuşlarının uygulanmasına yönelik özel özellikler sağlar:
- Sanal yazılım tuşları ekranda grafiksel olarak görüntüleniyorsa (Galaxy Nexus'ta olduğu gibi), Sistem Kullanıcı Arayüzü paketindeki Gezinme Çubuğu bileşeni tarafından uygulanır. Grafiksel sanal yazılım tuşları sistemde yüksek bir katmanda uygulandığından, tuş düzeni dosyaları dahil değildir ve aşağıdaki bilgiler geçerli değildir.
- Sanal yazılım tuşları, ana dokunmatik ekranın bir parçası olan genişletilmiş bir dokunulabilir bölge olarak uygulanırsa (Nexus One'da olduğu gibi), giriş sistemi, X/Y dokunmatik koordinatlarını Linux tuş kodlarına çevirmek için bir sanal anahtar harita dosyası kullanır. daha sonra Linux anahtar kodlarını Android anahtar kodlarına çevirmek için anahtar düzeni dosyasını kullanır (sanal anahtar eşleme dosyalarıyla ilgili ayrıntılar için bkz . Dokunmatik cihazlar ). Dokunmatik ekranlı giriş cihazının tuş düzeni dosyası, uygun tuş eşlemesini belirtmeli ve her tuş için
VIRTUAL
bayrağını içermelidir. - Sanal yazılım tuşları ana dokunmatik ekrandan ayrı kapasitif düğmeler olarak uygulanırsa (Nexus S'de olduğu gibi), çekirdek cihaz sürücüsü veya ürün yazılımı, dokunuşları Linux tuş kodlarına çevirmekten sorumludur ve giriş sistemi daha sonra Android tuş kodlarına çevirir. anahtar düzeni dosyasını kullanarak. Kapasitif düğme giriş cihazının tuş düzeni dosyası, uygun tuş eşlemesini belirtmeli ve her tuş için
VIRTUAL
bayrağını içermelidir.
Sanal yazılım tuşları dokunmatik ekranın içinde veya fiziksel yakınına yerleştirildiğinde, kullanıcıların ekranın alt kısmına dokunurken veya parmağını yukarıdan aşağıya veya aşağıdan yukarıya kaydırırken yanlışlıkla bir düğmeye basması kolaydır. ekranın üst kısmında. Bunu önlemek için, giriş sistemi, dokunmatik ekrana en son dokunuştan sonra sanal tuşa basışların kısa bir süre için göz ardı edilmesini sağlayacak şekilde küçük bir geri dönüş uygular (bu gecikmeye sanal tuş sessiz süresi denir).
Sanal programlanabilir tuşun geri çevrilmesini etkinleştirmek için:
- Dokunmatik ekran veya kapasitif düğme giriş cihazı için, her tuş için
VIRTUAL
bayrakla birlikte bir tuş düzeni dosyası sağlayın.key 139 MENU VIRTUAL key 172 HOME VIRTUAL key 158 BACK VIRTUAL key 217 SEARCH VIRTUAL
- Çerçeve
config.xml
kaynağı için bir kaynak katmanında sanal anahtar sessiz süresinin değerini ayarlayın.<!-- 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>
Doğrulama
Anahtar düzeni dosyalarınızı Anahtar Haritaları Doğrula aracını kullanarak doğrulamanız gerekir.