Passen Sie das Layout der externen Tastatur unter Android ohne Root an

Ich mag das Tastaturlayout auf dem Mac: Cmd (Strg) unter dem Daumen und die Möglichkeit, ohne Schamanismus das Verhalten von CapsLock direkt in den Einstellungen zu ändern. Das gleiche Ergebnis wird unter Linux leicht über setxkbmapdie Konsole oder beispielsweise gnome-tweak-toolüber die Benutzeroberfläche erzielt . Aber was ist, wenn die Tastatur eine Verbindung zu Android herstellt?



In Android gibt es verschiedene Möglichkeiten, eine externe Tastatur anzupassen:


  1. Installieren einer Tastatur eines Drittanbieters. Zum Beispiel Externer Tastatur-Helfer .
  2. / kl kcm ( root). , , .
  3. , .

. — . .



.


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.



Wir sammeln und installieren unsere Anwendung. Der einfachste Weg, dies zu tun, ist mit Android Studio, das der offiziellen Dokumentation folgt .


Wenn alles richtig gemacht wurde, Settings -> Language & input -> Physical keyboarderscheinen unsere Layouts und in der Liste der Anwendungen - Custom Keyboard Layout.


Fazit


Die Anpassung einer externen Tastatur ohne Root ist möglich. Nicht alle Wunschliste sind erreichbar: Das Wechseln der Sprache unter Win + Space hat nicht funktioniert, aber es kann ein Firmware-Problem sein.


Der Artikel ist absichtlich kurz - alle Details finden Sie auf den Links.


All Articles