Condividi tramite


Supporto degli utilizzi nei descrittori di report del digitalizzatore

Un oggetto Usage è il nome di un valore, di un pulsante o di una raccolta in un report HID. L'host usa i seguenti utilizzi durante l'estrazione dei dati da una penna o da un dispositivo touch.

Membro Descrizione Pagina ID Dispositivo
X Coordinata X della posizione del contatto. Desktop 0x30 Penna, tocco
S Coordinata Y della posizione del contatto. Desktop 0x31 Penna, tocco
Suggerimento Impostare se il dito o la penna si trova sulla superficie del digitalizzatore. Digitalizzatore 0x42 Penna, tocco
Intervallo Impostare quando viene rilevato il dito o la penna durante il passaggio del mouse sul digitalizzatore o in contatto con la superficie del digitalizzatore. Digitalizzatore 0x32 Penna, tocco
Attendibilità Impostare quando il contatto è un dito (non un palmo o qualsiasi altra parte della mano che non deve attivare l'input del dito). Digitalizzatore 0x47 Tocco
Larghezza Larghezza del contatto. Digitalizzatore 0x48 Tocco
Altezza Altezza del contatto. Digitalizzatore 0x49 Tocco
Tempo di analisi Tempo di analisi relativo. Digitalizzatore 0x56 Tocco
Pressione La quantità di pressione che l'utente sta applicando al punto di contatto. Digitalizzatore 0x30 Penna, tocco
Barile Impostare se viene premuto il pulsante sul barile di uno stilo Digitalizzatore 0x44 Penna
Azimuth Rotazione in senso antiorario del cursore sull'asse Z. Digitalizzatore 0x3f Penna, tocco
Inverti Impostare quando l'estremità opposta della penna passa il puntatore del mouse sul digitalizzatore. Digitalizzatore 0x3c Penna
Gomma Impostare quando l'estremità opposta della penna si trova sulla superficie del digitalizzatore. Digitalizzatore 0x45 Penna
Inclinazione X Angolo tra il piano Y-Z e il piano contenente l'asse del dispositivo del puntatore e l'asse Y. Digitalizzatore 0x3d Penna
Inclinazione Y Angolo tra il piano X-Z e il piano del dispositivo puntatore; un'inclinazione Y positiva è verso l'utente. Digitalizzatore 0x3e Penna
Curva Rotazione in senso orario del cursore circa il proprio asse. Digitalizzatore 0x41 Penna

Nota Gli utilizzi elencati nella tabella precedente sono noti a Windows e vengono recapitati alle applicazioni usando il messaggio WM_POINTER.

Nota I dispositivi puntatore sono liberi di supportare utilizzi aggiuntivi (inclusi gli utilizzi specifici del fornitore). Gli utilizzi aggiuntivi non vengono recapitati alle applicazioni nei messaggi WM_POINTER. Il valore di questi utilizzi può essere recuperato usando la funzione GetRawPointerDeviceData . Per rendere accessibili gli utilizzi dalla funzione GetRawPointerDeviceData , gli utilizzi devono trovarsi nello stesso report degli utilizzi di X e Y.

Descrittore HID per digitalizzatori

A partire da Windows 8, un digitalizzatore touch deve essere visualizzato come touch screen (pagina = 0x0D, utilizzo = 0x04). Un digitalizzatore dello stilo deve essere visualizzato come penna integrata (pagina = 0x0D, utilizzo = 0x02) o una penna esterna (pagina = 0x0D, utilizzo = 0x01). I dispositivi touch e penna integrati vengono mappati allo schermo a cui sono fisicamente connessi. I dispositivi penna esterni vengono mappati al desktop virtuale.

Utilizzi HID necessari per i digitalizzatori

Per tutti i digitalizzatori sono necessari gli utilizzi seguenti. I dispositivi che non supportano tutti gli utilizzi necessari non funzioneranno su Windows 8:

X e Y
X e Y segnalano le coordinate del contatto. In Windows 8 un dispositivo può segnalare due punti per ogni contatto. Il primo punto (noto come T) è considerato il punto che l'utente intende toccare mentre il secondo punto (noto come C) è considerato il centro del contatto. I dispositivi in grado di segnalare T e C devono avere una matrice di utilizzo di due valori X e due valori Y. I valori nella prima posizione nelle matrici vengono interpretati come le coordinate per T e i valori nella seconda posizione vengono interpretati come le coordinate per C. Il conteggio dei report per entrambi gli utilizzi è 2 per indicare la presenza di una matrice di utilizzo. I dispositivi che segnalano C devono anche segnalare gli utilizzi di Width e Height . L'host usa C per compilare il rettangolo di delimitazione intorno al contatto. Se il dispositivo segnala solo una coppia X e Y, l'host usa tale coppia per T e C. Il descrittore tocco di esempio include matrici di utilizzo per X e Y. Gli estratti seguenti dal descrittore di esempio illustrano la differenza tra un dispositivo che supporta solo T e un dispositivo che supporta T e C.

Un dispositivo che segnala solo T non deve avere una matrice di utilizzo per le proprietà X e Y, ovvero il conteggio dei report per ogni utilizzo è 1, come indicato di seguito.

0x05, 0x01,                         //       USAGE_PAGE (Generic Desk..
    0x26, 0xff, 0x0f,                   //       LOGICAL_MAXIMUM (4095)         
    0x75, 0x10,                         //       REPORT_SIZE (16)             
    0x55, 0x0e,                         //       UNIT_EXPONENT (-2)           
    0x65, 0x13,                         //       UNIT(Inch,EngLinear)                  
    0x09, 0x30,                         //       USAGE (X)                    
    0x35, 0x00,                         //       PHYSICAL_MINIMUM (0)         
    0x46, 0xb5, 0x04,                   //       PHYSICAL_MAXIMUM (1205)
    0x95, 0x01,                         //       REPORT_COUNT (1)         
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)         
    0x46, 0x8a, 0x03,                   //       PHYSICAL_MAXIMUM (906)
    0x09, 0x31,                         //       USAGE (Y)                    
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)

