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:
parent
f7016981a7
commit
aad5643403
1 changed files with 11 additions and 8 deletions
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue