ColinPitrat / caprice32

An emulator of the Amstrad CPC 8bit home computer range.
GNU General Public License v2.0
148 stars 32 forks source link

dead keys support #213

Open josergc opened 3 years ago

josergc commented 3 years ago

hi team! thank you for the great work!

I'm using gnu/linux with dead keys international keyboard. To type " and ' I need to press the corresponding key then space bar, however nothing happens in the emyulator beside the space bar. I saw there is a map file for the keyboard in the configuration. Are dead keys supported by the emulator? if yes, how could I modify the map files to provide support?

thank you in advance!

ColinPitrat commented 3 years ago

Hi,

no dead keys are not supported yet. Mappings are based on key codes. In SDL2, there are (I simplify but that's more or less the idea) 3 ways to get inputs:

One evolution I had in mind since the migration to SDL2 was to add a "type" column in mappings to specify if the mapping is based on a scan codes, a key code or a text input. This would solve your problem.

I don't have any concrete plan to work on it though, it's just something in the back of my mind.

josergc commented 3 years ago

thank you @ColinPitrat ! I was also wondering how it could be implemented, I was thinking in this situation: when playing a game, these keys should work as usual, but when typing dead keys have to kept in mind, should the system work in this way?

ColinPitrat commented 3 years ago

No, Caprice just emulates the CPC and doesn't know if a game is running or something else (basic, text processor, spreadsheet...). It translates a keypress (or here it would be a text entry) to some keys being pressed on the CPC keyboard. So it would translate ' + space as ' being pressed. If the key is used in a game, especially with repetition, this would be unusable indeed.