mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 23:29:13 +02:00
+ few experiments, still a huge mess
git-svn-id: trunk@6094 -
This commit is contained in:
parent
5234486213
commit
0c03baa24c
@ -1,9 +1,8 @@
|
|||||||
{
|
{
|
||||||
This file is part of the Free Pascal run time library.
|
This file is part of the Free Pascal run time library.
|
||||||
Copyright (c) 1999-2000 by Florian Klaempfl
|
Copyright (c) 2006 by Karoly Balogh
|
||||||
member of the Free Pascal development team
|
|
||||||
|
|
||||||
Keyboard unit for Win32
|
Keyboard unit for MorphOS and Amiga
|
||||||
|
|
||||||
See the file COPYING.FPC, included in this distribution,
|
See the file COPYING.FPC, included in this distribution,
|
||||||
for details about the copyright.
|
for details about the copyright.
|
||||||
@ -794,6 +793,8 @@ begin
|
|||||||
IsMsgPortEmpty:=(port^.mp_MsgList.lh_TailPred = @(port^.mp_MsgList));
|
IsMsgPortEmpty:=(port^.mp_MsgList.lh_TailPred = @(port^.mp_MsgList));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
KeyQueue: TKeyEvent;
|
||||||
|
|
||||||
function SysPollKeyEvent: TKeyEvent;
|
function SysPollKeyEvent: TKeyEvent;
|
||||||
//var t : TKeyEventRecord;
|
//var t : TKeyEventRecord;
|
||||||
@ -804,6 +805,12 @@ var
|
|||||||
begin
|
begin
|
||||||
KeyCode:=0;
|
KeyCode:=0;
|
||||||
SysPollKeyEvent:=0;
|
SysPollKeyEvent:=0;
|
||||||
|
|
||||||
|
if KeyQueue<>0 then begin
|
||||||
|
SysPollKeyEvent:=KeyQueue;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
// writeln('keyboard/SysPollKeyEvent');
|
// writeln('keyboard/SysPollKeyEvent');
|
||||||
if videoWindow<>nil then begin
|
if videoWindow<>nil then begin
|
||||||
if IsMsgPortEmpty(videoWindow^.UserPort) then exit;
|
if IsMsgPortEmpty(videoWindow^.UserPort) then exit;
|
||||||
@ -860,11 +867,15 @@ begin
|
|||||||
// end;
|
// end;
|
||||||
|
|
||||||
// XXX: huh :)
|
// XXX: huh :)
|
||||||
|
|
||||||
if KeyCode>=0 then begin
|
if KeyCode>=0 then begin
|
||||||
SysPollKeyEvent:=KeyCode or (kbPhys shl 24);
|
SysPollKeyEvent:=KeyCode or (kbPhys shl 24);
|
||||||
end else begin
|
end else begin
|
||||||
SysPollKeyEvent:=0;
|
SysPollKeyEvent:=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
KeyQueue:=SysPollKeyEvent;
|
||||||
|
|
||||||
{*
|
{*
|
||||||
SysPollKeyEvent := 0;
|
SysPollKeyEvent := 0;
|
||||||
if getKeyEventFromQueue (t, true) then
|
if getKeyEventFromQueue (t, true) then
|
||||||
@ -883,13 +894,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function SysGetKeyEvent: TKeyEvent;
|
function SysGetKeyEvent: TKeyEvent;
|
||||||
//var t : TKeyEventRecord;
|
//var t : TKeyEventRecord;
|
||||||
// key : TKeyEvent;
|
// key : TKeyEvent;
|
||||||
var
|
var
|
||||||
iMsg : PIntuiMessage;
|
iMsg : PIntuiMessage;
|
||||||
res: TKeyEvent;
|
res : TKeyEvent;
|
||||||
begin
|
begin
|
||||||
{*
|
{*
|
||||||
key := 0;
|
key := 0;
|
||||||
@ -905,11 +915,19 @@ begin
|
|||||||
|
|
||||||
// writeln('keyboard/SysGetKeyEvent');
|
// writeln('keyboard/SysGetKeyEvent');
|
||||||
if videoWindow<>nil then begin
|
if videoWindow<>nil then begin
|
||||||
|
if KeyQueue <> 0 then begin
|
||||||
|
SysGetKeyEvent := KeyQueue;
|
||||||
|
KeyQueue:=0;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
repeat
|
repeat
|
||||||
WaitPort(videoWindow^.UserPort);
|
WaitPort(videoWindow^.UserPort);
|
||||||
res:=SysPollKeyEvent;
|
res:=SysPollKeyEvent;
|
||||||
until res<>0;
|
until res<>0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
SysGetKeyEvent:=res;
|
||||||
|
|
||||||
{*
|
{*
|
||||||
if videoWindow<>nil then begin
|
if videoWindow<>nil then begin
|
||||||
WaitPort(videoWindow^.UserPort);
|
WaitPort(videoWindow^.UserPort);
|
||||||
|
Loading…
Reference in New Issue
Block a user