Opened 20 months ago
Last modified 2 months ago
#15356 new feature request
AGS: Implement custom keymapper for a selection of games
| Reported by: | antoniou79 | Owned by: | |
|---|---|---|---|
| Priority: | high | Component: | Engine: AGS |
| Version: | Keywords: | ||
| Cc: | Game: |
Description
Some AGS games (eg. "Gemini Rue") use keyboard keys for some in-game actions and include a keymapper section in their (native) settings for those keys.
In the case of Gemini Rue, which I can test with, this keymapper only allows mapping of keyboard keys to actions.
If this keymapper module could be exposed to the ScummVM GUI and merged with ScummVM's keymapper, it would allow mapping additional keys to these actions (eg. controller input keys, special backend-specific keys), which would improve the gameplay's user friendliness.
This was brought up on the ScummVM forums on the Android subforum here: https://forums.scummvm.org/viewtopic.php?p=99875#p99875
The issue / feature request is not Android specific, though, especially considering that it will be an issue on any platform when playing with just a controller.
Other AGS games mentioned on Discord that could use such a feature would be "Until I Have You", "The Art of Dying".
https://discord.com/channels/581224060529148060/808781947002290256/1280150743936012311
Change History (5)
comment:1 by , 18 months ago
| Priority: | normal → high |
|---|
comment:2 by , 9 months ago
follow-up: 4 comment:3 by , 2 months ago
Hi, I’m a second-year Computer Engineer student at Unibo. I am interested in contributing to this issue for GSoC 2026 to bridge the AGS input logic with the ScummVM Keymapper API.
I have been analyzing the engine source and I have a technical question: for games like "Gemini Rue", is it better to intercept keyboard events at the script engine level (e.g., on_key_press) or should the actions be injected directly into the main loop in engines/ags/engine/main/game_run.cpp? This will help me define the correct architecture for my proposal.
Thank you for your eventual consideration.
comment:4 by , 2 months ago
Replying to GiulioRinalduzzi:
Hi, I’m a second-year Computer Engineer student at Unibo. I am interested in contributing to this issue for GSoC 2026 to bridge the AGS input logic with the ScummVM Keymapper API.
I have been analyzing the engine source and I have a technical question: for games like "Gemini Rue", is it better to intercept keyboard events at the script engine level (e.g., on_key_press) or should the actions be injected directly into the main loop in engines/ags/engine/main/game_run.cpp? This will help me define the correct architecture for my proposal.
I am not too familiar with AGS engine, so personally I don't have any recommendation on this. However, I do suggest that you discuss this on the ScummVM Discord, channel: #engine-ags
comment:5 by , 2 months ago
Hi Giulio, the AGS engine in ScummVM is based on the upstream AGS implementation
https://github.com/adventuregamestudio/ags
Currently we're in sync with version 3.6.1, but in the coming months the engine will be upgraded to 3.6.2, which will include significant changes.
So, if you start working now on this feature there's a concrete risk that your implementation won't be applicable or will require additional work.
If you are still interested in the keymapper, I'd recommend first working on some of the other engines that still lack the functionality.
Also, you should join ScummVM's Discord channel and introduce yourself in the #scummvm-gsoc channel.

All of stranga games (just ignore them, just ignore them Brea's story, My big sister, Ashina the red witch, Ashley Pines and their assorted remakes and enhanced editions) could use this. These AGS games are set up to use the keyboard as a pseudo controller.
Trouble is,