Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Giriş

Android Giriş HAL simgesi

Android giriş alt sistemi nominal olarak sistemin birden çok katmanını geçen bir olay kanalından oluşur.

Giriş Hattı

En alt katmanda, fiziksel giriş cihazı tuşa basma ve dokunma temas noktaları gibi durum değişikliklerini açıklayan sinyaller üretir. Aygıt ürün yazılımı, bu sinyalleri sisteme USB HID raporları göndererek veya bir I2C veriyolunda kesintiler üreterek kodlar ve iletir.

Daha sonra sinyallerin kodu Linux çekirdeğindeki bir aygıt sürücüsü tarafından çözülür. Linux çekirdeği, özellikle HID protokolüne bağlı olanlar olmak üzere birçok standart çevre birimi için sürücü sağlar. Bununla birlikte, bir OEM genellikle sisteme dokunmatik ekranlar gibi düşük bir seviyede sıkıca entegre edilmiş gömülü cihazlar için özel sürücüler sağlamalıdır.

Giriş aygıt sürücüleri, aygıta özgü sinyalleri Linux giriş protokolü aracılığıyla standart bir giriş olayı biçimine çevirmekten sorumludur. Linux giriş protokolü, linux/input.h çekirdek başlık dosyasında standart bir olay türleri ve kod kümesi tanımlar. Bu şekilde, çekirdeğin dışındaki bileşenlerin fiziksel tarama kodları, HID kullanımları, I2C mesajları, GPIO pinleri ve benzeri gibi ayrıntılara dikkat etmesi gerekmez.

Daha sonra, Android EventHub bileşeni, her giriş cihazıyla ilişkili evdev sürücüsünü açarak çekirdekten gelen giriş olaylarını okur. Android InputReader bileşeni daha sonra giriş olaylarının cihaz sınıfına göre kodunu çözer ve bir Android giriş olayları akışı oluşturur. Bu sürecin bir parçası olarak, Linux giriş protokolü olay kodları, giriş cihazı yapılandırmasına, klavye düzen dosyalarına ve çeşitli eşleme tablolarına göre Android olay kodlarına çevrilir.

Son olarak, InputReader girdi olaylarını InputReader gönderir ve bunları uygun pencereye iletir.

Kontrol noktaları

Giriş boru hattında, giriş cihazının davranışı üzerinde kontrolü etkileyen birkaç aşama vardır.

Sürücü ve Bellenim Yapılandırması

Giriş aygıtı sürücüleri, sık sık kayıtlardaki parametreleri ayarlayarak veya hatta aygıt yazılımının kendisini yükleyerek giriş aygıtının davranışını yapılandırır. Bu özellikle, kalibrasyon işleminin büyük bir bölümünün bu parametrelerin ayarlanmasını veya istenen doğruluk ve yanıt verebilirliği sağlamak ve gürültüyü bastırmak için ürün yazılımını sabitlemeyi içerdiği dokunmatik ekranlar gibi gömülü cihazlar için geçerlidir.

Sürücü yapılandırma seçenekleri genellikle çekirdek kartı destek paketindeki (BSP) modül parametreleri olarak belirtilir, böylece aynı sürücü birden çok farklı donanım uygulamasını destekleyebilir.

Bu belgeler sürücü veya ürün yazılımı yapılandırmasını tanımlamaya çalışır, ancak genel olarak aygıt kalibrasyonu konusunda rehberlik sunar.

Kart Yapılandırma Özellikleri

Çekirdek kartı destek paketi (BSP), sanal tuşların bir dokunmatik ekrana yerleştirilmesi gibi Android InputReader bileşeni tarafından kullanılan SysFS aracılığıyla kart yapılandırma özelliklerini dışa aktarabilir.

Farklı aygıtların kart yapılandırma özelliklerini nasıl kullandığı hakkında ayrıntılar için aygıt sınıfı bölümlerine bakın.

Kaynak Kaplamaları

Birkaç giriş davranışı, config.xml kapak anahtarının çalışması gibi kaynak katmanları aracılığıyla yapılandırılır.

İşte birkaç örnek:

  • config_lidKeyboardAccessibility : Kapak anahtarının donanım klavyesinin erişilebilir mi yoksa gizli mi olduğu üzerindeki etkisini belirtir.

  • config_lidNavigationAccessibility : Kapak düğmesinin izleme dörtgeninin erişilebilir mi yoksa gizli mi olduğu üzerindeki etkisini belirtir.

  • config_longPressOnPowerBehavior : Kullanıcı güç düğmesini basılı tuttuğunda ne olması gerektiğini belirtir.

  • config_lidOpenRotation : Kapak anahtarının ekran yönü üzerindeki etkisini belirtir.

