Anahtar karakter eşleme dosyaları

Eşleme kombinasyonlarından anahtar karakter eşleme dosyaları (.kcm dosya) sorumludur Unicode karakterleri değiştiriciler içeren Android anahtar kodlarından oluşan bir koleksiyon sunar.

Tüm dahili (yerleşik) için cihaza özel anahtar düzeni dosyaları gereklidir anahtar içeren giriş cihazları (sisteme, yalnızca cihazın yalnızca özel amaçlıdır (tam klavye kullanılamaz).

Cihaza özel tuş düzeni dosyaları, harici klavyeler için isteğe bağlıdır ve gerekmez. Sistem, kullanıcılara gösterilen anahtar bir klavye kısayollarını kullanmanız gerekir.

Cihaza özel tuş düzeni dosyası yoksa sistem varsayılan bir tane seçin.

Konum

Anahtar karakter eşleme dosyaları USB tedarikçi firması, ürün (ve isteğe bağlı olarak sürüm) tarafından konumlandırılır kimliği veya giriş cihazı adına göre değişir.

Aşağıdaki yollar sırayla değerlendirilir.

  • /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

Cihaz adını içeren bir dosya yolu oluştururken tüm karakterler '0'-'9', 'a'-'z', 'A'-'Z', '-' dışında cihaz adında veya "_" "_" ile değiştirilir.

Genel anahtar karakter eşleme dosyası

Sistem, Generic.kcm adında özel bir yerleşik anahtar karakter eşleme dosyası sağlar. Bu anahtar karakter haritasının amacı, çeşitli standart harici öğeleri desteklemektir. klavyeler.

Genel tuş karakter eşlemesini değiştirmeyin.

Sanal anahtar karakter eşleme dosyası

Sistem, Virtual.kcm adında özel bir yerleşik anahtar karakter eşleme dosyası sağlar. bir uygulamadır.

Sanal klavye cihazı, kimliği -1 olan bir sentetik giriş cihazıdır (bkz. KeyCharacterMap.VIRTUAL_KEYBOARD). Tüm Android cihazlarda mevcuttur Android Honeycomb 3.0 ile başlıyor. Sanal klavye cihazının amacı kod yerleştirme işlemi için kullanılabilecek bilinen bir yerleşik giriş cihazı sağlamak veya test araçları, hatta kullanım da dahil olmak üzere yerleşik klavye olmayan cihazlar içindir.

Sanal klavyenin tam QWERTY düzenine sahip olduğu varsayılır. tüm cihazlarda aynıdır. Bu, uygulamaların tuş vuruşlarını kullanarak her zaman aynı sonuçları alırsınız.

Sanal tuş karakter eşlemesini değiştirmeyin.

Sözdizimi

Tuş karakteri eşleme dosyası, klavye türünden oluşan bir düz metin dosyasıdır beyanını ve bir dizi anahtar beyanını içerir.

Klavye türü beyanı

Klavye türü bildirimi, klavyenin genel davranışını tanımlar. Karakter eşleme dosyası, klavye türü bildirimi içermelidir. Daha net ifadelerle genellikle dosyanın en üstüne yerleştirilir.

type FULL

Şu klavye türleri tanınır:

  • NUMERIC: Sayısal (12 tuşlu) bir klavyedir.

    Sayısal klavye, çoklu dokunma yaklaşımını kullanarak metin girişini destekler. İstenen harfi veya sembolü oluşturmak için tuşa birkaç kez dokunmanız gerekebilir.

    Bu klavye türü genellikle başparmakla yazma için tasarlanmıştır.

    KeyCharacterMap.NUMERIC öğesine karşılık gelir.

  • PREDICTIVE: Tüm harfleri içeren, ancak tuş başına birden fazla harf içeren bir klavye.

    Bu klavye türü genellikle başparmakla yazma için tasarlanmıştır.

    KeyCharacterMap.PREDICTIVE öğesine karşılık gelir.

  • ALPHA: Tüm harfleri, belki de bazı rakamları içeren bir klavye.

    Alfabetik klavyeler metin girişini doğrudan destekler, ancak küçük form faktörüne sahip bir düzen oluşturur. FULL klavyesinin aksine, bazı sembollere yalnızca ekrandaki özel karakter seçiciler kullanılarak erişilebilir. Buna ek olarak, çerçeve yazma hızını ve doğruluğunu iyileştirmek için alfabetik klavyeler için otomatik büyük harf yapma gibi özel olanaklar ve SHIFT ve ALT tuşlarını açıp kapatın / kilitlendirin.

    Bu klavye türü genellikle başparmakla yazma için tasarlanmıştır.

  • FULL: Tam PC tarzı bir klavye.

    Tam klavye, PC klavyesi gibi çalışır. Tüm simgelere doğrudan erişilebilir klavyedeki tuşlara basarak ekran desteği veya otomatik olarak büyük harf yapar.

    Bu klavye türü genellikle tam iki elle yazmak için tasarlanmıştır.

  • SPECIAL_FUNCTION: Yalnızca sistem kontrol işlevlerini gerçekleştirmek için kullanılan bir klavye kullanmaktır.

    Özel işlev klavyesi yalnızca Gerçekte yazmak için kullanılmayan HOME ve POWER işlevleri.

Generic.kcm ve Virtual.kcm tuş karakter eşlemelerinin her ikisi de FULL klavyedir.

Anahtar beyanları

Anahtar bildirimlerinin her biri key anahtar kelimesinden ve bir Android anahtar kodundan oluşur. bir açık küme parantezi, bir dizi özellik ve davranış ve bir kapalı küme parantezi.

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

Özellikler

Her anahtar mülk, bir anahtardan davranışa eşleme oluşturur. To tuş karakter eşleme dosyaları daha kompaktken, birçok özelliğin eşlenmesi için virgülle ayırarak aynı davranışı sergileyebilirsiniz.

Yukarıdaki örnekte, label özelliğine 'A' davranışı atanmıştır. Benzer şekilde ctrl, alt ve meta özelliklerinin tamamı aynı anda atanır. none davranışı.

Aşağıdaki özellikler tanınır:

  • label: Anahtara fiziksel olarak yazdırılan etiketi belirtir. tek bir karakterden oluşur. Bu, KeyCharacterMap.getDisplayLabel yöntemi.

  • number: Sayısal bir değer girildiğinde davranışı (yazılması gereken karakter) metin görünümünün odağı vardır (ör. kullanıcı telefon numarası yazarken).

    Kompakt klavyeler genellikle birden fazla simgeyi tek bir tuşta birleştirir. Böylece, '1' ve 'a' veya '#' ve 'q' yazmak için aynı anahtar kullanılabilir. Bu anahtarlarda number özelliği, hangi simgenin sayısal bir bağlamda yazılmalıdır.

    Tipik bir "sayısal" semboller '0' - '9', '#', '+', '(', ')', ',' ve '.'.

  • base: Değiştirici olmadığında davranışı (yazılması gereken karakter) belirtir tuşuna basıldığından emin olun.

  • <değiştirici> veya <modifier1>+<modifier2>+...: davranışı (yazılması gereken karakter) ve tüm tuşların belirtilen değiştiriciler etkin.

    Örneğin, shift değiştirici özelliği, şu durumlarda geçerli olacak bir davranışı belirtir: tuşuna basın.

    Benzer şekilde, rshift+ralt değiştirici özelliği, hem RIGHT SHIFT hem de SAĞ ALT değiştiricileri birlikte basılı tutulduğunda.

Değiştirici özelliklerinde aşağıdaki değiştiriciler tanınır:

  • shift: SOL ÜST KARAKTER veya SAĞ ÜST KARAKTER değiştiriciye basıldığında uygulanır.
  • lshift: LEFT SHIFT değiştiriciye basıldığında uygulanır.
  • rshift: SAĞ ÜST KARAKTER değiştiriciye basıldığında uygulanır.
  • alt: LEFT ALT veya SAĞ ALT değiştiriciye basıldığında uygulanır.
  • lalt: LEFT ALT değiştiriciye basıldığında uygulanır.
  • ralt: RIGHT ALT değiştiriciye basıldığında uygulanır.
  • ctrl: SOL KONTROL veya SAĞ KONTROL değiştiricisine basıldığında uygulanır.
  • lctrl: SOL DENETİM değiştiriciye basıldığında uygulanır.
  • rctrl: SAĞ KONTROL değiştiricisine basıldığında uygulanır.
  • meta: LEFT META veya RIGHT META değiştiricisine basıldığında uygulanır.
  • lmeta: LEFT META değiştiriciye basıldığında uygulanır.
  • rmeta: RIGHT META değiştiriciye basıldığında uygulanır.
  • sym: SYMBOL değiştiriciye basıldığında uygulanır.
  • fn: FUNCTION değiştiriciye basıldığında uygulanır.
  • capslock: CAPS LOCK değiştiricisi kilitli olduğunda geçerlidir.
  • numlock: NUM LOCK değiştiricisi kilitli olduğunda uygulanır.
  • scrolllock: SCROLL LOCK değiştiricisi kilitli olduğunda uygulanır.

Tesislerin listelenme sırası önemlidir. Bir anahtarı bir davranış olduğunda, sistem tüm alakalı özellikleri sırayla tarar ve son geçerli bir davranıştır.

Sonuç olarak, daha sonra belirtilen özellikler daha önce de belirtildiği gibidir.

Davranışlar

Her özellik, bir davranışla eşlenir. En yaygın davranış karakter yazmaktır ancak başka yöntemler de var.

Aşağıdaki davranışlar tanınır:

  • none: Karakter yazmayın.

    Bu davranış, herhangi bir karakter belirtilmediğinde varsayılan davranıştır. none belirtiliyor isteğe bağlıdır ancak daha anlaşılır hale gelir.

  • 'X': Belirtilen değişmez karakteri yazın.

    Bu davranış, belirtilen karakterin odaklanılan karakterin Metin görünümü'nü seçin. Değişmez karakter değeri, herhangi bir ASCII karakteri veya şu kaçış sıralarını gösterir:

    • '\\': Bir ters eğik çizgi karakteri yazın.
    • '\n': Yeni bir satır karakteri girin (ENTER / RETURN için bunu kullanın).
    • '\t': Bir TAB karakteri yazın.
    • '\'': Bir kesme işareti karakteri yazın.
    • '\"': Tırnak işareti yazın.
    • '\uXXXX': Kod noktası, XXXX ile onaltılık olarak verilen Unicode karakterini yazın.
  • fallback <Android anahtar kodu adı>: Anahtar değilse varsayılan işlemi gerçekleştirin tarafından işlenir.

    Bu davranış, bir uygulama farklı bir tuşa basıldığında sistemin farklı bir tuşa basmayı simüle etmesine neden olur. belirtilen anahtarı yerel olarak işlemez. Varsayılan davranışı desteklemek için kullanılır veya ESCAPE gibi tüm uygulamaların nasıl işleneceğini bilmediği yeni anahtarlar için sayısal tuş takımı tuşları (numlock tuşuna basılmadığında).

    Bir yedek davranışı gerçekleştirildiğinde uygulama iki tuşa basar: için bir tane oluşturun. Uygulama, başlatma sırasında orijinal anahtarı işlerse yedek anahtar etkinlik iptal edilecek (KeyEvent.isCanceled, true sonucunu döndürecek).

Sistem, özel işlevleri gerçekleştirmek için iki Unicode karakteri ayırır:

  • '\uef00': Bu davranış gerçekleştirildiğinde, metin görünümü aşağıdakileri kullanır ve kaldırır: imleçten önce dört karakter alır, bunları onaltılık basamak olarak yorumlar ve ilgili Unicode kod noktasını gösterir.

  • '\uef01': Bu davranış gerçekleştirildiğinde, metin görünümünde bir çeşitli simgeler içeren karakter seçici iletişim kutusu.

Sistem, aşağıdaki Unicode karakterlerini aksan işaretli ölüleri birleştiriyormuş gibi tanır anahtar karakterler:

  • '\u0300': Aksanlı aksan.
  • '\u0301': Vurgulu aksan.
  • '\u0302': İnceltme işareti.
  • '\u0303': Yaklaşık işareti aksanı.
  • '\u0308': Çift nokta aksanı.

Ölü bir anahtarın ardından başka bir karakter yazıldığında ölü anahtar ve sonraki emin olun. Örneğin, kullanıcı bir aksan işareti (ciddi) yazdığında tuşuna basarak 'a' harfi ile başlarsanız sonuç 'à' olur.

Geçersiz anahtar kullanımı hakkında daha fazla bilgi için KeyCharacterMap.getDeadChar sayfasına bakın.

Yorumlar

Yorum satırları "#" ile başlar ve satırın sonuna kadar devam edin. Aşağıdaki gibi:

# A comment!

Boş satırlar yoksayılır.

Tuş kombinasyonları davranışlarla nasıl eşleştirilir?

Kullanıcı bir tuşa bastığında sistem, o tuşa basıldığında ve o sırada basılan değiştiricilerin kombinasyonu kullanılır.

ÜST KARAKTER + A

Kullanıcının A ve SHIFT tuşlarına birlikte bastığını varsayalım. Sistem, KEYCODE_A ile ilişkili özellikler ve davranışlar grubu.

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

Sistem, özellikleri göz ardı ederek birinciden sonuncuya ve soldan sağa doğru tarar. Bunlar, özel olan label ve number özellikleridir.

Karşılaşılan ilk tesis base. base özelliği her zaman şunlar için geçerlidir: hangi değiştiricilere basıldığından bağımsız olarak bir tuşa basın. Temel olarak varsayılan değeri aşağıdaki özellikler tarafından geçersiz kılınmadığı sürece anahtar için geçerli değildir. base özelliği bu tuşa basma işlemi için geçerli olduğundan sistem, (a karakterini yazın).'a'

Ardından sistem, base değerinden daha spesifik olup bunu geçersiz kılar. Karşılaştığı shift ÜST KARAKTER + A tuşlarına bastığınızda da geçerlidir. Bu nedenle sistem, base mülkünün davranışını belirler ve 'A' olan shift özelliği (A karakterini yazın).

Ardından tabloyu taramaya devam eder ancak bu işlem için başka hiçbir özellik geçerli değildir tuşa basın (CAPS LOCK kilitli değil, DENETİM tuşuna da basılmamış, ne de ALT tuşuna basıldığından META tuşuna basılmaz).

Dolayısıyla, SHIFT + A tuş kombinasyonu için sonuçta elde edilen davranış 'A' olur.

KONTROL + A

Şimdi, kullanıcı A ve DENETİM tuşlarına birlikte bassa ne olacağını düşünün.

Daha önce olduğu gibi, sistem özellikler tablosunu tarar. Bu özellik base özelliğinin uyguladığını ancak içerik sonunda control mülküne ulaştı. Daha sonra, control özelliği, base tarihinden sonra görünür. Bu nedenle, davranışı base davranışını geçersiz kılar.

Dolayısıyla, DENETİM + A tuş kombinasyonu için sonuçta elde edilen davranış none şeklindedir.

ESCAPE

Şimdi kullanıcının ESCAPE'ye bastığını varsayalım.

key ESCAPE {
    base:                               fallback BACK
    alt, meta:                          fallback HOME
    ctrl:                               fallback MENU
}

Bu sefer sistem, bir yedek davranış olan fallback BACK davranışını edinir. Değişmez karakter değeri görünmediğinden hiçbir karakter yazılmaz.

Anahtar işlenirken, sistem önce KEYCODE_ESCAPE öğesini şuraya teslim eder: bir uygulamadır. Uygulama bunu yapmazsa sistem, ancak bu kez, KEYCODE_BACK dosyasını uygulamaya için istek gönderir.

KEYCODE_ESCAPE tanıyıp destekleyen uygulamalar, olanak tanır ancak bunu yapamayan diğer uygulamalar için anahtarı KEYCODE_BACK gibi ele alan yedek işlemi gerçekleştir.

NUM LOCK olsun veya olmasın NUMPAD_0

Sayısal tuş takımı tuşlarının, klavyedeki her kullanıcının NUM LOCK anahtarı kilitli.

Aşağıdaki anahtar beyanı, KEYCODE_NUMPAD_0 türlerinin 0 olmasını sağlar NUM LOCK tuşuna basıldığında. NUM LOCK'a basılmazsa tuş yayınlanır geri yüklenir ve işlenmezse yedek bunun yerine KEYCODE_INSERT anahtarı yayınlanır.

key NUMPAD_0 {
    label, number:                      '0'
    base:                               fallback INSERT
    numlock:                            '0'
    ctrl, alt, meta:                    none
}

Gördüğümüz gibi, yedek anahtar bildirimleri uyumluluğu büyük ölçüde artırıyor tüm anahtarları tanımayan veya doğrudan desteklemeyen eski uygulamalarla klavyedeki tüm uygulamaları da kullanabilirsiniz.

Örnekler

Tam klavye

# 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
}

