Tuş düzeni dosyaları

Tuş düzeni dosyaları (.kl dosyaları) Linux anahtar kodlarını ve eksen kodlarını eşle ve ilişkili politika işaretlerini belirtmelidir. Cihaza özel tuş düzeni dosyaları:

  • Aşağıdakiler dahil anahtarlara sahip dahili (yerleşik) giriş cihazları için gereklidir: ses seviyesi, güç ve mikrofonlu kulaklık medya tuşları gibi özel tuşlar.
  • Diğer giriş cihazları için isteğe bağlıdır ancak şunun için önerilir: özel klavyeler ve kontrol çubukları var.

Cihaza özel tuş düzeni dosyası yoksa sistem varsayılan olarak ayarlayabilirsiniz.

Konum

Tuş düzeni dosyaları USB tedarikçisine, ürüne (ve isteğe bağlı olarak sürüm) göre bulunur kimliği veya giriş cihazı adına göre değişir. Aşağıdaki yollar sırayla danışılır:

  • /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 tüm karakterler '0'-'9', 'a'-'z', 'a'-'z', "A"-"Z", "-" veya "_" ile değiştirilir "_".

Genel anahtar düzeni dosyası

Sistem, Google Etiket Yöneticisi'ni kullanarak Generic.kl Bu anahtar düzeni, birçok farklı özelliği desteklemek üzere tasarlanmıştır. standart harici klavyeler ve kontrol çubukları bulunur. Genel anahtarı değiştirmeyin unutmayın!

Sözdizimi

Anahtar düzeni dosyası, anahtar veya eksen bildirimlerinden oluşan bir düz metin dosyasıdır ve işaretler.

Anahtar beyanları

Anahtar bildirimleri, key anahtar kelimesinden ve ardından Linux'tan oluşur. anahtar kod numarası ve Android anahtar kodu adı veya anahtar kelime kullanımının ardından HID kullanımı ve Android anahtar kodu adı. HID kullanımı, 32 bit olarak gösterilir. Yüksek 16 bit değeri, HID kullanım sayfasını ve düşük 16 bit değerini temsil eden tam sayı HID kullanım kimliğini temsil eder. Her iki beyanın ardından isteğe bağlı bir Boşlukla ayrılmış politika işaretleri grubudur.

key 1     ESCAPE
key 114   VOLUME_DOWN
key 16    Q                 VIRTUAL
key usage 0x0c006F          BRIGHTNESS_UP

Aşağıdaki politika işaretleri tanınır:

  • FUNCTION: Anahtar, FUNCTION tuşu olarak yorumlanmalıdır tuşuna da basıldı.
  • GESTURE: Avuç içine gösterme gibi bir kullanıcı hareketiyle oluşturulan anahtar dokunun.
  • VIRTUAL: Tuş, sanal bir yazılım tuşudur (kapasitif düğme). bitişiğinde olur. Bu, özel bir geri alma mantığının etkin (aşağıya bakın).

Eksen bildirimleri

Eksen bildirimlerinin her biri axis anahtar kelimesinden ve ardından bir Linux eksen kod numarası ve eksenin davranışını kontrol eden niteleyiciler en az bir Android eksen kod adı içermelidir.

Temel eksenler

Temel bir eksen, bir Linux eksen kodunu Android eksen kod adıyla eşler. İlgili içeriği oluşturmak için kullanılan aşağıdaki beyan eşlemeleri ABS_X (0x00 ile gösterilir) AXIS_X (X ile gösterilir).

axis 0x00 X

Yukarıdaki örnekte, ABS_X değeri 5 ise AXIS_X, 5 olarak ayarlanır.

Eksenleri böl

Bölünmüş eksen, bir Linux eksen kodunu iki Android ekseni kod adıyla eşler. Örneğin: bir eşikten küçük veya eşikten büyük değerler iki farklı eksene bölünür somut olarak ortaya koyar. Bu eşleme, Search Ads 360'ın tek bir fiziksel ekseni bildirdiği cihaz, birbirini dışlayan iki farklı mantıksal eksen kodluyor.

Aşağıdaki bildirim, ABS_Y ekseninin değerlerini eşliyor (0x01 ile gösterilir) - AXIS_GAS (şundan küçük olduğunda): 0x7f veya AXIS_BRAKE değerine (şundan büyük olduğunda) 0x7f.

axis 0x01 split 0x7f GAS BRAKE

Yukarıdaki örnekte, ABS_Y değeri 0x7d ise ardından AXIS_GAS, 2 (0x7f - 0x7d) olarak ayarlanır ve AXIS_BRAKE 0 olarak ayarlandı. Bunun aksine, ABS_Y değeri 0x83, ardından AXIS_GAS olarak ayarlandı 0 ve AXIS_BRAKE 4 olarak ayarlandı (0x83 - 0x7f). Son olarak, ABS_Y değeri şuna eşitse: 0x7f öğesinin bölme değeri, ardından hem AXIS_GAS hem de AXIS_BRAKE, 0 olarak ayarlandı.

Ters eksenler

Ters çevrilmiş bir eksen, eksen değerinin işaretini tersine çevirir. Aşağıdakiler beyan ABS_RZ (0x05 ile gösterilir) ile eşleşir AXIS_BRAKE (BRAKE ile gösterilir) ve çıkış miktarına ilişkindir.

axis 0x05 invert BRAKE