Her yapılandırma seçeneğiyle ilgili ayrıntılar için frameworks/base/core/res/res/values/config.xml içindeki belgelere bakın.

Anahtar Haritalar

Anahtar eşlemeler Android EventHub ve InputReader bileşenleri tarafından Linux olay kodlarından Android olay kodlarına anahtarlar, joystick düğmeleri ve joystick eksenleri için eşlemeyi yapılandırmak için kullanılır. Eşleme cihaza veya dile bağlı olabilir.

Farklı cihazların anahtar haritaları nasıl kullandığı hakkında ayrıntılar için cihaz sınıfı bölümlerine bakın.

Giriş Cihazı Yapılandırma Dosyaları

Giriş cihazı yapılandırma dosyaları, Android EventHub ve InputReader bileşenleri tarafından, dokunma boyutu bilgilerinin nasıl rapor edildiği gibi özel cihaz özelliklerini yapılandırmak için kullanılır.

Farklı cihazların giriş cihazı yapılandırma haritalarını nasıl kullandıkları hakkında ayrıntılar için cihaz sınıfı bölümlerine bakın.

HID Kullanımlarını ve Olay Kodlarını Anlama

Genellikle klavyedeki herhangi bir tuşa, oyun denetleyicisindeki düğmeye, joystick eksenine veya diğer kontrole başvurmak için kullanılan birkaç farklı tanımlayıcı vardır. Bu tanımlayıcılar arasındaki ilişkiler her zaman aynı değildir: bazıları sabit olan ve bazıları cihazın, aygıt sürücüsünün, geçerli yerel ayarın, sistem yapılandırmasının, kullanıcı tercihleri ​​ve diğer faktörler.

Fiziksel Tarama Kodu

Fiziksel tarama kodu, her bir tuş, düğme veya diğer kontrolle ilişkili cihaza özgü bir tanımlayıcıdır. Fiziksel tarama kodları genellikle bir aygıttan diğerine farklılık gösterdiğinden, ürün yazılımı veya aygıt sürücüsü bunları HID ​​Kullanımları veya Linux anahtar kodları gibi standart tanımlayıcılarla eşlemekten sorumludur.

Tarama kodları temel olarak klavyeler için ilgi çekicidir. Diğer cihazlar genellikle GPIO pinlerini, I2C mesajlarını veya diğer araçları kullanarak düşük seviyede iletişim kurar. Sonuç olarak, yazılım yığınının üst katmanları neler olup bittiğini anlamak için aygıt sürücülerine güvenir.

HID Kullanımı

HID kullanımı, klavye tuşu, joystick ekseni, fare düğmesi veya dokunma temas noktası gibi bir kontrolün durumunu bildirmek için kullanılan standart bir tanımlayıcıdır. Çoğu USB ve Bluetooth giriş cihazı, sistemin onlarla aynı şekilde arabirim oluşturmasını sağlayan HID spesifikasyonuna uygundur.

Android Framework, HID kullanım kodlarını Linux anahtar kodlarına ve diğer tanımlayıcılara çevirmek için Linux çekirdeği HID sürücülerine güvenir. Bu nedenle HID kullanımları temel olarak çevre üreticileri için ilgi çekicidir.

Linux Anahtar Kodu

Linux anahtar kodu, bir anahtar veya düğme için standart bir tanımlayıcıdır. Linux anahtar kodları, linux/input.h başlık dosyasında KEY_ veya BTN_ önekiyle başlayan sabitler kullanılarak BTN_ . Linux çekirdek giriş sürücüleri, fiziksel tarama kodlarını, HID kullanımlarını ve diğer aygıta özgü sinyalleri Linux anahtar kodlarına çevirmekten ve bunlar hakkında EV_KEY olaylarının bir parçası olarak bilgi vermekten EV_KEY .

Android API bazen bir anahtarla ilişkili Linux anahtar kodunu "tarama kodu" olarak ifade eder. Bu teknik olarak yanlıştır, ancak Linux anahtar kodlarını API'deki Android anahtar kodlarından ayırt etmeye yardımcı olur.

Linux Göreceli veya Mutlak Eksen Kodu

