Open Konubinix opened 10 months ago
Do you see the physical keyboard in the android settings ? Can you change its keymap to another (a system one) ?
Thank you for the fast reply.
I can switch to english and the keyboard will be "qwerty" and switch to french and the keyboard will be "azerty". Yet, with "french bépo", the keyboard is in "qwerty".
I will get some screenshots and a more detailed explanation of what I tried so that you have a more precise picture.
Can you grep your logcat (ideally from boot) for KeyCharacterMap, KeyLayoutMap and Keyboard ?
Something like this:
adb logcat | grep -E 'KeyCharacterMap|KeyLayoutMap|Keyboard'
Since the key character map is of type "Overlay", your base keyboard layout should be qwerty (what's in Generic.kl
), but since you changed the layout, I don't know what's happening. It's also probable that in later Android versions type Overlay is not sufficient anymore, and a type Full might be needed. I'll see if I can reproduce once I find a bluetooth keyboard (mine is dead) or a male type C <-> female type A adapter.
I did a test on a more recent Android version, and it still works properly. I'll try to upload updated instructions.
I have updated https://bepo.fr/wiki/BepoAndroid with new screenshots.
Thank you for helping me untangle this issue.
First, the result of logcat when plugging the keyboard
12-18 11:46:05.689 0 0 I usb 1-1 : Product: USB Keyboard
12-18 11:46:05.689 0 0 I usb 1-1 : Manufacturer: TypeMatrix.com
12-18 11:46:05.714 0 0 I input : TypeMatrix.com USB Keyboard as /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.0/0003:1E54:2030.000B/input/input19
12-18 11:46:05.772 0 0 I hid-generic 0003: 1E54:2030.000B: input,hidraw0: USB HID v1.10 Keyboard [TypeMatrix.com USB Keyboard] on usb-xhci-hcd.0.auto-1/input0
12-18 11:46:05.807 0 0 I input : TypeMatrix.com USB Keyboard as /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.1/0003:1E54:2030.000C/input/input20
12-18 11:46:05.872 0 0 I hid-generic 0003: 1E54:2030.000C: input,hidraw1: USB HID v1.10 Device [TypeMatrix.com USB Keyboard] on usb-xhci-hcd.0.auto-1/input1
12-18 11:46:09.899 2218 2323 D EventHub: No input device configuration file found for device 'TypeMatrix.com USB Keyboard'.
12-18 11:46:09.904 2218 2323 I EventHub: New device: id=20, fd=325, path='/dev/input/event9', name='TypeMatrix.com USB Keyboard', classes=0x80000083, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
12-18 11:46:09.904 2218 2323 I InputReader: Device added: id=20, eventHubId=20, name='TypeMatrix.com USB Keyboard', descriptor='37bdb20fbb08be6dfed9189927bb1d23f8daa007',sources=0x80000101
12-18 11:46:09.942 2218 2323 D EventHub: No input device configuration file found for device 'TypeMatrix.com USB Keyboard'.
12-18 11:46:09.952 2218 2323 I EventHub: New device: id=21, fd=333, path='/dev/input/event10', name='TypeMatrix.com USB Keyboard', classes=0x80000121, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
12-18 11:46:09.953 2218 2323 I InputReader: Device added: id=21, eventHubId=21, name='TypeMatrix.com USB Keyboard', descriptor='fb198ba3ff3e1f7fc99e621c028849c7fc05afb0',sources=0x01000311
12-18 11:46:09.985 4453 4453 I PCKeyboard: onConfigurationChanged()
12-18 11:46:10.340 4453 4453 I PCKeyboard: onConfigurationChanged()
Then, let me show you what I can see when trying to use the bépo layout. When plugging the keyboard, there is a notification suggesting to configure it.
I change the layout from this
To this
When I type «bépo», I get this
Then, I tried using a French layout.
When I type "bépo", I get this
That sounds promising, but in fact it is very limited, and I cannot use accented characters, "é" gives "2" and "S-é" gives "@", like in a qwerty layout. To me, this is a hint that some new layout was use, but not some new key character map.
Anyway, I switched back to "French (bépo)" and tried to configure the virtual keyboards as well.
I selected the AOSP keyboard
Then configured it in the settings
So that in the end it shows this
But still no luck
The virtual keyboard shows bépo, but the hardware one still shows "qwer" when pressing "bépo".
At that point, I run logcat again, out of curiosity I get this
12-18 12:11:09.824 0 0 I usb 1-1 : Product: USB Keyboard
12-18 12:11:09.824 0 0 I usb 1-1 : Manufacturer: TypeMatrix.com
12-18 12:11:09.848 0 0 I input : TypeMatrix.com USB Keyboard as /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.0/0003:1E54:2030.000F/input/input23
12-18 12:11:09.907 0 0 I hid-generic 0003: 1E54:2030.000F: input,hidraw0: USB HID v1.10 Keyboard [TypeMatrix.com USB Keyboard] on usb-xhci-hcd.0.auto-1/input0
12-18 12:11:09.938 0 0 I input : TypeMatrix.com USB Keyboard as /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.1/0003:1E54:2030.0010/input/input24
12-18 12:11:09.951 2218 2323 D EventHub: No input device configuration file found for device 'TypeMatrix.com USB Keyboard'.
12-18 12:11:09.956 2218 2323 I EventHub: New device: id=24, fd=328, path='/dev/input/event9', name='TypeMatrix.com USB Keyboard', classes=0x80000083, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
12-18 12:11:09.962 2218 2323 I InputReader: Device added: id=24, eventHubId=24, name='TypeMatrix.com USB Keyboard', descriptor='37bdb20fbb08be6dfed9189927bb1d23f8daa007',sources=0x80000101
12-18 12:11:09.992 2218 2323 D EventHub: No input device configuration file found for device 'TypeMatrix.com USB Keyboard'.
12-18 12:11:09.993 0 0 I hid-generic 0003: 1E54:2030.0010: input,hidraw1: USB HID v1.10 Device [TypeMatrix.com USB Keyboard] on usb-xhci-hcd.0.auto-1/input1
12-18 12:11:09.996 2218 2323 I EventHub: New device: id=25, fd=333, path='/dev/input/event10', name='TypeMatrix.com USB Keyboard', classes=0x80000121, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
12-18 12:11:10.005 2218 2323 I InputReader: Device added: id=25, eventHubId=25, name='TypeMatrix.com USB Keyboard', descriptor='fb198ba3ff3e1f7fc99e621c028849c7fc05afb0',sources=0x01000311
12-18 12:11:10.102 10106 10106 W SubtypeLocaleUtils: KeyboardLayoutSet not found, use QWERTY: locale=en_AU extraValue=TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable
12-18 12:11:10.102 10106 10106 W SubtypeLocaleUtils: KeyboardLayoutSet not found, use QWERTY: locale=hu_ZZ extraValue=AsciiCapable,SupportTouchPositionCorrection,EmojiCapable
12-18 12:11:10.183 10106 10106 W SubtypeLocaleUtils: KeyboardLayoutSet not found, use QWERTY: locale=en_AU extraValue=TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable
12-18 12:11:10.183 10106 10106 W SubtypeLocaleUtils: KeyboardLayoutSet not found, use QWERTY: locale=hu_ZZ extraValue=AsciiCapable,SupportTouchPositionCorrection,EmojiCapable
There is a message telling that some KeyboardLayoutSet was fallen back to QWERTY. What do you think about this? Googling it did not help me.
In your examples, you use the GBoard virtual keyboard, so I gave it a go, hoping that it might unlock something somehow (looks like a desperate move to me :-)).
Its settings look like this
I did not find any settings to use bépo in this keyboard. Yet, even in azerty, the physical keyboard still writes "qwer".
At that point, I run logcat again, just in case. It shows more things, but nothing useful I would say.
12-18 12:21:21.064 0 0 I usb 1-1 : Product: USB Keyboard
12-18 12:21:21.064 0 0 I usb 1-1 : Manufacturer: TypeMatrix.com
12-18 12:21:21.094 0 0 I input : TypeMatrix.com USB Keyboard as /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.0/0003:1E54:2030.0013/input/input27
12-18 12:21:21.154 0 0 I hid-generic 0003: 1E54:2030.0013: input,hidraw0: USB HID v1.10 Keyboard [TypeMatrix.com USB Keyboard] on usb-xhci-hcd.0.auto-1/input0
12-18 12:21:21.186 0 0 I input : TypeMatrix.com USB Keyboard as /devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.1/0003:1E54:2030.0014/input/input28
12-18 12:21:21.244 0 0 I hid-generic 0003: 1E54:2030.0014: input,hidraw1: USB HID v1.10 Device [TypeMatrix.com USB Keyboard] on usb-xhci-hcd.0.auto-1/input1
12-18 12:21:25.277 2218 2323 D EventHub: No input device configuration file found for device 'TypeMatrix.com USB Keyboard'.
12-18 12:21:25.283 2218 2323 I EventHub: New device: id=28, fd=331, path='/dev/input/event9', name='TypeMatrix.com USB Keyboard', classes=0x80000083, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
12-18 12:21:25.291 2218 2323 I InputReader: Device added: id=28, eventHubId=28, name='TypeMatrix.com USB Keyboard', descriptor='37bdb20fbb08be6dfed9189927bb1d23f8daa007',sources=0x80000101
12-18 12:21:25.326 2218 2323 D EventHub: No input device configuration file found for device 'TypeMatrix.com USB Keyboard'.
12-18 12:21:25.332 2218 2323 I EventHub: New device: id=29, fd=338, path='/dev/input/event10', name='TypeMatrix.com USB Keyboard', classes=0x80000121, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false,
12-18 12:21:25.358 2218 2323 I InputReader: Device added: id=29, eventHubId=29, name='TypeMatrix.com USB Keyboard', descriptor='fb198ba3ff3e1f7fc99e621c028849c7fc05afb0',sources=0x01000311
12-18 12:21:25.381 11326 11326 I GoogleInputMethodService: GoogleInputMethodService.discardAllKeyboardViewAndInputView():1733 discardAllKeyboardViewAndInputView()
12-18 12:21:25.382 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jeu
12-18 12:21:25.382 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jeu
12-18 12:21:25.384 11326 11372 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214026 -> 0_resource_name_obfuscated : WaitTime = 1 ms : RunTime = 1 ms
12-18 12:21:25.391 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jkm
12-18 12:21:25.391 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jkm
12-18 12:21:25.392 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jom
12-18 12:21:25.392 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jom
12-18 12:21:25.393 11326 11326 I KeyboardModeManager: KeyboardModeManager.setKeyboardViewHolderProvider():569 setInputView() : supportsOneHandedMode=true
12-18 12:21:25.394 11326 11326 I NormalModeController: NormalModeController.getKeyboardBodyViewHolderPaddingBottom():89 currentPrimeKeyboardType:SOFT systemPaddingBottom:-1
12-18 12:21:25.394 11326 11326 I KeyboardModeManager: KeyboardModeManager.setKeyboardViewHolderProvider():559 setInputView() : entry=qpu{languageTag=fr-FR, variant=azerty, hasLocalizedResources=true, conditionCacheKey=_device=phone_device_size=default_enable_dynamic_diacritic_key=false_enable_more_candidates_view_for_multilingual=false_enable_nav_redesign_for_expression=false_enable_navbar_motion=false_enable_number_row=false_enable_preemptive_decode=true_enable_secondary_symbols=false_expressions=normal_four_or_more_letter_rows=false_keyboard_mode=normal_language=fr-FR_orientation=portrait_physical_keyboard=nokeys_rtl_layout=false_show_secondary_digits=true_show_suggestions=true_split_with_duplicate_keys=true_variant=azerty, imeDef.stringId=ime_french, imeDef.className=com.google.android.apps.inputmethod.libs.latin5.LatinIme, imeDef.languageTag=fr}
12-18 12:21:25.394 11326 11371 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214039 -> 0_resource_name_obfuscated : WaitTime = 1 ms : RunTime = 0 ms
12-18 12:21:25.405 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onSuccess():529 KeyboardGroupManager destroyed in jeu.
12-18 12:21:25.405 11326 11369 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214032 -> 0_resource_name_obfuscated : WaitTime = 1 ms : RunTime = 0 ms
12-18 12:21:25.405 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onSuccess():529 KeyboardGroupManager destroyed in jkm.
12-18 12:21:25.405 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onSuccess():529 KeyboardGroupManager destroyed in jom.
12-18 12:21:25.454 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jeu
12-18 12:21:25.454 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jeu
12-18 12:21:25.457 11326 11364 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214026 -> 0_resource_name_obfuscated : WaitTime = 0 ms : RunTime = 2 ms
12-18 12:21:25.458 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jkm
12-18 12:21:25.458 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jkm
12-18 12:21:25.459 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jom
12-18 12:21:25.459 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jom
12-18 12:21:25.463 11326 11326 I StyledKeyboardTheme: StyledKeyboardTheme.<init>():116 Pref: [], themeName: [assets:theme_package_metadata_google_blue_dark.binarypb], darkMode: [true], cacheKey: [builtin_google_blue_dark.binarypb]
12-18 12:21:25.463 11326 11326 I KeyboardThemeProvider: KeyboardThemeProvider.applyKeyboardTheme():27 Apply keyboard theme: theme_border_bottom4dp_stylesheet_dark_phone_350_builtin_google_blue_dark.binarypb_port
12-18 12:21:25.466 11326 11370 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214039 -> 0_resource_name_obfuscated : WaitTime = 6 ms : RunTime = 1 ms
12-18 12:21:25.468 11326 11365 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214032 -> 0_resource_name_obfuscated : WaitTime = 8 ms : RunTime = 1 ms
12-18 12:21:25.523 11326 11326 I KeyboardHeightUtil: KeyboardHeightUtil.getKeyboardHeightRatio():176 systemKeyboardHeightRatio:1.000000.
12-18 12:21:25.536 11326 11326 I GoogleInputMethodService: GoogleInputMethodService.discardAllKeyboardViewAndInputView():1733 discardAllKeyboardViewAndInputView()
12-18 12:21:25.536 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jeu
12-18 12:21:25.536 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jeu
12-18 12:21:25.537 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jkm
12-18 12:21:25.537 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jkm
12-18 12:21:25.537 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.maybeDestroyExistingKeyboardGroupManager():515 Destroy existing keyboard group manager in jom
12-18 12:21:25.537 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension.createKeyboardGroupManagerListenableFuture():119 Create keyboard group manager listenable future in jom
12-18 12:21:25.538 11326 11369 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214026 -> 0_resource_name_obfuscated : WaitTime = 0 ms : RunTime = 1 ms
12-18 12:21:25.538 11326 11326 I KeyboardModeManager: KeyboardModeManager.setKeyboardViewHolderProvider():569 setInputView() : supportsOneHandedMode=true
12-18 12:21:25.539 11326 11369 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214032 -> 0_resource_name_obfuscated : WaitTime = 1 ms : RunTime = 1 ms
12-18 12:21:25.539 11326 11326 I NormalModeController: NormalModeController.getKeyboardBodyViewHolderPaddingBottom():89 currentPrimeKeyboardType:SOFT systemPaddingBottom:-1
12-18 12:21:25.540 11326 11369 I KeyboardGroupDefParser: KeyboardGroupDefParser.parseKeyboardGroupDef():83 parseKeyboardGroupDef() 2132214039 -> 0_resource_name_obfuscated : WaitTime = 1 ms : RunTime = 1 ms
12-18 12:21:25.540 11326 11326 I KeyboardModeManager: KeyboardModeManager.setKeyboardViewHolderProvider():559 setInputView() : entry=qpu{languageTag=fr-FR, variant=azerty, hasLocalizedResources=true, conditionCacheKey=_device=phone_device_size=default_enable_dynamic_diacritic_key=false_enable_more_candidates_view_for_multilingual=false_enable_nav_redesign_for_expression=false_enable_navbar_motion=false_enable_number_row=false_enable_preemptive_decode=true_enable_secondary_symbols=false_expressions=normal_four_or_more_letter_rows=false_keyboard_mode=normal_language=fr-FR_orientation=portrait_physical_keyboard=qwerty_rtl_layout=false_show_secondary_digits=true_show_suggestions=true_split_with_duplicate_keys=true_variant=azerty, imeDef.stringId=ime_french, imeDef.className=com.google.android.apps.inputmethod.libs.latin5.LatinIme, imeDef.languageTag=fr}
12-18 12:21:25.548 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onSuccess():529 KeyboardGroupManager destroyed in jeu.
12-18 12:21:25.548 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onSuccess():529 KeyboardGroupManager destroyed in jkm.
12-18 12:21:25.549 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onSuccess():529 KeyboardGroupManager destroyed in jom.
12-18 12:21:25.550 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onFailure():537 Failed to load KeyboardGroupManager in jeu.
12-18 12:21:25.550 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onFailure():537 Failed to load KeyboardGroupManager in jkm.
12-18 12:21:25.550 11326 11326 I AbstractOpenableExtension: AbstractOpenableExtension$3.onFailure():537 Failed to load KeyboardGroupManager in jom.
Do you have any idea of what I could try next?
Just a quick check: when you select AZERTY, can you type accents properly ?
No I cannot. The 1234567890 row behaves like in qwerty.
Interesting. It might be a bug in your Android distribution. I recommend you report it to LineageOS. A few things to check:
Otherwise the bépo key character map cannot work.
Anisse Astier @.***> writes:
Interesting. It might be a bug in your Android distribution. I recommend you report it to LineageOS. A few things to check:
I fear this is not possible, as whyred is not supported anymore.
- has Generic.kl been modified from the original AOSP version: https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/data/keyboards/Generic.kl
They are a few minor differences, but nothing alarming. (see attached diff)
- is the AZERTY keymap the same as in the AOSP version: https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/packages/InputDevices/res/raw/keyboard_layout_french.kcm
There are no files called keyboard_layout_XX.kcm in my phone.
I tried
$ find /data -name 'keyboard_layout*kcm'
and
$ find /system -name 'keyboard_layout*kcm'
I tried downloading keyboard_layout_french.kcm and putting it into /system/usr/keychars/, but it did not change anything.
Otherwise the bépo key character map cannot work.
Do you think it might be related to the fact there are no kcm files anywhere in the phone?
I've been using bepo-android for a long time now.
In a device I recently owned though, it does not work. It is a redmi note 5 (whyred) with the last official lineage os 18 before it became unmaintained (taken from https://xdaforums.com/t/rom-r-official-lineageos-18-1-for-xiaomi-redmi-note-5-pro-whyred.4109253/page-63).
Actually, I think this is not an issue of bepo-android, because whatever content I put in /system/usr/keychars/Vendor_1e54_Product_2030.kcm (I have a TypeMatrix keyboard), the kcm content is not taken into account.
But, even though it is not an issue with bepo-android, I'm asking if you have an idea of how I could investigate this issue.
I'm sure the kcm is correctly read, because logcat tells me so
12-13 17:05:16.134 2217 2326 I EventHub: New device: id=43, fd=330, path='/dev/input/event10', name='TypeMatrix.com USB Keyboard', classes=0x80000121, configuration='', keyLayout='/system/usr/keylayout/Vendor_1e54_Product_2030.kl', keyCharacterMap='/system/usr/keychars/Vendor_1e54_Product_2030.kcm', builtinKeyboard=false,
I created the .kl and the .kcm files copying the Generic ones and tried to edit them afterwards.
I fell back adding some bindings in the .kl file, but, as you suggested a long time ago in your post (https://anisse.astier.eu/bepo-android.html), this is barely usable.
I wrote my notes in https://konubinix.eu/braindump/posts/4a6b0994-30f4-47d9-bb80-8dec73b4c0c2/?title=android_11_key_character_map_vs_keylayout_vs_whyred_to_use_bepo.