Просмотр полной версии : Процедура против залипания клавиатуры
Black Cat / Era CG
05.12.2017, 23:26
Суть такая. Хочется написать такую процедурку, которая будет вызываться сразу после нажатия любой клавиши, и будет крутить цикл, пока клавиша не будет отпущена. Вроде просто, но чета не выходит...
Подскажите?
делай два вызова, один крутится пока что-то ненажалось, второй крутится когда что-то нажато
loop1 call keys
jr nz,loop1
loop2 call keys
jr z,loop2
надеюсь про xor a; in a,(#fe) + отброс ненужных битов ты знаешь
иногда отсутствие такого варианта реально бесит.
например в R-TYPE для выбора клавиш управления надо нажать в меню ENTER,
если последняя выбранная кнопка (смена оружия) будет ENTER
игра её назначит, быстро выйдет в меню и снова будет переход в режим выбора клавиш
DenisGrachev
06.12.2017, 04:17
Все эти беды от "дребезга" клавиатуры, нужен "антидребезг" или deBounce по буржуйски, типо того что в ПЗУ :) Я пользуюсь таким, из z88dk 63248
Нужно только настроить параметры под себя KeyDebounce, KeyStartRepeat, KeyRepeatPeriod
Полноценный обработчик клавиш с антидребезгом.
Для ZX-клавиатуры. https://github.com/salextpuru/sdcc-noinit/blob/master/libsrc/libzxkbd/
Для PS/2-клавиатуры. https://github.com/salextpuru/sdcc-noinit/tree/master/libsrc/libps2
там все на АСМе в основном, но фронтенд на С.
Если подойдёт, конечно. Там нет обработки одновременного нажатия нескольких клавиш. Только капсы и шифты.
Раскладка KOI8-R. Таблички легко поменять.
Примеры-тесты рядом:
https://github.com/salextpuru/sdcc-noinit/blob/master/apps/test-zxkbd
https://github.com/salextpuru/sdcc-noinit/tree/master/apps/test-ps2kbd
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot