VICE home Knowledge Base - Article 20-006


[Bug] Wrong keystrokes in CP/M mode on x128


The information in this article applies to the following versions of VICE:

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

Last Reviewed: September 18, 2002