Ver Mensaje Individual
  #2  
Antiguo 13-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Puedes probar con este pogramita de consola usando SDL2 así:


Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows, Dialogs, SDL2;

var
  i: integer;
  sdlEvent: TSDL_Event;
  SDL_JOY : PSDL_JOYSTICK;
  s: String;
  Salir: boolean = false;
begin
  if SDL_Init(SDL_INIT_JOYSTICK) = -1 then  Writeln('No se encontraron Joysticks');
  for i := 0 to SDL_NumJoysticks -1  do
  begin
    SDL_JOY := SDL_JoystickOpen(i);
     Writeln(SDL_JoystickName(SDL_JOY)+#13);
  end;
  repeat
    while SDL_PollEvent(@sdlEvent) = 1 do
    begin
      if sdlEvent.type_  = SDL_JOYBUTTONDOWN then
      begin
        SDL_JOY := SDL_JoystickOpen(sdlEvent.jbutton.which);
        Writeln('Pulsado Boton de ' + SDL_JoystickName(SDL_JOY)+#13);
        Windows.Beep(1000, 100);
      end;
    end;
  until Salir;

end.




O usando Win Joystick:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Mmsystem,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure JOY1ButtonDown(var Message: TMessage); message MM_JOY1BUTTONDOWN;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   if joySetCapture(Handle, JOYSTICKID1, 0, true) <> 0 then
     ShowMessage('No se puede capturar el Joystick');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  joyReleaseCapture(JOYSTICKID1);
end;

procedure TForm1.JOY1ButtonDown(var Message: TMessage);
begin
  ShowMessage('Se ha pulsado un botón del Joystick');
end;

end.




Saludos.
Responder Con Cita