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 tag2015, 18 months ago

Priority: normalhigh

comment:2 by i30817, 9 months ago

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,

  1. The scummvm remappings appear with 'simpler' names that make the keycode you need to map completely obscure and the simple name doesn't actually correspond to things in the game (for instance to access options in my big sister you have esc, which is skip in the remappings).
  2. some of the keys required don't actually have a mapping in the right side (the skip side), so you can't even map some actions to the onscreen virtual gamepad (not enough keys there too I think). For instance some of these games have shift to run, but you can't select shift as a mapping.

comment:3 by GiulioRinalduzzi, 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.

in reply to:  3 comment:4 by antoniou79, 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 tag2015, 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.

Note: See TracTickets for help on using tickets.