Informes de salida del controlador radial de Windows
En este tema se detalla el informe de entrada de HID que se usa para la compatibilidad con la retroalimentación háptica del controlador radial en Windows 10, versión 1607 y sistemas operativos posteriores.
El host dispone de los siguientes usos para extraer datos de un informe de entrada:
Miembro | Descripción | Página | ID | Obligatorio/Opcional |
---|---|---|---|---|
Botón | Estado del botón que se encuentra en el controlador radial | 0x09 | 0x01 | Mandatory |
Dial | Rotación relativa del controlador radial | 0x01 | 0x37 | Mandatory |
X | Coordenada X de la posición de contacto | 0x01 | 0x30 | Opcionales |
Y | Coordenada Y de la posición de contacto | 0x01 | 0x31 | Opcionales |
Ancho | Anchura del cuadro delimitador alrededor de un contacto | 0x0D | 0x48 | Opcionales |
Alto | Altura del cuadro delimitador alrededor de un contacto | 0x0D | 0x49 | Opcionales |
Usos opcionales obligatorios y compatibles con Windows
Cualquier dispositivo que no informe de todos los usos obligatorios no será funcional como controlador radial de Windows. El host de Windows aplica de manera rigurosa todos los usos obligatorios. Cuando no se ha restringido un valor máximo lógico, se puede optimizar para reducir el tamaño del descriptor.
En las secciones siguientes se proporcionan más detalles sobre los usos opcionales obligatorios y compatibles con Windows que se presentaron en la tabla anterior.
Botón
Se usa para indicar cuándo se pulsa el botón primario del dispositivo controlador radial. Esto se indica mediante un elemento principal con un tamaño de informe de 1 bit. Cuando se emite un informe de entrada, el bit debe activarse al pulsar este botón y desactivarse al soltarlo.
Dial
Se usa para indicar el giro en el sentido de las agujas del reloj del controlador radial alrededor de su propio eje principal. Al emitir un informe de entrada, el valor notificado debe ser la magnitud de la rotación en relación con el informe anterior. Este valor será positivo si el controlador radial gira en sentido de las agujas del reloj y negativo si lo hace en sentido contrario.
Se debe especificar el rango físico y el lógico. Los grados o radianes se pueden usar para el rango físico. En cualquier caso, el intervalo lógico debe ser lo suficientemente grande como para informar de los valores que son precisos al menos con un decimal.
X/Y
X e Y informan de las coordenadas del contacto de un controlador radial en pantalla. Esta coordenada representa el centro del contacto en relación con la pantalla.
Los dispositivos que notifican X e Y también deben notificar un uso de Ancho o Alto. El host usa la coordenada notificada para compilar el rectángulo delimitador alrededor del contacto.
Se especificarán los siguientes elementos globales para los usos X e Y:
- Mínimo lógico
- Máximo lógico
- Mínimo físico
- Máximo físico
- Unidad
- Exponente de la unidad
El intervalo físico del dispositivo y las unidades deben notificarse con precisión. Si la información es inexacta, el dispositivo no funcionará correctamente. Los dispositivos también deben informar de datos dentro del rango lógico que se especifica en el descriptor de informe.
X e Y pueden proporcionar un valor "NULL" al sistema, lo que implica que el dispositivo no tiene actualmente una posición relativa a una pantalla, de manera que proporciona un valor fuera del rango lógico que se ha notificado y agrega compatibilidad nula al informe de entrada del uso (Bit 6 {No Null position (0) | Null state(1)}).
Ancho y alto
Los usos de ancho y alto representan la anchura y la altura del cuadro delimitador alrededor del contacto radial del controlador. El ancho y el alto deben definirse como constantes en el descriptor de informe.
Se supone que un dispositivo controlador radial Windows es circular por el sistema. Por ello, no es necesario indicar la anchura y la altura de un contacto en pantalla. Si se admite la altura o la anchura, el sistema interpretará correctamente los límites del contacto. Windows no proporciona compatibilidad con dispositivos de controlador radial con valores diferentes para ancho y alto.