[Bug] Wrong keystrokes in CP/M mode on x128
The information in this article applies to the following versions of VICE:
- x128 on all plattforms except Windows
SYMPTOMS
Sometimes, the wrong keys appear when you press a key with x128 in CP/M mode, for example, you press an : and you get a [.
CAUSE
This is a known problem with the keyboard emulation that only pops up using CP/M. A fix does not exist.
If you have symbolic keyboard mapping enabled, the emulator has to "de-shift" some keys. For example, if you want to get a ":" on a german keyboard, you have to press "." and shift simulaneously. Then, the emulator sees the events "shift pressed" and ":" pressed.
At the moment you have pressed shift, the emulator does not know what key you are using next (or even if you are actually going to use another key before releasing shift again), so it has to deliver this state to the keyboard matrix.
If you press "." then to achive a ":", the emulator has to take back the shift key although it is still pressed, as the ":" is an unshifted key in the c64/c128 keyboard matrix.
This works for c64 and c128 in c64 mode, but for some strange reason the CP/M keyboard routine does not like this. Perhaps it is using the shift state of the previous keyboard interrupt or something like this.
SOLUTION
There is no real solution to date, but there's a work-around for the problem with the ":". Create your own positional keymap, so you do not have to press shift to get the ":" key. Take a look at C128/position.vkm.
NOTE
On Windows, you won't notice this behaviour as the default keyboard map is positional here.
AFFECTED
We do not know of other programs which were affected by this bug, too.
STATUS
The VICE team has confirmed this to be a problem in the VICE versions listed at the beginning of this article.
REVISION
- September 18, 2002: Original release of this document
