2013-11-21 11 views
5

Ich muss bestimmte Funktionen nur implementieren, wenn die Tastatur an der Oberfläche befestigt ist. Gibt es einen Weg, den ich erkennen kann, wenn die Oberflächentastatur angebracht oder entfernt wird?Wie erkennt man, ob die Oberflächentastatur angeschlossen ist?

ich diesen Code auf Oberfläche versucht:

function getKeyboardCapabilities() 
{ 
    var keyboardCapabilities = new Windows.Devices.Input.KeyboardCapabilities(); 
    console.log(keyboardCapabilities.keyboardPresent); 

} 

Das Ergebnis war immer ‚1‘ selbst dann, wenn die Tastatur nicht angeschlossen war.

+0

Mein Verständnis ist, dass Sie wissen können, ob einer angefügt wurde, aber nicht ob es derzeit angehängt ist. Sehen Sie sich 'KeyboardCapabilities.KeyboardPresent' an. – WiredPrairie

+0

@WiredPrairie Ich habe' KeyboardCapabilities.keyboardPresent' auf einem Computer mit einer physischen Tastatur versucht und das Ergebnis war '1' was gut ist. Derselbe Code auf einem Surface gab jedoch immer "1" zurück, auch wenn die Tastatur nicht angeschlossen war. – Stefania

+0

Leider denke ich, dass es genau so funktioniert. Die Oberfläche meldet immer "wahr", wenn sie an einem bestimmten Punkt angehängt wurde. – WiredPrairie

Antwort

1

benutzte ich diesen Code zu identifizieren, wenn eine Tastatur mit einer Oberfläche verbunden ist:

var keyboardWatcher = (function() { 
    // private 
    var keyboardState = false; 

    var watcher = Windows.Devices.Enumeration.DeviceInformation.createWatcher(); 
    watcher.addEventListener("added", function (devUpdate) { 
    // GUID_DEVINTERFACE_KEYBOARD 
     if ((devUpdate.id.indexOf('{884b96c3-56ef-11d1-bc8c-00a0c91405dd}') != -1) && (devUpdate.id.indexOf('MSHW0007') == -1) ) { 
      if (devUpdate.properties['System.Devices.InterfaceEnabled'] == true) { 
       // keyboard is connected 
       keyboardState = true; 
      } 
     } 
    }); 
    watcher.addEventListener("updated", function (devUpdate) { 

     if (devUpdate.id.indexOf('{884b96c3-56ef-11d1-bc8c-00a0c91405dd}') != -1) { 
      if (devUpdate.properties['System.Devices.InterfaceEnabled']) { 
       // keyboard is connected 
       keyboardState = true; 
      } 
      else { 
       // keyboard disconnected 
       keyboardState = false; 
      } 
     } 
    }); 

    watcher.start(); 

    // public 
    return { 
     isAttached: function() { 
      return keyboardState; 
     } 
    } 

})(); 

KeyboardWatcher.isAttached() Dann rufen Sie, wenn Sie den Status der Tastatur überprüfen müssen.

0

Ich konnte keinen guten Weg finden zu erkennen, ob eine Tastatur angeschlossen ist, stattdessen erkenne ich, ob ich im Tablet-Modus oder Desktop-Modus bin.

 bool bIsDesktop = false; 

     var uiMode = UIViewSettings.GetForCurrentView().UserInteractionMode; 
     if (uiMode == Windows.UI.ViewManagement.UserInteractionMode.Mouse)   // Typical of Desktop 
      bIsDesktop = true; 

Notiere die anderen möglichen Wert von uiMode ist Windows.UI.ViewManagement.UserInteractionMode.Touch.