Detectar el control inalámbrico de Xbox en C# .Net sin utilizar XNA

Esta entrada está dedicada para enseñar cómo se puede detectar los controles de XBOX inalámbricos conectados a un receptor inalámbrico (PC Wireless  Gaming  Receiver) con C# .Net sin utilizar XNA.

controll xbox y receptor

Para poder detectar los controles haremos uso de una librería externa de nombre SlimDX, esta librería la podemos bajar por medio de Nuget o de su pagina http://slimdx.org/. SlimDX es una librería Open Source que nos permite construir programas usando DirectX, y una de sus funciones es detectar los Joystick.

También utilizaremos la clase GamepadState que ha hecho Renaud Bédard y podemos descargarla de su sitio, él ya nos facilita lo necesario para detectar los botones del control, palancas etc. Igual anexo la clase en esta liga, solo tienen que copiar y pegar el código en una clase del proyecto de Visual Studio.

Ahora que ya tenemos la librería SlimDX y la clase GamepadState solo nos queda comenzar a utilizar y detectar el control de la siguiente manera:

using SlimDX.XInput;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ControlXBox
{
    class Program
    {
        static void Main(string[] args)
        {
            //creamos una instancia GamepadState y le enviamos la constante de control numero 1
             GamepadState control = new GamepadState(UserIndex.One);

             //ahora detectamos si el controll esta conectado
             if (control.Connected)
             {
                 Console.WriteLine("El control esta conectado");

                 //creamos un ciclo infinito solo para detectar el control cada que presionemos un boton

                 while(true){

                     //detectamos si se realizo una modificación, se presiono un botón o se movio una palanca etc.
                     control.Update();

                     //imprimimos el boton presionado en consola
                     Console.WriteLine(control.Controller.GetState().Gamepad.Buttons.ToString());

                 }

             }
             else
             {
                 //Si el control no esta conectado mostramos mensaje de que no esta conectado :(
                 Console.WriteLine("El control NO esta conectado");
                 Console.ReadLine();

             }

        }

    }
}

Cree un proyecto de consola de Visual Studio y aquí plasmo el resultado en video para que puedan ver que funciona bien:

Cualquier duda en los comentarios pueden preguntar.

Autor: Héctor de León

Desarrollador de software, lector compulsivo.