Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Découvrez comment utiliser les commentaires haptiques des appareils de stylet pour fournir des interactions plus naturelles et tactiles dans votre application SDK d'application Windows.
Windows 11 introduit des commentaires haptiques pour les stylos numériques, ce qui permet aux utilisateurs de sentir leur stylet interagir avec l'interface utilisateur de l'application. Lorsque vous faites référence à cette fonctionnalité, haptic est utilisé dans les API et la documentation des développeurs, tandis que tactile est le nom accessible par l’utilisateur affiché dans Windows Paramètres.
API clés
- PenDevice
- SimpleHapticsController
- KnownSimpleHapticsControllerWaveforms
- PenDeviceInterop (SDK d'application Windows)
Types de commentaires haptiques
Deux types de commentaires haptiques sont disponibles :
- Commentaires manuscrits : simule la sensation des instruments d’écriture ou de dessin (stylet, marqueur, crayon, surligneur) par l'intermédiaire de vibrations continues pendant que le stylet touche l’écran.
- Commentaires d’interaction : signaux tactiles courts pour les actions utilisateur telles que le pointage sur un bouton, le clic ou la confirmation d’une action terminée.
Détecter les entrées de stylet
Inscrivez-vous à l’événement PointerEntered et vérifiez si le type d’appareil de pointeur est un stylet :
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
// Pen detected — check for haptic support.
}
Obtenir le PenDevice dans la SDK d'application Windows
Dans une application SDK d'application Windows, utilisez PenDeviceInterop une classe d’interopérabilité SDK d'application Windows pour obtenir l’objet WinRT PenDevice à partir d’un point de pointeur.
PenDevice, SimpleHapticsController et KnownSimpleHapticsControllerWaveforms sont des types WinRT issus des espaces de noms Windows.Devices.Input et Windows.Devices.Haptics ; seul l'appel d'interopérabilité lui-même provient de l'espace de noms Microsoft.UI.Input.Interop du SDK d’application Windows :
using Microsoft.UI.Input.Interop;
using Windows.Devices.Haptics;
using Windows.Devices.Input;
using Windows.Foundation.Metadata;
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
var penDevice = PenDeviceInterop.FromPointerPoint(e.GetCurrentPoint(null));
if (penDevice == null)
{
return; // Pen does not support advanced features.
}
// SimpleHapticsController requires Windows 11. Check for API presence
// before accessing it so the app doesn't throw on Windows 10.
if (!ApiInformation.IsPropertyPresent(
"Windows.Devices.Input.PenDevice", "SimpleHapticsController"))
{
return; // Haptic feedback requires Windows 11.
}
var hapticsController = penDevice.SimpleHapticsController;
if (hapticsController == null)
{
return; // Pen does not support haptic feedback.
}
// Configure haptic feedback (see examples below).
}
Note
Dans les applications UWP, utilisez PenDevice.GetFromPointerId plutôt. La PenDeviceInterop classe est spécifique au SDK d'application Windows.
Formes d’ondes manuscrites
Les formes d’onde d’encrage s’affichent en continu tant que le stylet est en contact avec l’écran. Les formes d’onde requises sont garanties d’être prises en charge par n’importe quel stylet haptique.
| Forme d'onde | Descriptif | Obligatoire |
|---|---|---|
| InkContinuous | Sensation de stylo à bille par défaut. Solution de secours pour les formes d’onde non prises en charge. | Oui |
| BrushContinuous | Pinceau | Non |
| PencilContinuous | Outil Crayon | Non |
| MarkerContinuous | Outil marqueur | Non |
| ChiselMarkerContinuous | Surligneur/marqueur Chisel | Non |
| EraserContinuous | Gomme | Non |
| GalaxyPenContinuous | Encre spéciale (pinceau multicolore) | Non |
Formes d’ondes d’interaction
Les formes d’ondes d’interaction fournissent des commentaires courts et directs pour les actions de l’interface utilisateur.
| Forme d'onde | Descriptif | Obligatoire |
|---|---|---|
| Click | Clic court par défaut Solution de repli pour les interactions non prises en charge. | Oui |
| Error | L’action a échoué ou une erreur s’est produite | Non |
| Survoler | Début du survol d’un élément interactif | Non |
| Presse | Appuyez sur un élément interactif | Non |
| Libération | Publication d’un élément interactif | Non |
| Success | Action réussie | Non |
| BuzzContinuous | Bourdonnement continu | Non |
| RumbleContinuous | Vrombissement continu | Non |
Envoyer des commentaires haptiques
Itérer à travers SupportedFeedback pour trouver la forme d’onde souhaitée, puis appeler SendHapticFeedback:
SimpleHapticsControllerFeedback currentWaveform = null;
// Try to use BrushContinuous, fall back to InkContinuous.
foreach (var waveform in hapticsController.SupportedFeedback)
{
if (waveform.Waveform == KnownSimpleHapticsControllerWaveforms.BrushContinuous)
{
currentWaveform = waveform;
break;
}
}
if (currentWaveform == null)
{
foreach (var waveform in hapticsController.SupportedFeedback)
{
if (waveform.Waveform == KnownSimpleHapticsControllerWaveforms.InkContinuous)
{
currentWaveform = waveform;
break;
}
}
}
if (currentWaveform != null)
{
hapticsController.SendHapticFeedback(currentWaveform);
}
Arrêter les commentaires haptiques
Arrêtez toujours les commentaires haptiques lorsque le pointeur quitte l’élément. Inscrivez-vous pour PointerExited sur le même élément :
private void Canvas_PointerExited(object sender, PointerRoutedEventArgs e)
{
hapticsController?.StopFeedback();
}
Note
Certains stylos arrêtent automatiquement les haptiques lorsque le stylet quitte l’écran. Toutefois, tous les stylos ne le font pas, donc appelez StopFeedback toujours explicitement.
Personnaliser les commentaires haptiques
Certains stylos prennent en charge des personnalisations supplémentaires. Vérifiez la prise en charge avant de les utiliser :
| Propriété | Vérifier la compatibilité avec |
|---|---|
| Intensité | IsIntensitySupported |
| Nombre de lectures | IsPlayCountSupported |
| Durée de lecture | IsPlayDurationSupported |
| Intervalle de pause de répétition | IsReplayPauseIntervalSupported |
if (hapticsController.IsIntensitySupported)
{
hapticsController.SendHapticFeedback(currentWaveform, 0.75); // 75% intensity
}
Articles connexes
Windows developer