Un dispositivo che supporta T e C usa matrici di utilizzo per la segnalazione dei valori X e Y. Il numero di report per X e Y è 2.

0x05, 0x01,                         //       USAGE_PAGE (Generic Desk..
    0x26, 0xff, 0x0f,                   //       LOGICAL_MAXIMUM (4095)         
    0x75, 0x10,                         //       REPORT_SIZE (16)             
    0x55, 0x0e,                         //       UNIT_EXPONENT (-2)           
    0x65, 0x13,                         //       UNIT(Inch,EngLinear)                  
    0x09, 0x30,                         //       USAGE (X)                    
    0x35, 0x00,                         //       PHYSICAL_MINIMUM (0)         
    0x46, 0xb5, 0x04,                   //       PHYSICAL_MAXIMUM (1205)
    0x95, 0x02,                         //       REPORT_COUNT (2)         
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)         
    0x46, 0x8a, 0x03,                   //       PHYSICAL_MAXIMUM (906)
    0x09, 0x31,                         //       USAGE (Y)                    
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)

Nota Questi esempi sfruttano la regola HID che gli elementi globali rimangono invariati per ogni elemento principale fino a quando non vengono modificati. In questo modo, sia gli utilizzi X che Y possono condividere una sola voce per il conteggio dei report.

I dispositivi penna devono usare il primo esempio per i descrittori perché C non è rilevante per questi dispositivi.

Per gli utilizzi di X e Y è necessario specificare gli elementi globali seguenti:

  • Minimo logico
  • Numero massimo logico
  • Minimo fisico
  • Massimo fisico
  • Unità
  • Esponente unità

