рдореБрдЭреЗ рдореИрдХ рдкрд░ рдХреАрдмреЛрд░реНрдб рд▓реЗрдЖрдЙрдЯ рдкрд╕рдВрдж рд╣реИ: рдЕрдВрдЧреВрдареЗ рдФрд░ рдХреНрд╖рдорддрд╛ рдХреЗ рддрд╣рдд рд╕реАрдПрдордбреА (Ctrl), рдмрд┐рдирд╛ рдЫрд╛рдпрд╛рд╡рд╛рдж рдХреЗ, рд╕реАрдзреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ CapsLock рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓рд┐рдирдХреНрд╕ setxkbmap
рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gnome-tweak-tool
рдпреВрдЖрдИ рдореЗрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреАрдмреЛрд░реНрдб рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ?

рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ, рдмрд╛рд╣рд░реА рдХреАрдмреЛрд░реНрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
- рддреГрддреАрдп-рдкрдХреНрд╖ рдХреАрдмреЛрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рд╣рд░реА рдХреАрдмреЛрд░реНрдб рд╣реЗрд▓реНрдкрд░ ред
- / 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.
рд╣рдо рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдПрдХрддреНрд░ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдмрд╛рдж рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╣реИ ред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Settings -> Language & input -> Physical keyboard
рд╣рдорд╛рд░реЗ рд▓реЗрдЖрдЙрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ - Custom Keyboard Layout
ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд░реВрдЯ рдХреЗ рдмрд┐рдирд╛ рдмрд╛рд╣рд░реА рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рд╕рдВрднрд╡ рд╣реИред рд╕рднреА рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ: рд╡рд┐рди + рд╕реНрдкреЗрд╕ рдкрд░ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлрд░реНрдорд╡реЗрдпрд░ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд▓реЗрдЦ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╕рднреА рд╡рд┐рд╡рд░рдг рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред