mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 09:26:15 +02:00
* pollkey fixes (merged)
This commit is contained in:
parent
5beb1658ce
commit
9d93d0d4e3
@ -105,8 +105,11 @@ begin
|
|||||||
exit(PendingKeyEvent);
|
exit(PendingKeyEvent);
|
||||||
If Assigned(CurrentKeyBoardDriver.PollKeyEvent) Then
|
If Assigned(CurrentKeyBoardDriver.PollKeyEvent) Then
|
||||||
begin
|
begin
|
||||||
PendingKeyEvent:=CurrentKeyBoardDriver.PollKeyEvent();
|
PollKeyEvent:=CurrentKeyBoardDriver.PollKeyEvent();
|
||||||
PollKeyEvent:=PendingKeyEvent;
|
// PollKeyEvent:=PendingKeyEvent;
|
||||||
|
// Must be done inside every keyboard specific
|
||||||
|
// PollKeyEvent procedure
|
||||||
|
// to avoid problems if that procedure is called directly PM
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
PollKeyEvent:=0;
|
PollKeyEvent:=0;
|
||||||
@ -117,7 +120,7 @@ Function SetKeyboardDriver (Const Driver : TKeyboardDriver) : Boolean;
|
|||||||
begin
|
begin
|
||||||
If Not KeyBoardInitialized then
|
If Not KeyBoardInitialized then
|
||||||
CurrentKeyBoardDriver:=Driver;
|
CurrentKeyBoardDriver:=Driver;
|
||||||
SetKeyboardDriver:=Not KeyBoardInitialized;
|
SetKeyboardDriver:=Not KeyBoardInitialized;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver);
|
Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver);
|
||||||
@ -292,7 +295,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.5 2001-10-10 20:19:00 michael
|
Revision 1.6 2001-10-12 16:03:15 peter
|
||||||
|
* pollkey fixes (merged)
|
||||||
|
|
||||||
|
Revision 1.5 2001/10/10 20:19:00 michael
|
||||||
+ Merge of Fixed PollKeyEvent - Pierres fix was not complete
|
+ Merge of Fixed PollKeyEvent - Pierres fix was not complete
|
||||||
|
|
||||||
Revision 1.4 2001/10/03 20:08:36 michael
|
Revision 1.4 2001/10/03 20:08:36 michael
|
||||||
|
@ -35,16 +35,23 @@ end;
|
|||||||
|
|
||||||
Var
|
Var
|
||||||
CurrentVideoDriver : TVideoDriver;
|
CurrentVideoDriver : TVideoDriver;
|
||||||
|
NextVideoMode : TVideoMode;
|
||||||
|
|
||||||
Const
|
Const
|
||||||
VideoInitialized : Boolean = False;
|
VideoInitialized : Boolean = False;
|
||||||
|
DriverInitialized : Boolean = False;
|
||||||
|
NextVideoModeSet : Boolean = False;
|
||||||
|
|
||||||
Function SetVideoDriver (Const Driver : TVideoDriver) : Boolean;
|
Function SetVideoDriver (Const Driver : TVideoDriver) : Boolean;
|
||||||
{ Sets the videodriver to be used }
|
{ Sets the videodriver to be used }
|
||||||
begin
|
begin
|
||||||
If Not VideoInitialized then
|
If Not VideoInitialized then
|
||||||
|
Begin
|
||||||
CurrentVideoDriver:=Driver;
|
CurrentVideoDriver:=Driver;
|
||||||
SetVideoDriver:=Not VideoInitialized;
|
DriverInitialized:=true;
|
||||||
|
NextVideoModeSet:=false;
|
||||||
|
End;
|
||||||
|
SetVideoDriver:=Not VideoInitialized;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure GetVideoDriver (Var Driver : TVideoDriver);
|
Procedure GetVideoDriver (Var Driver : TVideoDriver);
|
||||||
@ -86,17 +93,17 @@ begin
|
|||||||
If (ScreenWidth<OldCols) then
|
If (ScreenWidth<OldCols) then
|
||||||
C:=ScreenWidth
|
C:=ScreenWidth
|
||||||
else
|
else
|
||||||
C:=OldCols;
|
C:=OldCols;
|
||||||
If (ScreenHeight<OldRows) then
|
If (ScreenHeight<OldRows) then
|
||||||
R:=ScreenHeight
|
R:=ScreenHeight
|
||||||
else
|
else
|
||||||
R:=OldRows;
|
R:=OldRows;
|
||||||
For I:=0 to R-1 do
|
For I:=0 to R-1 do
|
||||||
begin
|
begin
|
||||||
Move(VideoBuf[I*S*OldCols],NewVideoBuf[I*S*ScreenWidth],S*C);
|
Move(VideoBuf^[I*OldCols],NewVideoBuf^[I*ScreenWidth],S*C);
|
||||||
Move(OldVideoBuf[I*S*OldCols],NewOldVideoBuf[I*S*ScreenWidth],S*C);
|
Move(OldVideoBuf^[I*OldCols],NewOldVideoBuf^[I*ScreenWidth],S*C);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
FreeVideoBuf;
|
FreeVideoBuf;
|
||||||
VideoBufSize:=NewVideoBufSize;
|
VideoBufSize:=NewVideoBufSize;
|
||||||
VideoBuf:=NewVideoBuf;
|
VideoBuf:=NewVideoBuf;
|
||||||
@ -110,6 +117,10 @@ begin
|
|||||||
begin
|
begin
|
||||||
If Assigned(CurrentVideoDriver.InitDriver) then
|
If Assigned(CurrentVideoDriver.InitDriver) then
|
||||||
CurrentVideoDriver.InitDriver;
|
CurrentVideoDriver.InitDriver;
|
||||||
|
VideoInitialized:=True;
|
||||||
|
if NextVideoModeSet then
|
||||||
|
SetVideoMode(NextVideoMode)
|
||||||
|
else
|
||||||
AssignVideoBuf(0,0);
|
AssignVideoBuf(0,0);
|
||||||
ClearScreen;
|
ClearScreen;
|
||||||
end;
|
end;
|
||||||
@ -123,7 +134,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
If Assigned(CurrentVideoDriver.DoneDriver) then
|
If Assigned(CurrentVideoDriver.DoneDriver) then
|
||||||
CurrentVideoDriver.DoneDriver;
|
CurrentVideoDriver.DoneDriver;
|
||||||
FreeVideoBuf;
|
FreeVideoBuf;
|
||||||
VideoInitialized:=False;
|
VideoInitialized:=False;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -198,6 +209,11 @@ Var
|
|||||||
OldR,OldC: Word;
|
OldR,OldC: Word;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
SetVideoMode:=DriverInitialized;
|
||||||
|
if not DriverInitialized then
|
||||||
|
exit;
|
||||||
|
If VideoInitialized then
|
||||||
|
begin
|
||||||
OldC:=ScreenWidth;
|
OldC:=ScreenWidth;
|
||||||
OldR:=ScreenHeight;
|
OldR:=ScreenHeight;
|
||||||
If Assigned(CurrentVideoDriver.SetVideoMode) then
|
If Assigned(CurrentVideoDriver.SetVideoMode) then
|
||||||
@ -207,6 +223,12 @@ begin
|
|||||||
// Assign buffer
|
// Assign buffer
|
||||||
If SetVideoMode then
|
If SetVideoMode then
|
||||||
AssignVideoBuf(OldC,Oldr);
|
AssignVideoBuf(OldC,Oldr);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
NextVideoMode:=Mode;
|
||||||
|
NextVideoModeSet:=true;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -214,7 +236,7 @@ Function GetVideoModeCount : Word;
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
If Assigned(CurrentVideoDriver.GetVideoModeCount) then
|
If Assigned(CurrentVideoDriver.GetVideoModeCount) then
|
||||||
GetVideoModeCount:=GetVideoModeCount()
|
GetVideoModeCount:=CurrentVideoDriver.GetVideoModeCount()
|
||||||
else
|
else
|
||||||
GetVideoModeCount:=1;
|
GetVideoModeCount:=1;
|
||||||
end;
|
end;
|
||||||
@ -239,11 +261,12 @@ begin
|
|||||||
DefaultErrorHandler := errAbort; { return error code }
|
DefaultErrorHandler := errAbort; { return error code }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.5 2001-10-10 21:03:48 michael
|
Revision 1.6 2001-10-12 16:03:15 peter
|
||||||
|
* pollkey fixes (merged)
|
||||||
|
|
||||||
|
Revision 1.5 2001/10/10 21:03:48 michael
|
||||||
+ Clearscreen now also clears oldvideobuf after screenupdate
|
+ Clearscreen now also clears oldvideobuf after screenupdate
|
||||||
|
|
||||||
Revision 1.4 2001/10/06 22:28:24 michael
|
Revision 1.4 2001/10/06 22:28:24 michael
|
||||||
|
@ -1483,9 +1483,15 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
function SysPollKeyEvent: TKeyEvent;
|
function SysPollKeyEvent: TKeyEvent;
|
||||||
|
var
|
||||||
|
KeyEvent : TKeyEvent;
|
||||||
begin
|
begin
|
||||||
if keypressed then
|
if keypressed then
|
||||||
SysPollKeyEvent:=SysGetKeyEvent
|
begin
|
||||||
|
KeyEvent:=SysGetKeyEvent;
|
||||||
|
PutKeyEvent(KeyEvent);
|
||||||
|
SysPollKeyEvent:=KeyEvent
|
||||||
|
end
|
||||||
else
|
else
|
||||||
SysPollKeyEvent:=0;
|
SysPollKeyEvent:=0;
|
||||||
end;
|
end;
|
||||||
@ -1498,11 +1504,11 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure RestoreStartMode;
|
procedure RestoreStartMode;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
TCSetAttr(1,TCSANOW,StartTio);
|
TCSetAttr(1,TCSANOW,StartTio);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Const
|
Const
|
||||||
SysKeyboardDriver : TKeyboardDriver = (
|
SysKeyboardDriver : TKeyboardDriver = (
|
||||||
InitDriver : @SysInitKeyBoard;
|
InitDriver : @SysInitKeyBoard;
|
||||||
@ -1511,16 +1517,19 @@ Const
|
|||||||
PollKeyEvent : @SysPollKeyEvent;
|
PollKeyEvent : @SysPollKeyEvent;
|
||||||
GetShiftState : @SysGetShiftState;
|
GetShiftState : @SysGetShiftState;
|
||||||
TranslateKeyEvent : Nil;
|
TranslateKeyEvent : Nil;
|
||||||
TranslateKeyEventUnicode : Nil;
|
TranslateKeyEventUnicode : Nil;
|
||||||
);
|
);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
SetKeyBoardDriver(SysKeyBoardDriver);
|
SetKeyBoardDriver(SysKeyBoardDriver);
|
||||||
TCGetAttr(1,StartTio);
|
TCGetAttr(1,StartTio);
|
||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.8 2001-09-21 21:33:36 michael
|
Revision 1.9 2001-10-12 16:03:15 peter
|
||||||
|
* pollkey fixes (merged)
|
||||||
|
|
||||||
|
Revision 1.8 2001/09/21 21:33:36 michael
|
||||||
+ Merged driver support from fixbranch
|
+ Merged driver support from fixbranch
|
||||||
|
|
||||||
Revision 1.7 2001/08/30 20:55:08 peter
|
Revision 1.7 2001/08/30 20:55:08 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user