L'intervallo fisico per il dispositivo e le unità devono essere segnalate in modo accurato. Se le informazioni non sono accurate, il dispositivo non funzionerà correttamente. I dispositivi devono anche segnalare i dati all'interno dell'intervallo logico specificato nel descrittore del report. Qualsiasi valore segnalato al di fuori di questo intervallo verrà considerato come dati non validi e il valore verrà modificato nel valore limite più vicino (valore minimo logico o massimo logico).

Mancia
Usare l'interruttore Suggerimento per indicare il contatto con il dito o la penna e sollevarlo dalla superficie del digitalizzatore. Deve essere presente un elemento principale con dimensioni del report pari a 1. Quando si recapitano report, la posizione del bit deve essere impostata quando il dito o la penna è in contatto con la superficie del digitalizzatore. In caso contrario, il bit deve essere cancellato.

Tempo di analisi
Tempo di analisi indica il tempo relativo in unità di 100 microsecondi. Rappresenta il delta dal primo frame segnalato dopo che un dispositivo inizia a segnalare i dati successivi a un periodo di inattività. La prima analisi ricevuta viene considerata come un tempo di base per i tempi segnalati successivi. I delta tra i tempi di analisi segnalati devono riflettere la frequenza di analisi del digitalizzatore. È importante notare che, a differenza di altri utilizzi, l'host non consente alcuna flessibilità per l'unità per l'utilizzo del tempo di analisi. Si prevede che il rollover del valore venga eseguito, perché solo 1 byte viene allocato al contatore. Il valore dell'ora di analisi deve essere lo stesso per tutti i contatti all'interno di un frame. Questo requisito si applica anche ai dispositivi che segnalano i dati usando la modalità ibrida

Nota Questo utilizzo è necessario solo per i dispositivi touch.

Intervallo
Se il dispositivo supporta il rilevamento dell'asse Z, il digitalizzatore deve impostare l'utilizzo nell'intervallo nel report di input quando il trasducente si trova all'interno dell'area in cui è possibile la digitalizzazione. Se il dispositivo non supporta il rilevamento dell'asse Z, il driver non deve includere l'utilizzo nell'intervallo nel descrittore del report.

Le versioni precedenti di Windows hanno linee guida diverse per il modo in cui i driver del digitalizzatore tocco devono gestire la creazione di report nell'intervallo.

I dispositivi che supportano penna e tocco devono supportare gli stati NULL per gli utilizzi X e Y nella raccolta di livello superiore per la penna. Quando la penna viene rilevata in corrispondenza di un'altezza in cui i valori X e Y non possono essere rilevati in modo accurato, il dispositivo deve segnalare valori NULL per X e Y e impostare l'utilizzo nell'intervallo . I valori NULL indicano semplicemente valori non compresi nell'intervallo logico specificato per questi utilizzi, purché il dispositivo abbia indicato che supporta NULL per l'utilizzo pertinente. Il dispositivo può quindi segnalare valori X e Y accurati una volta che lo stilo è abbastanza vicino alla superficie per renderlo possibile. Questo protocollo consente all'host di implementare il rifiuto del palmo quando la penna è in intervallo.

Si noti che l'host riconoscerà i valori esterni all'intervallo logico come segno dell'implementazione di questo protocollo solo se il descrittore del report include in modo specifico il bit che indica il fatto che X e Y supportano gli stati NULL . In caso contrario, i valori esterni all'intervallo logico vengono semplicemente spostati nel valore limite più vicino. Gli estratti seguenti dai descrittori di report illustrano la differenza tra un dispositivo che supporta NULL per X e Y e uno che non lo fa. Si noti che il supporto NULL è necessario solo nella raccolta di livello superiore della penna. Le raccolte di primo livello tocco non devono supportare NULL per X e Y a questo scopo.

Estrazione report con supporto NULL per X e Y:

0x05, 0x01,                         //     USAGE_PAGE (Generic Desktop) 42
    0x09, 0x30,                         //     USAGE (X)                    44
    0x75, 0x10,                         //     REPORT_SIZE (16)             46
    0x95, 0x01,                         //     REPORT_COUNT (1)             48
    0xa4,                               //     PUSH                         50
    0x55, 0x0d,                         //     UNIT_EXPONENT (-3)           51
    0x65, 0x13,                         //     UNIT (Inch,EngLinear)        53
    0x35, 0x00,                         //     PHYSICAL_MINIMUM (0)         55
    0x46, 0x3a, 0x20,                   //     PHYSICAL_MAXIMUM (8250)      57
    0x26, 0xf8, 0x52,                   //     LOGICAL_MAXIMUM (21240)      60
    0x81, 0x42,                         //     INPUT (Data,Var,Abs)         63
    0x09, 0x31,                         //     USAGE (Y)                    65
    0x46, 0x2c, 0x18,                   //     PHYSICAL_MAXIMUM (6188)      67
    0x26, 0x6c, 0x3e,                   //     LOGICAL_MAXIMUM (15980)      70
    0x81, 0x42,                         //     INPUT (Data,Var,Abs)         73

Estrazione report senza supporto NULL per X e Y:

0x05, 0x01,                         //       USAGE_PAGE (Generic Desk..
    0x26, 0xff, 0x0f,                   //       LOGICAL_MAXIMUM (4095)         
    0x75, 0x10,                         //       REPORT_SIZE (16)             
    0x55, 0x0e,                         //       UNIT_EXPONENT (-2)           
    0x65, 0x13,                         //       UNIT(Inch,EngLinear)                  
    0x09, 0x30,                         //       USAGE (X)                    
    0x35, 0x00,                         //       PHYSICAL_MINIMUM (0)         
    0x46, 0xb5, 0x04,                   //       PHYSICAL_MAXIMUM (1205)
    0x95, 0x01,                         //       REPORT_COUNT (1)         
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)         
    0x46, 0x8a, 0x03,                   //       PHYSICAL_MAXIMUM (906)
    0x09, 0x31,                         //       USAGE (Y)                    
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)

Vedi la sezione Supporto tocco e penna per un descrittore completo di un dispositivo penna che supporta i valori NULL per X e Y.

Nota Questo utilizzo è necessario per tutti i dispositivi penna, ma è facoltativo per i dispositivi touch.

Utilizzi HID facoltativi

Gli utilizzi seguenti sono facoltativi, ma è necessario implementarli se l'hardware del digitalizzatore li supporta. I digitalizzatori che non supportano questi utilizzi non devono includerli nel descrittore del report.

Larghezza e altezza
L'utilizzo di Width e Height rappresenta la larghezza e l'altezza del rettangolo di selezione intorno al contatto tocco. I valori segnalati non devono mai essere 0 tranne quando viene segnalato un evento "UP", nel qual caso devono essere 0.

La larghezza e l'altezza vengono esposti anche agli sviluppatori di applicazioni tramite il messaggio WM_POINTER.

Fiducia
La confidenza è un suggerimento del dispositivo che indica se il contatto tocco è stato un tocco intenzionale o accidentale. Se si è certi che il tocco sia previsto, impostare l'utilizzo della confidenza su 1 (true). Il dispositivo deve rifiutare i tocchi accidentali nel modo più accurato possibile, mentre la latenza rimane entro l'intervallo richiesto. Se non si è certi che il tocco sia previsto e il dispositivo non ha rifiutato il tocco come accidentale, impostare l'utilizzo di attendibilità su 0 (false). Se il dispositivo rifiuta sempre i tocchi accidentali, non è necessario includere l'utilizzo della confidenza.

Pressione
La pressione è una misura della forza che il dito o la penna esercita sulla superficie del digitalizzatore. Non sono previste restrizioni per l'intervallo consentito per la pressione. Tuttavia, l'intervallo specificato da un dispositivo verrà normalizzato in un intervallo compreso tra 0 e 1024 durante la distribuzione dei dati alle applicazioni client.

Barile
Il barile deve essere impostato quando viene premuto il pulsante della canna della penna. In caso contrario, deve essere reimpostato. Il barile viene usato da Windows per modificare la funzione della mancia per un'azione primaria (tocco, trascinamento) o un'azione secondaria (tocco destro, trascinamento destro).

Anche se la pressione e il barile sono utilizzi facoltativi, è consigliabile implementarli per i digitalizzatori di penna. Viene aggiunto un valore aggiuntivo per questi utilizzi: la pressione definisce la larghezza del tratto della penna, rendendola più realistica e l'interruttore a canna consente la funzionalità del pulsante destro del mouse quando si usa la penna.

Inclinazione X
X Tilt rappresenta l'angolo del piano tra il piano Y-Z e il piano contenente l'asse trasducente e l'asse Y.

È necessario specificare l'intervallo fisico e l'intervallo logico. L'intervallo fisico deve essere compreso tra -90 e 90. L'intervallo logico deve essere sufficientemente grande per fornire dati accurati ad almeno due posizioni decimali. I radianti possono essere usati anche per l'intervallo fisico. L'elenco seguente mostra una tipica combinazione logica e fisica.

  • Minimo logico: -9000
  • Numero massimo logico: 9000
  • Unità: gradi
  • Esponente unità: -2
  • Minimo fisico: -9000
  • Massimo fisico: 9000

Inclinazione Y
Y Tilt rappresenta l'angolo del piano tra il piano X-Z e il piano contenente i piani X trasducibili.

L'intervallo fisico e l'intervallo logico devono essere specificati. L'intervallo fisico deve essere compreso tra -90 e 90. L'intervallo logico deve essere abbastanza grande per fornire dati accurati a almeno due cifre decimali. I radianti possono essere usati anche per l'intervallo fisico. L'elenco seguente mostra una combinazione logica e fisica tipica.

  • Minimo logico: 0
  • Massimo logico: 18000
  • Unità: gradi
  • Unità esponente: -2
  • Minimo fisico: -9000
  • Massimo fisico: 9000

Curva
Twist specifica la rotazione in senso orario del cursore intorno al proprio asse principale.

L'intervallo fisico e l'intervallo logico devono essere specificati. L'intervallo fisico deve essere compreso tra 0 e 360. L'intervallo logico deve essere abbastanza grande per fornire dati accurati a almeno due cifre decimali. I radianti possono essere usati anche per l'intervallo fisico. In questo caso, l'intervallo logico deve essere sufficiente per segnalare valori accurati a almeno quattro cifre decimali. L'elenco seguente mostra una combinazione logica e fisica tipica.

  • Minimo logico: 0
  • Massimo logico: 62831
  • Unità: Radianti
  • Esponente unità: -4
  • Minimo fisico: 0
  • Massimo fisico: 62831

Azimuth
Azimuth specifica la rotazione antiorario del cursore intorno all'asse Z attraverso un intervallo circolare completo. L'intervallo fisico e l'intervallo logico devono essere specificati. L'intervallo fisico deve essere compreso tra 0 e 360, tuttavia il dispositivo può segnalare l'intervallo completo o metà dell'intervallo presupponendo che i puntini di sospensione del tocco siano simmetrici in base alle funzionalità hardware. L'intervallo logico deve essere abbastanza grande per fornire dati accurati a almeno due cifre decimali. I radianti possono essere usati anche per l'intervallo fisico. In questo caso, l'intervallo logico deve essere abbastanza grande per segnalare valori accurati per almeno 4 cifre decimali. L'elenco seguente mostra una combinazione logica e fisica tipica.

  • Minimo logico: 0
  • Massimo logico: 36000
  • Unità: gradi
  • Unità esponente: -2
  • Minimo fisico: 0
  • Massimo fisico: 36000

Nota L'unità esponente deve essere -2 quando Unit è Gradi e -4 quando Unit è Radians.