FlushKeyRange()
BlitzMax Forums/BlitzMax Module Tweaks/FlushKeyRange()
| ||
| inspired by this thread, I decided to make this function. It could probably be implemented better, but it's a start. in brl.mod\system.mod\system.<OS>.c (or .m for mac) add:
void bbSystemFlushKeyRange(int lowRange, int highRange){
int loopVar = 0;
if (lowRange > highRange) { return;}
if (lowRange<0 || highRange>256){return;}
for (loopVar = lowRange; loopVar<= highRange; loopVar++){
key_hit[loopVar] = 0;
key_down[loopVar] = 0;
}
char_put=char_get=0;
}
in driver.bmx add: Method FlushKeyRange(lowRange, highRange) Abstractbelow flushmem in system.bmx add: Rem bbdoc: Flush the keyboard buffers from lowRange to highRange End Rem Function FlushKeyRange(lowRange, highRange) If auto_poll PollSystem Driver.FlushKeyRange(lowRange, highRange) End Function Only tested on win32, but the flushkeys function is exactly the same for each OS so it shouldn't be an issue. Usage: FlushKeyRange(lowRange, highRange) example: 'flushmouse only FlushKeyRange(KEY_MOUSELEFT, KEY_MOUSEMIDDLE) another example:
Graphics 640,480,0,0
While Not KeyDown(KEY_ESCAPE)
Cls
If KeyDown(KEY_MOUSELEFT) Then Print RequestDir("Choose a directory", "c:\")
FlushKeyRange(KEY_MOUSELEFT, KEY_MOUSELEFT)
If KeyDown(KEY_A) Then DrawText("A Pressed", 10, 10)
Flip
Wend
|