Yukarıdaki örnekte, ABS_RZ değeri 2 ise AXIS_BRAKE, -2 olarak ayarlanır.

Orta düz seçeneği

Bir kontrol çubuğu cihazı, gürültü nedeniyle kontrol çubuğu kullanılmıyorken bile giriş etkinliklerini raporlayabilir. Bu gürültü genellikle sol ve/veya sağ çubuklardan gelir ve sürücünün bunu bildirmesine neden olur. 0'a yakın bir konum değerine ayarlanır. "Ortadaki düz" değeri, aktif olmayan kumandadan beklenmesi gereken gürültü miktarını belirtir.

Linux giriş protokolü, giriş cihazı sürücülerinin aşağıdakileri belirtmesi için bir yol sağlar: kontrol çubuğu eksenlerinin merkezdeki düz değeri, ancak tüm sürücüler bunu bildirmez ve bazıları hatalı değerlere sahiptir. Bu sorunu çözmek için bir eksen beyanının ardından bir Merkezin etrafındaki bölgenin genişliğini belirten flat seçeneği ortalanmış olarak kabul edilmesi gereken eksenin konumu.

Örneğin, bir cihaz sürücüsü AXIS_X için 0 ile 100 arasında değer bildiriyorsa 0, Android giriş sistemi tarafından -1 ile, 100 ise 1 ile eşlenir. Aralığın merkezi, ölçeklenmemiş koordinatlarda 50 ve ölçeklendirilmiş koordinatlarda 0 olacaktır. Sabit değer 10'a eşitse geliştiriciler, dönüşüm sayıları arasında bildirilen herhangi bir AXIS_X değerinin -0,1 ve 0,1 (ölçeklenmemiş koordinatlarda 40 ile 60 arasında) gürültüdür ve gelen bu değerleri hesaplamaya çalışır sıfır olarak ayarlayın.

Not: Anahtar düzen dosyası sürücü koordinat alanı için android.view.InputDevice.MotionRange#getFlat() tarafından bildirilen değer Android'de koordinat alanıdır.

axis 0x03 Z flat 4096

Yukarıdaki örnekte, ortadaki sabit 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 yoksayılır.

Örnekler

Klavye

# 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

Mikrofonlu 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

Kontrol çubuğu

# 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 geçici tuşlar

Giriş sistemi, sanal tuşlu tuşların uygulanması için bazı özellikler sunar. aşağıdaki kullanım örneklerinde belirtilmiştir:

  1. Sanal yazılım tuşları ekranda grafik olarak görünüyorsa (örneğin, Galaxy Nexus'lar için), bu cihazdaki Navigasyon Çubuğu bileşeni tarafından uygulanır Sistem kullanıcı arayüzü paketi. Grafik sanal tuşlar, hızlı bir şekilde anahtar düzeni dosyalarına dahil edilmez. Ayrıca, bu bilgiler geçerli değildir.
  2. Sanal yazılım tuşları, genişletilmiş dokunulabilir bir bölge olarak uygulanırsa (Nexus One'da olduğu gibi) ana ekranın bir parçası olan sistem, X/Y dokunma koordinatlarını aşağıdaki konumlara çevirmek için sanal bir tuş eşleme dosyası kullanır: ve ardından Linux anahtar kodlarını aşağıdaki dillere çevirmek için anahtar düzen dosyasını kullanır Android anahtar kodları (sanal anahtar eşleme dosyalarıyla ilgili ayrıntılar için bkz. Dokunmatik cihazlar). Dokunmatik ekranlı giriş cihazı, uygun tuş eşlemesini belirtmeli her tuş için VIRTUAL işaretini kullanın.
  3. Sanal yazılım tuşları, ana dokunmatik ekran (Nexus S'deki gibi), çekirdek cihaz sürücüsü veya rötuşları Linux anahtar kodlarına dönüştürmekten sorumludur. giriş sistemi, tuş düzen dosyasını kullanarak Android anahtar kodlarına çevrilir. Kapasitif düğme giriş cihazının tuş düzeni dosyası ve her anahtar için VIRTUAL işaretini ekleyin.

Sanal tuşlar, cihazın fiziksel olarak yakınında veya yakınında olduğunda bir düğmeye basarken, kullanıcının kolayca bir düğmeye bastığını ekranın alt kısmına yakın bir yere dokunulduğunda veya parmağınızı yukarıdan aşağıya kaydırırken ya da aşağıdan yukarıya doğru hareket edebilir. Bunu önlemek için giriş sistemi, sanal tuşlu tuşlara basma işleminin kısa bir süreliğine yok sayılacağı şekilde geri alma dokunulduktan sonra gerçekleştirilen son temastan sonra geçen süre (bu gecikmeye sanal anahtar sessiz süresi) içerir.

Sanal yazılım tuşu geri döndürmesini etkinleştirmek için:

  1. Dokunmatik ekran veya kapasitif düğme için bir tuş düzen dosyası sağlayın her tuş için VIRTUAL işareti ayarlanmış bir giriş cihazı kullanın.
    key 139    MENU           VIRTUAL
    key 172    HOME           VIRTUAL
    key 158    BACK           VIRTUAL
    key 217    SEARCH         VIRTUAL
    
  2. çerçeve config.xml kaynağı.
    <!-- 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ı Tuş Eşlemelerini Doğrula aracı.