Opened 4 years ago

Last modified 2 weeks ago

#12410 new defect

KEYMAPPER: `SHIFT`+`.` is modified to `.`

Reported by: ZvikaZ Owned by:
Priority: normal Component: Common
Version: Keywords:
Cc: Game:

Description (last modified by ZvikaZ)

When pressing SHIFT+. in a game with a parser, such as PQ1 (AGI) or SQ3 (SCI), it's treated as if only a . was pressed.

If I understand correctly, this is done intentionally - in order to allow using SHIFT+. as a Skip line action, for engines that use it, like SCUMM.
However, the Skip line action is currently added to all engines, even though probably most of them don't use it.
Thus, engines such as AGI and SCI (and probably others with text parser, I haven't checked) have now an unwanted behaviour.

IMO, there are two options here:

  • Give up the functionality of recognizing SHIFT+. as . (https://github.com/scummvm/scummvm/pull/2812 attempts to do that, it probably can be done in a better way)
  • Don't add Skip line to all engines, but only to those that really use it (do we know which engines really use it?)

Note: I'm not sure that 'Common' component is accurate, but it's not related to one engine or one platform - the issue is in the Keymapper, as far as I understand

Change History (3)

comment:1 by ZvikaZ, 4 years ago

Description: modified (diff)

comment:2 by criezy, 4 years ago

It looks like it might be related to bug #11504

comment:3 by eriktorbjorn, 2 weeks ago

The solution suggested by https://wiki.scummvm.org/index.php?title=Keymapper is to "disable the keymap that handles key shortcuts while a text input widget is focused".

But from what I understand, that could be any keymap. Or none of them.

But that's what at least some of the engines do, which others don't.

And I really don't understand why, when defining "." as the "Skip line" key, that also defines Shift+".", Ctrl+".", Alt+".", Ctrl+Alt+".", etc. as the "Skip line" key. But that seems to be what kKeymapMatchPartialis all about in Keymap::getMappedActions(), unless I'm missing something obvious.

Note: See TracTickets for help on using tickets.