mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 02:39:27 +02:00
98 lines
1.7 KiB
ObjectPascal
98 lines
1.7 KiB
ObjectPascal
unit logkeys;
|
|
|
|
interface
|
|
|
|
Procedure StartKeyLogging;
|
|
Procedure StopKeyLogging;
|
|
Function IsKeyLogging : Boolean;
|
|
Procedure SetKeyLogFileName(FileName : String);
|
|
|
|
|
|
implementation
|
|
|
|
uses sysutils,keyboard;
|
|
|
|
var
|
|
NewKeyBoardDriver,
|
|
OldKeyBoardDriver : TKeyboardDriver;
|
|
Active,Logging : Boolean;
|
|
LogFileName : String;
|
|
KeyLog : Text;
|
|
|
|
Function TimeStamp : String;
|
|
|
|
begin
|
|
TimeStamp:=FormatDateTime('hh:nn:ss',Time());
|
|
end;
|
|
|
|
Procedure StartKeyLogging;
|
|
|
|
begin
|
|
Logging:=True;
|
|
Writeln(KeyLog,'Start logging keystrokes at: ',TimeStamp);
|
|
end;
|
|
|
|
Procedure StopKeyLogging;
|
|
|
|
begin
|
|
Writeln(KeyLog,'Stop logging keystrokes at: ',TimeStamp);
|
|
Logging:=False;
|
|
end;
|
|
|
|
Function IsKeyLogging : Boolean;
|
|
|
|
begin
|
|
IsKeyLogging:=Logging;
|
|
end;
|
|
|
|
Function LogGetKeyEvent : TKeyEvent;
|
|
|
|
Var
|
|
K : TKeyEvent;
|
|
|
|
begin
|
|
K:=OldkeyboardDriver.GetKeyEvent();
|
|
If Logging then
|
|
begin
|
|
Write(KeyLog,TimeStamp,': Key event: ');
|
|
Writeln(KeyLog,KeyEventToString(TranslateKeyEvent(K)));
|
|
end;
|
|
LogGetKeyEvent:=K;
|
|
end;
|
|
|
|
Procedure LogInitKeyBoard;
|
|
|
|
begin
|
|
OldKeyBoardDriver.InitDriver();
|
|
Assign(KeyLog,logFileName);
|
|
Rewrite(KeyLog);
|
|
Active:=True;
|
|
StartKeyLogging;
|
|
end;
|
|
|
|
Procedure LogDoneKeyBoard;
|
|
|
|
begin
|
|
StopKeyLogging;
|
|
Close(KeyLog);
|
|
Active:=False;
|
|
OldKeyBoardDriver.DoneDriver();
|
|
end;
|
|
|
|
Procedure SetKeyLogFileName(FileName : String);
|
|
|
|
begin
|
|
If Not Active then
|
|
LogFileName:=FileName;
|
|
end;
|
|
|
|
Initialization
|
|
GetKeyBoardDriver(OldKeyBoardDriver);
|
|
NewKeyBoardDriver:=OldKeyBoardDriver;
|
|
NewKeyBoardDriver.GetKeyEvent:=@LogGetKeyEvent;
|
|
NewKeyBoardDriver.InitDriver:=@LogInitKeyboard;
|
|
NewKeyBoardDriver.DoneDriver:=@LogDoneKeyboard;
|
|
LogFileName:='keyboard.log';
|
|
Logging:=False;
|
|
SetKeyboardDriver(NewKeyBoardDriver);
|
|
end. |