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 anahtarlardanumber
ö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ı.