MiSTer-devel / C64_MiSTer

112 stars 56 forks source link

Auto shifted cursor keys generate BOTH shifts. This breaks C64 OS file selection. #140

Closed gillham closed 1 year ago

gillham commented 1 year ago

C64 OS (https://c64os.com/c64os) differentiates between left-shift and right-shift. From https://c64os.com/c64os/usersguide/userinterface we have this: "All text input controls have selections and built-in support for cut, copy and paste from the clipboard, without any extra help from the Application. The direction of the cursor keys is controlled by the right SHIFT key. CURSOR UP is therefore RIGHT-SHIFT+CURSOR DOWN, and CURSOR LEFT is RIGHT-SHIFT+CURSOR RIGHT. The left SHIFT key is used to modify selections. "

So C64 OS expects CURSOR UP (and LEFT) to only generate RIGHT-SHIFT, but currently both LEFT-SHIFT and RIGHT-SHIFT are generated. Since C64 OS uses LEFT-SHIFT to extend selections, this means pressing UP or LEFT is also attempting to extend a selection by default.

This behavior can be easily seen using "Keyboard IO Routine V2.5" from https://csdb.dk/release/?id=120949 mister-kbdtest

Would it be possible to have the UP arrow and LEFT arrow only generate RIGHT-SHIFT?

gillham commented 1 year ago

I guess this might be more of a feature request, maybe some other games or applications would conflict and this should be an adjustable setting in the OSD?

Anyway, let me know your thoughts. Thanks.

sorgelig commented 1 year ago

I see. I will add an option.

gillham commented 1 year ago

Awesome Alexey! This works great now with C64 OS. I tested a few other programs, not that I expected them to notice, with the modifier set to R Shift. Works well. Thank you!