Scancode vs physical position

By bore

Master (161)

Аватар пользователя bore

27-10-2011, 20:21

Does anyone know if there is a reliable way to know if a key at a specific physical position have been pressed?
Say for example that I would like to know if the key next to left shift have been pressed regardless of whatever is printed on the plastic button.
Can I always obtain this from bit 7 of row 5 of the keyboard readout or are different MSX keyboard wired differently?

Для того, чтобы оставить комментарий, необходимо регистрация или !login

By Manuel

Ascended (19273)

Аватар пользователя Manuel

27-10-2011, 22:49

Yep, they can be wired differently. For example, the Philips VG 8010 has a completely different wiring. Even Konami fell into this trap, try to press the 1 or 2 key in some of their old games on this machine... it won't work...

On the other hand: most have quite the standard keyboard matrix... see the MAP for some details.

By hit9918

Prophet (2927)

Аватар пользователя hit9918

28-10-2011, 23:40

I did read about &h2C, and the answer is: "it does not really work".

What to use, CHGET &h9f "inkey()"?
That does not work for permanently pressed game keys like steering.
But it works for keys 1 2 N M to mean things like game start, penguin shoot, take gradius weapon.

So, when you keep pressed "penguin shoot" key, KONAMI cannot force you to have to press and release key for every shot, you can just keep pressing the key and then BIOS keyrepeat makes autofire Tongue

When you keep pressed space in gradius, you get a reduced shooting rate that is slower than keyrepeat rate.
This is only possible because there is a special BIOS function for the space key, the trigger function.

p.s. I slightly remember that penguin shoot rate still was faster with individual key presses, so maybe they did not do it with inkey.

By sd_snatcher

Prophet (3642)

Аватар пользователя sd_snatcher

29-10-2011, 16:57

@Manuel

Very unexpected! Until now I also assumed that at least a very basic part of the layout was pretty common between all layouts.