Linux göreli veya mutlak eksen kodu, farenin X ekseni boyunca göreli hareketleri veya bir joystickinin X ekseni boyunca mutlak pozisyonu gibi bir eksen boyunca bağıl hareketleri veya mutlak pozisyonları bildirmek için standart bir tanımlayıcıdır. Linux eksen kodu, linux/input.h başlık dosyasında REL_ veya ABS_ önekiyle başlayan sabitler kullanılarak ABS_ . Linux çekirdek giriş sürücüleri, HID kullanımlarını ve cihaza özgü sinyalleri Linux eksen kodlarına EV_REL ve EV_ABS EV_REL ve EV_ABS olaylarının bir parçası olarak bilgi sağlamaktan EV_ABS .

Linux Anahtar Kodu

Linux anahtar kodu, kapak anahtarı gibi bir aygıttaki anahtarın durumunu bildirmek için standart bir tanımlayıcıdır. Linux anahtar kodları linux/input.h başlık dosyasında SW_ önekiyle başlayan sabitler kullanılarak SW_ . Linux çekirdek giriş sürücüleri, anahtar durumu değişikliklerini EV_SW olayları olarak EV_SW .

Android uygulamaları genellikle anahtarlardan olay almaz, ancak sistem bunları cihaza özgü çeşitli işlevleri kontrol etmek için dahili olarak kullanabilir.

Android Anahtar Kodu

Android anahtar kodu, 'HOME' gibi belirli bir anahtarı göstermek için Android API'sında tanımlanan standart bir tanımlayıcıdır. Android anahtar kodları android.view.KeyEvent sınıfı tarafından KEYCODE_ önekiyle başlayan sabitler olarak tanımlanır.

Tuş düzeni, Linux anahtar kodlarının Android anahtar kodlarıyla nasıl eşlendiğini belirtir. Klavye modeline, dile, ülkeye, düzene veya özel işlevlere bağlı olarak farklı tuş düzenleri kullanılabilir.

Android anahtar kodlarının kombinasyonları, bir cihaz ve yerel ayara özgü anahtar karakter haritası kullanılarak karakter kodlarına dönüştürülür. Örneğin, KEYCODE_SHIFT ve KEYCODE_A olarak tanımlanan tuşların her ikisi de birlikte basıldığında, sistem birleşimi anahtar karakter eşlemesinde arar ve daha sonra o sırada odaklanılan metin widget'ına eklenen büyük harf A'yı bulur.

Android Ekseni Kodu

Android eksen kodu, belirli bir cihaz eksenini belirtmek için Android API'sında tanımlanan standart bir tanımlayıcıdır. Android eksen kodları android.view.MotionEvent sınıfı tarafından AXIS_ önekiyle başlayan sabitler olarak tanımlanır.

Tuş düzeni, Linux Eksen Kodlarının Android eksen kodlarıyla nasıl eşlendiğini belirtir. Cihaz modeline, dile, ülkeye, düzene veya özel işlevlere bağlı olarak farklı tuş düzenleri kullanılabilir.

Android Meta Durumu

Android meta durumu, Android API'sında hangi değiştirici tuşlara basıldığını göstermek için tanımlanan standart bir tanımlayıcıdır. Android meta durumları android.view.KeyEvent sınıfı tarafından META_ önekiyle başlayan sabitler olarak tanımlanır.

Yapılan meta durumu gibi değiştirici tuşları monitörlerinde Android InputReader bileşeni tarafından belirlenir KEYCODE_SHIFT_LEFT preslenir serbest bırakılır ve / setleri / uygun meta durum bayrağı sıfırlar.

Değiştirici anahtarlar ve meta durumlar arasındaki ilişki sabit kodlanmıştır, ancak tuş düzeni, değiştirici anahtarların kendilerinin nasıl eşlendiğini değiştirebilir ve bu da meta durumları etkiler.

Android Düğme Durumu

Android düğmesi durumu, hangi düğmelere (fare veya dijital kalemde) basıldığını belirtmek için Android API'sında tanımlanan standart bir tanımlayıcıdır. Android düğme durumları android.view.MotionEvent sınıfı tarafından BUTTON_ önekiyle başlayan sabitler olarak tanımlanır.

Geçerli düğme durumu, düğmelere (fare veya dijital kalemde) basıldığında / bırakıldığında izlenen ve uygun düğme durumu bayrağını ayarlayan / sıfırlayan Android InputReader bileşeni tarafından belirlenir.

Düğmeler ve düğme durumları arasındaki ilişki kodlanmıştır.

Daha fazla okuma

  1. Linux giriş olay kodları
  2. Linux çoklu dokunma protokolü
  3. Linux giriş sürücüleri
  4. Linux güç geri bildirimi
  5. HID kullanım tabloları dahil HID bilgileri