Gosto do layout do teclado no Mac: Cmd (Ctrl) sob o polegar e da capacidade, sem xamanismo, de alterar o comportamento do CapsLock diretamente nas configurações. O mesmo resultado é facilmente alcançado no Linux usando setxkbmapo console ou, por exemplo, gnome-tweak-toolna interface do usuário. Mas e se o teclado se conectar ao Android?

No Android, existem várias maneiras de personalizar um teclado externo:
- Instalando um teclado de terceiros. Por exemplo, Assistente de teclado externo .
- / kl kcm ( root). , , .
- , .
. — . .
.
Key Layout
Key layout (.kl) (Linux Key Code), .. , , (Android Key), .. TAB, ENTER F. - . , , , , Gamepad Tester.
Key Character Map
Key Character Map (.kcm) , , English(US).
4.1 Android . Settings -> Language & input -> Physical keyboard. , , " ".
:
- Esc CapsLock.
- Ctrl/Win/Alt Win/Alt/Ctrl Alt/PrintScreen/Ctrl Ctrl/Alt/Ctrl .
- Alt+Tab Ctrl+Tab.
- Ctrl+Shift+3.
- Win+Space.
- .
.. ( Ctrl CapsLock, Vim?), " ", apk-. custom-keyboard-layout — Android.
git clone git@github.com:ris58h/custom-keyboard-layout.git
app/src/main/AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ris58h.custom_keyboard_layout">
<application android:label="@string/app_name">
<receiver
android:name=".InputDeviceReceiver"
android:label="@string/keyboard_layouts_label">
<intent-filter>
<action android:name="android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS" />
</intent-filter>
<meta-data
android:name="android.hardware.input.metadata.KEYBOARD_LAYOUTS"
android:resource="@xml/keyboard_layouts" />
</receiver>
</application>
</manifest>
reciever. , ( InputDeviceReceiver) — , . reciever , app/src/main/res/xml/keyboard_layouts.xml:
<?xml version="1.0" encoding="utf-8"?>
<keyboard-layouts xmlns:android="http://schemas.android.com/apk/res/android">
<keyboard-layout
android:name="keyboard_layout_en_us"
android:keyboardLayout="@raw/keyboard_layout_en_us"
android:label="@string/keyboard_layout_en_us_label" />
</keyboard-layouts>
— keyboard_layout_en_us.
app/src/main/res/raw/keyboard_layout_en_us.kcm , :
type OVERLAY
, , - Generic.kcm. .. — .
Key Layout . kcm-, , , Ctrl Alt kl-. : map kl- kcm-.
keyboard_layout_en_us.kcm :
type OVERLAY
map key 58 ESCAPE
map key 29 META_LEFT
map key 56 CTRL_LEFT
map key 125 ALT_LEFT
map key 99 ALT_RIGHT
map key 100 CTRL_RIGHT
key TAB {
label: '\t'
base: '\t'
ctrl: fallback APP_SWITCH
}
key 3 {
label: '3'
base: '3'
shift: '#'
ctrl+shift: fallback SYSRQ
}
, Win+Space — .
, English(US), kcm- , . . keyboard_layout_russian.kcm, app/src/main/res/raw/ , , app/src/main/res/xml/keyboard_layouts.xml:
<?xml version="1.0" encoding="utf-8"?>
<keyboard-layouts xmlns:android="http://schemas.android.com/apk/res/android">
<keyboard-layout
android:name="keyboard_layout_en_us"
android:keyboardLayout="@raw/keyboard_layout_en_us"
android:label="@string/keyboard_layout_en_us_label" />
<keyboard-layout
android:name="keyboard_layout_ru"
android:keyboardLayout="@raw/keyboard_layout_ru"
android:label="@string/keyboard_layout_ru_label" />
</keyboard-layouts>
keyboard_layout_ru_label app/src/main/res/values/strings.xml.
, , . '3', , :
key 3 {
label: '3'
base: '3'
shift: '\u2116'
ralt: '#'
ctrl+shift: fallback SYSRQ
}
Vendor_17ef_Product_6048.
Coletamos e instalamos nosso aplicativo. A maneira mais fácil de fazer isso é com o Android Studio, seguindo a documentação oficial .
Se tudo for feito corretamente, Settings -> Language & input -> Physical keyboardnossos layouts aparecerĂŁo e na lista de aplicativos - Custom Keyboard Layout.
ConclusĂŁo
É possĂvel personalizar um teclado externo sem raiz. Nem toda a lista de desejos Ă© possĂvel: alternar idiomas no Win + Space nĂŁo funcionou, mas pode ser um problema de firmware.
O artigo Ă© resumido propositadamente - todos os detalhes podem ser encontrados nos links.