1
0
Fork 0

Keep repeating a pressed key if another key is released. Thanks jazztickets and robertmo

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3740
This commit is contained in:
Peter Veenstra 2011-08-15 12:21:36 +00:00
parent f7016981a7
commit aad5643403

View file

@ -347,15 +347,18 @@ void KEYBOARD_AddKey(KBD_KEYS keytype,bool pressed) {
}
/* Add the actual key in the keyboard queue */
if (pressed) {
if (keyb.repeat.key==keytype) keyb.repeat.wait=keyb.repeat.rate;
else keyb.repeat.wait=keyb.repeat.pause;
keyb.repeat.key=keytype;
if (keyb.repeat.key == keytype) keyb.repeat.wait = keyb.repeat.rate;
else keyb.repeat.wait = keyb.repeat.pause;
keyb.repeat.key = keytype;
} else {
keyb.repeat.key=KBD_NONE;
keyb.repeat.wait=0;
ret+=128;
if (keyb.repeat.key == keytype) {
/* repeated key being released */
keyb.repeat.key = KBD_NONE;
keyb.repeat.wait = 0;
}
ret += 128;
}
if (extend) KEYBOARD_AddBuffer(0xe0);
if (extend) KEYBOARD_AddBuffer(0xe0);
KEYBOARD_AddBuffer(ret);
}
@ -381,7 +384,7 @@ void KEYBOARD_Init(Section* sec) {
keyb.command=CMD_NONE;
keyb.p60changed=false;
keyb.repeat.key=KBD_NONE;
keyb.repeat.pause=500;
keyb.repeat.pause=200;
keyb.repeat.rate=33;
keyb.repeat.wait=0;
KEYBOARD_ClrBuffer();