|
@@ -56,7 +56,8 @@ var
|
|
altNumBuffer : string [3];
|
|
altNumBuffer : string [3];
|
|
{ used for keyboard specific stuff }
|
|
{ used for keyboard specific stuff }
|
|
KeyBoardLayout : HKL;
|
|
KeyBoardLayout : HKL;
|
|
-
|
|
|
|
|
|
+ Inited : Boolean;
|
|
|
|
+
|
|
procedure incqueueindex(var l : longint);
|
|
procedure incqueueindex(var l : longint);
|
|
|
|
|
|
begin
|
|
begin
|
|
@@ -75,6 +76,11 @@ end;
|
|
{ gets or peeks the next key from the queue, does not wait for new keys }
|
|
{ gets or peeks the next key from the queue, does not wait for new keys }
|
|
function getKeyEventFromQueue (VAR t : TKeyEventRecord; Peek : boolean) : boolean;
|
|
function getKeyEventFromQueue (VAR t : TKeyEventRecord; Peek : boolean) : boolean;
|
|
begin
|
|
begin
|
|
|
|
+ if not Inited then
|
|
|
|
+ begin
|
|
|
|
+ getKeyEventFromQueue := false;
|
|
|
|
+ exit;
|
|
|
|
+ end;
|
|
EnterCriticalSection (lockVar);
|
|
EnterCriticalSection (lockVar);
|
|
if keyEventsInQueue then
|
|
if keyEventsInQueue then
|
|
begin
|
|
begin
|
|
@@ -94,6 +100,11 @@ end;
|
|
{ gets the next key from the queue, does wait for new keys }
|
|
{ gets the next key from the queue, does wait for new keys }
|
|
function getKeyEventFromQueueWait (VAR t : TKeyEventRecord) : boolean;
|
|
function getKeyEventFromQueueWait (VAR t : TKeyEventRecord) : boolean;
|
|
begin
|
|
begin
|
|
|
|
+ if not Inited then
|
|
|
|
+ begin
|
|
|
|
+ getKeyEventFromQueueWait := false;
|
|
|
|
+ exit;
|
|
|
|
+ end;
|
|
WaitForSingleObject (newKeyEvent, dword(INFINITE));
|
|
WaitForSingleObject (newKeyEvent, dword(INFINITE));
|
|
getKeyEventFromQueueWait := getKeyEventFromQueue (t, false);
|
|
getKeyEventFromQueueWait := getKeyEventFromQueue (t, false);
|
|
end;
|
|
end;
|
|
@@ -236,6 +247,7 @@ begin
|
|
nextkeyevent:=0;
|
|
nextkeyevent:=0;
|
|
nextfreekeyevent:=0;
|
|
nextfreekeyevent:=0;
|
|
SetKeyboardEventHandler (@HandleKeyboard);
|
|
SetKeyboardEventHandler (@HandleKeyboard);
|
|
|
|
+ Inited:=true;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure SysDoneKeyboard;
|
|
procedure SysDoneKeyboard;
|
|
@@ -244,6 +256,7 @@ begin
|
|
DeleteCriticalSection (lockVar);
|
|
DeleteCriticalSection (lockVar);
|
|
FlushConsoleInputBuffer(StdInputHandle);
|
|
FlushConsoleInputBuffer(StdInputHandle);
|
|
closeHandle (newKeyEvent);
|
|
closeHandle (newKeyEvent);
|
|
|
|
+ Inited:=false;
|
|
end;
|
|
end;
|
|
|
|
|
|
{$define USEKEYCODES}
|
|
{$define USEKEYCODES}
|
|
@@ -820,7 +833,10 @@ begin
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.9 2002-09-07 16:01:28 peter
|
|
|
|
|
|
+ Revision 1.10 2003-10-27 15:28:07 peter
|
|
|
|
+ * set inited boolean to prevent crashes
|
|
|
|
+
|
|
|
|
+ Revision 1.9 2002/09/07 16:01:28 peter
|
|
* old logs removed and tabs fixed
|
|
* old logs removed and tabs fixed
|
|
|
|
|
|
Revision 1.8 2002/07/17 07:28:21 pierre
|
|
Revision 1.8 2002/07/17 07:28:21 pierre
|