Alfanümerik klavye

# 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'
}

Oyun kumandası

# 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
}

Uyumluluk notu

Android Honeycomb 3.0'dan önce Android anahtar karakter eşlemesi belirtiliyordu. çok farklı bir söz dizimi kullanılarak ve bir ikili dosya biçiminde derlenmiş Derleme sırasında (.kcm.bin).

Yeni biçim aynı .kcm uzantısını kullansa da söz dizimi oldukça farklı (ve çok daha güçlü).

Android Honeycomb 3.0'dan itibaren tüm Android anahtar karakter eşleme dosyaları bu dokümanda açıklanan yeni söz dizimi ve düz metin dosya biçimi. Eski söz dizimi desteklenmiyor ve eski .kcm.bin dosyaları tanınmıyor sistem tarafından belirlenir.

Dil notu

Android şu anda çok dilli klavyeleri desteklememektedir. Ayrıca, yerleşik genel tuş karakter haritası, ABD İngilizcesi klavye düzeni varsayılır.

OEM'lerin, klavyeleri için özel tuş karakter eşlemeleri sağlaması önerilir. otomatik olarak oluşturulur.

Android'in gelecek sürümleri çok dilli klavyeler için daha iyi destek sağlayabilir klavye düzenlerini kullanabilirsiniz.

Doğrulama

Anahtar karakter eşleme dosyalarınızı Tuş Eşlemelerini Doğrula aracı.