Windows.UI.Input.Preview.Injection Espacio de nombres
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona compatibilidad para generar y automatizar mediante programación la entrada desde diversos dispositivos, como teclado, mouse, táctil, lápiz y controlador para juegos.
Importante
Las API de este espacio de nombres requieren la funcionalidad restringida inputInjectionBrokered.
Clases
InjectedInputGamepadInfo |
Representa la entrada del controlador para juegos generada mediante programación. |
InjectedInputKeyboardInfo |
Representa la entrada de teclado generada mediante programación, como una tecla Tab o Mayús+Tab (tabulación inversa). |
InjectedInputMouseInfo |
Representa la entrada del mouse generada mediante programación. |
InjectedInputPenInfo |
Representa la entrada de lápiz generada mediante programación. |
InjectedInputTouchInfo |
Representa la entrada táctil generada mediante programación. |
InputInjector |
Representa el dispositivo de entrada virtual para enviar los datos de entrada. |
Estructuras
InjectedInputPoint |
Contiene las coordenadas de pantalla del puntero en píxeles independientes del dispositivo (DIP). |
InjectedInputPointerInfo |
Contiene información básica del puntero común a todos los tipos de puntero. |
InjectedInputRectangle |
Desplazamientos, desde el puntero insertado, para el rectángulo de selección que representa el área de contacto táctil. |
Enumeraciones
InjectedInputButtonChangeKind |
Especifica los cambios en el estado de un botón asociado a un puntero. |
InjectedInputKeyOptions |
Especifica las distintas opciones, o modificadores, que se usan para simular la entrada de teclados físicos o virtuales a través de InjectedInputKeyboardInfo. |
InjectedInputMouseOptions |
Especifica las distintas opciones, o modificadores, que se usan para simular la entrada del mouse a través de InjectedInputMouseInfo. |
InjectedInputPenButtons |
Especifica las opciones de lápiz usadas para simular la entrada del lápiz a través de InjectedInputPenInfo. |
InjectedInputPenParameters |
Especifica los estados de lápiz usados para simular la entrada del lápiz a través de InjectedInputPenInfo. |
InjectedInputPointerOptions |
Especifica las distintas opciones, o modificadores, que se usan para simular la entrada de puntero a través de InjectedInputMouseInfo, InjectedInputPenInfo e InjectedInputTouchInfo. |
InjectedInputShortcut |
Especifica los accesos directos del sistema para InjectShortcut. |
InjectedInputTouchParameters |
Especifica los estados táctiles usados para simular la entrada táctil a través de InjectedInputTouchInfo. |
InjectedInputVisualizationMode |
Especifica el tipo de comentarios visuales que se muestran para el tipo de entrada insertado. |
Ejemplos
Este es un ejemplo de una función de inserción de entrada táctil.
En primer lugar, llamamos a TryCreate para crear una instancia del objeto InputInjector .
A continuación, llamamos a InitializeTouchInjection con un injectedInputVisualizationMode de Default
.
Después de calcular el punto de inyección, llamamos a InjectedInputTouchInfo para inicializar la lista de puntos táctiles que se van a insertar (en este ejemplo, creamos un punto táctil correspondiente al puntero de entrada del mouse).
Por último, llamamos a InjectTouchInput dos veces, el primero para un puntero hacia abajo y el segundo para un puntero hacia arriba.
/// <summary>
/// Inject touch input on injection target corresponding
/// to mouse click on input target.
/// </summary>
/// <param name="pointerPoint">The mouse click pointer.</param>
private void InjectTouchForMouse(PointerPoint pointerPoint)
{
// Create the touch injection object.
_inputInjector = InputInjector.TryCreate();
if (_inputInjector != null)
{
_inputInjector.InitializeTouchInjection(
InjectedInputVisualizationMode.Default);
// Create a unique pointer ID for the injected touch pointer.
// Multiple input pointers would require more robust handling.
uint pointerId = pointerPoint.PointerId + 1;
// Get the bounding rectangle of the app window.
Rect appBounds =
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds;
// Get the top left screen coordinates of the app window rect.
Point appBoundsTopLeft = new Point(appBounds.Left, appBounds.Top);
// Get a reference to the input injection area.
GeneralTransform injectArea =
ContainerInject.TransformToVisual(Window.Current.Content);
// Get the top left screen coordinates of the input injection area.
Point injectAreaTopLeft = injectArea.TransformPoint(new Point(0, 0));
// Get the screen coordinates (relative to the input area)
// of the input pointer.
int pointerPointX = (int)pointerPoint.Position.X;
int pointerPointY = (int)pointerPoint.Position.Y;
// Create the point for input injection and calculate its screen location.
Point injectionPoint =
new Point(
appBoundsTopLeft.X + injectAreaTopLeft.X + pointerPointX,
appBoundsTopLeft.Y + injectAreaTopLeft.Y + pointerPointY);
// Create a touch data point for pointer down.
// Each element in the touch data list represents a single touch contact.
// For this example, we're mirroring a single mouse pointer.
List<InjectedInputTouchInfo> touchData =
new List<InjectedInputTouchInfo>
{
new InjectedInputTouchInfo
{
Contact = new InjectedInputRectangle
{
Left = 30, Top = 30, Bottom = 30, Right = 30
},
PointerInfo = new InjectedInputPointerInfo
{
PointerId = pointerId,
PointerOptions =
InjectedInputPointerOptions.PointerDown |
InjectedInputPointerOptions.InContact |
InjectedInputPointerOptions.New,
TimeOffsetInMilliseconds = 0,
PixelLocation = new InjectedInputPoint
{
PositionX = (int)injectionPoint.X ,
PositionY = (int)injectionPoint.Y
}
},
Pressure = 1.0,
TouchParameters =
InjectedInputTouchParameters.Pressure |
InjectedInputTouchParameters.Contact
}
};
// Inject the touch input.
_inputInjector.InjectTouchInput(touchData);
// Create a touch data point for pointer up.
touchData = new List<InjectedInputTouchInfo>
{
new InjectedInputTouchInfo
{
PointerInfo = new InjectedInputPointerInfo
{
PointerId = pointerId,
PointerOptions = InjectedInputPointerOptions.PointerUp
}
}
};
// Inject the touch input.
_inputInjector.InjectTouchInput(touchData);
}
}
Estos son algunos ejemplos descargables que muestran la entrada básica y la inserción de entrada:
- Muestra de inyección de entrada (mouse to touch)
- Muestra de inyección táctil
- Entrada: muestra de eventos de entrada de usuario de XAML
Comentarios
El uso de la inserción de entrada requiere que se agregue lo siguiente a Package.appxmanifest:
- Para
<Package>
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="rescap"
- Para
<Capabilities>
<rescap:Capability Name="inputInjectionBrokered" />