Opened 2 years ago

Closed 22 months ago

#13958 closed defect (fixed)

BACKENDS: On-screen keyboard (squeekboard) on mobile linux doesn't work

Reported by: chri2 Owned by: chri2
Priority: normal Component: Port: Linux
Version: Keywords:
Cc: chri2 Game:

Description

On the Librem5 (arm64, imx8) running PureOS (a Debian derivate without any non-GPL software) and Phoc/Phosh scummvm runs fine and Monkey Island is well playable.

But keypresses using the on-screen keyboard [squeekboard https://developer.puri.sm/Librem5/Software_Reference/Environments/Phosh/Squeekboard.html] are not recognized by scummvm making it impossible without external attached keyboard (e.g. bluetooth) to save a game or change the speed or - in general - interact with the scummvm gui.

Tested on 2.2.0 debian package and flatpak 2.6.1.

Change History (5)

comment:1 by chri2, 2 years ago

@sebastian.krzyszkowiak:talk.puri.sm - one of the developers of squeekboard remarks on the Librem5 matrix channel:

"SDL versions older than 2.26 have broken keymap handling. text input API works as that doesn't go through keymaps, but any keysyms are garbled since squeekboard generates arbitrary keymaps

keys like ESC, F1 etc. won't work on older SDL with squeekboard - if they do, it's pure luck ;)"

[...]

"squeekboard uses two distinct protocols to send events depending on which key you use, and there are several ways SDL apps can handle input. on older SDL some combinations work and some don't

and some may work or not depending on which keycodes squeekboard generates

with 2.26, I believe it should Just Work™ - or at least I haven't seen a broken case yet (but I haven't tried very hard to find it either)"

me:

"Let's say I'll map <m> for accessing scummvm - should that work reliably? In fact I tried, but it didn't work reliably (sometimes, yes, sometimes no - same as e.g. <esc>)."

Sebastian:

"no

(well, depends on how exactly scummvm handles input events, but I doubt it does it in a way that makes any difference here)

you can compile SDL 2.26 and use SDL_DYNAMIC_API to load it instead of the system one

that should work reliably"


If I find out how to do this (I'm not a developer) and find the time to try I'll add the outcome here.

Hope this information helps a bit to sort this issue.

comment:2 by chri2, 2 years ago

On-screen keyboard is working with SDL 2.26.1.

I had to install libasound2-dev libpulse-dev before compiling SDL 2.26.1 on my Librem5.

If scummvm is started with

SDL_DYNAMIC_API=<PATH>/libSDL2-2.0.so.0.2600.1 scummvm

the key-presses made on the squeekboard on-screen keyboard are recognized.

comment:3 by tag2015, 23 months ago

Game: Monkey Island 1
Priority: blockernormal

Hi, thanks for the report.
So you managed to solve the problem? Anyway, if the issue is caused by squeekboard and the old version of sdl which comes with pureOS, it is not a ScummVM bug.
I suppose not only ScummVM is affected, so maybe it would be better to indicate the issue on the pureOS wiki/bugtracker ? (or whatever is available)

comment:4 by tag2015, 23 months ago

Summary: on-screen keyboard (squeekboard) on mobile linux doesn't workBACKENDS: On-screen keyboard (squeekboard) on mobile linux doesn't work

in reply to:  3 comment:5 by chri2, 22 months ago

Owner: set to chri2
Resolution: fixed
Status: newclosed

Replying to tag2015:

So you managed to solve the problem?

Yes. I wrote down how to get scummvm working under Mobian on the Pinephone and PureOS on the Librem5 in case someone is running into the same issue until the distros updates SDL: https://chrichri.ween.de/articles/9123ba8/monkeyisland-on-librem5-and-pinephone

This ticket can be closed.

Note: See TracTickets for help on using tickets.