feat(ios): Support for Bluetooth / external keyboard in Keyman for iPhone and iPad
Describe the bug
Keyman stable doesn't output the expected characters of the keyboard selected off of the keyboard menu both in-app and as a system keyboard. See the screen recording below.
https://user-images.githubusercontent.com/28331388/173553424-3e819a6d-4ac2-4efa-ad5e-7ce755a06022.mov
This behavior doesn't occur in Android.
Keyman for iPhone/iPad/Android:
- Device: iPad mini 6
- OS: iOS 15.5
- Keyman version: 14.0.288-stable
- Target application: Keyman and Notes
Sadly, this is due to a system limitation. 3rd party keyboards on Apple devices are not allowed to receive physical keystroke events. While we could do this in-app, this would create an expectation for users that we would be unable to fill.
So, until Apple changes that policy... it's out of our hands.
While we could do this in-app, this would create an expectation for users that we would be unable to fill.
I think there would be value in this, particularly for 3rd party apps that embed a Keyman keyboard such as the App Builders. Something to consider. Then if and when Apple get their act together, it's hopefully a small step to enable it for the system keyboard too.
See also #1018, #6071.
please check this article https://developer.apple.com/documentation/uikit/mac_catalyst/handling_key_presses_made_on_a_physical_keyboard
https://developer.apple.com/forums/thread/18122
below is a comment in the above thread. I have not verified the claim.
No I don't, but I recently was told that GBoard and SwiftKey can be used with iPad Pro Smart Keyboard. I don't own an iPad Pro so I couldn't test it. However, I did test with my iPad Air with Apple Bluetooth Keyboard and it doesn't work. I have been search the web for this and no luck for now... If anyone knows this, please kindly reply.
That's a very old thread that I've seen before -- the claim isn't correct as far as I know.
I should have checked the dates before commenting!
I myself had verified, that hardware keyboards do not work with iPad Pro in Dec 2021 in #6071
Moving to Future milestone as I suggest we implement in-app support.
https://community.software.sil.org/t/keyman-not-working-with-new-magic-keyboard-for-ipad-pro-2024/8781/2
One more user who encounters this issue: https://community.software.sil.org/t/i-have-installed-the-keyman-app-for-ipad-however-while-using-my-bluetooth-keyboard-it-doesn-t-render-indic/9081/1
Hello @mcdurdin, is it possible to prioritize this issue? I got a feedback from a user saying they need to use our Khmer keyboard which is not possible on iPad with external keyboard.
This is not possible. It needs functionality from Apple. Please ask them to open a feature request with Apple, and reference this issue.
Noted!
@mcdurdin, I got a suggestion from Bong @MakaraSok.
Most users don't know that this issue is happening because of Apple limitation. So can we create a notification to let users know about this when they try to use Keyman with external keyboard on iPad and request them to open a feature request with Apple? That would also urge Apple to fix this when they have a lot of pull requests.
The trick here is we don't know that the user is typing on the external keyboard! It could be possible within the Keyman app to check for external keyboard, and show a popup message there?
Yes, it would be great if we can do that.
Some if not many are using tablet as a computer replacement (at times, if not all the time), hence the only keyboard they have to use as opposed to the uncomfortable onscreen keyboard layout is the the magic keyboard or a third party keyboard. As of now, neither of these keyboards output the desired characters in their language. Each key press emits latin character which seems to be a glitch in Keyman.
This happens to a user who has just bought an M4 iPad Pro only to find out that it cannot be typed using a keyboard he is familiar with. The Khmer keyboard comes with iPadOS is of a different layout.
https://feedbackassistant.apple.com/feedback/15449265
OK, so plan here:
- See if we can detect external keyboard attached to iPad/iPhone when the Keyman app first opens, and show a banner about the limitation -- touching the banner would take users to a landing page on keyman.com with more detail.
- Implement hardware keyboard support in-app, which (a) lets us address any hardware keyboard compat issues w.r.t keystroke processing, and (b) allows users to use their hardware keyboard inside the keyman app and any other apps that may embed keyboards (in particular, app builder apps)
Targeting 19.0.
✉ Tamil Old typewriter does not work with a physical keyboard (10304#2)