2017-02-02 4 views

Répondre

0

J'ai trouvé une solution, même si je n'ai pas pu obtenir toutes les fonctionnalités, en particulier le mode Gamepad.

La solution était d'écouter les touches de l'appareil entré avec:

public MainPage() 
     { 

      Window.Current.Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated; 

      this.InitializeComponent(); 
     } 

     private void Dispatcher_AcceleratorKeyActivated(Windows.UI.Core.CoreDispatcher sender, Windows.UI.Core.AcceleratorKeyEventArgs args) 
     { 
      var eT = args.EventType; 
      if (CoreAcceleratorKeyEventType.KeyUp == eT) 
      { 
       var key = args.VirtualKey.ToString(); 
       switch (key) 
       { 
        case "Enter" : 
         //Do something 
         break; 
        case "255" : 
         //Do something 
         break; 
        default: 
         break; 
       } 
      } 
     } 

J'ai trouvé que les clés qui sont assignés à un nombre entier sont assez difficiles à comparer car il n'y a apparemment pas de clé virtuelle enregistrée pour leur. Donc, je convertis la clé virtuelle en une chaîne à la comparaison. Je trouve que les valeurs entières diffèrent d'un périphérique à l'autre, donc "255" pourrait être "175" dans une autre configuration. J'espère que cela ne varie pas du démarrage au démarrage ...

Donc, pour résumer, c'est une solution acceptable pour mes besoins. Je me sens comme si écrire mon propre pilote pour le périphérique peut être la meilleure situation mais je n'ai pas le temps de le faire dans ce projet, ni la volonté maintenant d'apprendre les subtilités des objets p/invoke et HID.