[quote="noeska"]
Quote Originally Posted by JSoftware
noeska, to my knowledge, joystick
@Brainer: How do i use your source as cannot seem to find anything like onkeypress and the likes.
I use this class with my form. Here's the code:
[pascal]
unit UBEWindow;

interface

uses
Windows, Classes, Controls, Forms, AppEvnts,
// -- Headers --
dglOpenGL,
// -- Engine units --
UBEOpenGLBuffer, UBEInput, UBELogger, UBETimer;

type
{ .: TBrainEngineForm :. }
TBrainEngineForm = class(TForm)
private
{ Private declarations }
FAppEvent: TApplicationEvents;
FOGLBuffer: TOpenGLBuffer;
FInput: TInputSystem;
FPerfTimer: TPerformanceTimer;
procedure MyOnResize(Sender: TObject);
procedure MyOnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure MyOnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure MyOnMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MyOnMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MyOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
protected
{ Protected declarations }
procedure DoRender(); virtual; abstract;
procedure MyOnIdle(Sender: TObject; var Done: Boolean); virtual; abstract;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy(); override;

property OpenGLBuffer: TOpenGLBuffer read FOGLBuffer;
property InputSystem: TInputSystem read FInput;
property PerformanceTimer: TPerformanceTimer read FPerfTimer;
end;

implementation

{ TBrainEngineForm }

constructor TBrainEngineForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);

FAppEvent := TApplicationEvents.Create(Self);
FOGLBuffer := TOpenGLBuffer.Create(GetDC(Handle));
FOGLBuffer.InitGL();
FInput := TInputSystem.Create();
FPerfTimer := TPerformanceTimer.Create();

FAppEvent.OnIdle := MyOnIdle;
OnResize := MyOnResize;
OnKeyDown := MyOnKeyDown;
OnKeyUp := MyOnKeyUp;
OnMouseDown := MyOnMouseDown;
OnMouseUp := MyOnMouseUp;
OnMouseMove := MyOnMouseMove;

Log.Log('Window created.', 'UBEWindow');

FPerfTimer.StartTiming();
end;

destructor TBrainEngineForm.Destroy;
begin
FAppEvent.Free();
FOGLBuffer.Free();
FInput.Free();
FPerfTimer.Free();

Log.Log('Window freed.', 'UBEWindow');

inherited Destroy();
end;

procedure TBrainEngineForm.MyOnKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
FInput.ProcessKeyboard(keKeyDown, Key);
end;

procedure TBrainEngineForm.MyOnKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
FInput.ProcessKeyboard(keKeyUp, Key);
end;

procedure TBrainEngineForm.MyOnMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
case Button of
mbLeft: FInput.ProcessMouse(meLeftButtonDown, X, Y);
mbRight: FInput.ProcessMouse(meRightButtonDown, X, Y);
mbMiddle: FInput.ProcessMouse(meMiddleButtonDown, X, Y);
end;
end;

procedure TBrainEngineForm.MyOnMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
FInput.ProcessMouse(meMove, X, Y);
end;

procedure TBrainEngineForm.MyOnMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
case Button of
mbLeft: FInput.ProcessMouse(meLeftButtonUp, X, Y);
mbRight: FInput.ProcessMouse(meRightButtonUp, X, Y);
mbMiddle: FInput.ProcessMouse(meMiddleButtonUp, X, Y);
end;
end;

procedure TBrainEngineForm.MyOnResize(Sender: TObject);
begin
glViewport(0, 0, ClientWidth, ClientHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, ClientWidth / ClientHeight, 0.1, 1000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
end;

end.

[/pascal]