Coleções de nível superior HID necessárias (required-hid-top-level-collections)
Este tópico discute as coleções de nível superior de HID necessárias que são usadas para relatórios de caneta em sistemas operacionais Windows 10 e posteriores.
Um dispositivo de caneta Windows integrado deve expor, no mínimo, a única coleção obrigatória de nível superior para relatórios de caneta. Uma coleção opcional (mas recomendada) para atualizações de firmware também pode ser implementada. E em sistemas operacionais anteriores ao Windows 10, uma coleção de mouse opcional (fictícia) para suporte a cursor de caneta também pode ser implementada.
O diagrama a seguir mostra as coleções HID para um dispositivo de caneta Windows integrado.
Coleção Mouse (Dummy)
Um dispositivo de caneta Windows integrado pode usar o protocolo HID para fornecer uma coleção de nível superior que aparece como uma área de trabalho/mouse genérica (Página 0x01, 0x02 de uso).
A coleção de mouse (fictício) de um dispositivo Windows Pen integrado serve ao propósito de fornecer ao host um dispositivo de mouse compatível com HID, para fins de exibição de um cursor em sistemas operacionais anteriores ao Windows 10. Nenhum relatório real do mouse é necessário a partir desta coleção; apenas a presença da coleção de camundongos no descritor. Se você não precisar oferecer suporte a sistemas operacionais anteriores ao Windows 10, essa coleção poderá ser omitida.
Coleção integrada de canetas do Windows
Um dispositivo de caneta Windows integrado deve usar o protocolo HID em um sistema Windows 10 de tal forma que o dispositivo forneça uma coleção de nível superior que apareça como um digitalizador/caneta integrada (Página 0x0D, 0x02 de uso).
A coleção integrada de canetas do Windows serve ao propósito de fornecer relatórios avançados de contato, pressão, apagamento e botão para o host. Opcionalmente, a coleção pode oferecer suporte a um relatório de recursos para obter o status de certificação do dispositivo. O relatório de entrada obrigatório é especificado em detalhes na seção Relatórios de Entrada Integrados da Caneta do Windows deste tópico. Um relatório de recurso opcional (mas altamente recomendado) pode ser implementado para obter dicas de modo de latência do host. Este recurso opcional pode ajudar a obter um consumo mínimo de energia em dispositivos USB que estão armados para despertar no modo de suspensão.
Relatório do recurso de status de certificação do dispositivo
Se você implementar o relatório de recurso de status de certificação de dispositivo, o host do dispositivo Windows Pen integrado poderá usá-lo para recuperar o blob de 256 bytes do dispositivo.
Os 256 bytes devem ser especificados por meio de um uso HID específico do fornecedor, em uma página de uso definida pelo fornecedor (Página 0xFF, 0xC5 de uso) no relatório de recurso de status de certificação do dispositivo.
Antes de um dispositivo receber um blob de 256 bytes que indica seu status de certificação, ele deve implementar um blob padrão da seguinte maneira:
0xfc, 0x28, 0xfe, 0x84, 0x40, 0xcb, 0x9a, 0x87, 0x0d, 0xbe, 0x57, 0x3c, 0xb6, 0x70, 0x09, 0x88, 0x07, 0x97, 0x2d, 0x2b, 0xe3, 0x38, 0x34, 0xb6, 0x6c, 0xed, 0xb0, 0xf7, 0xe5, 0x9c, 0xf6, 0xc2, 0x2e, 0x84, 0x1b, 0xe8, 0xb4, 0x51, 0x78, 0x43, 0x1f, 0x28, 0x4b, 0x7c, 0x2d, 0x53, 0xaf, 0xfc, 0x47, 0x70, 0x1b, 0x59, 0x6f, 0x74, 0x43, 0xc4, 0xf3, 0x47, 0x18, 0x53, 0x1a, 0xa2, 0xa1, 0x71, 0xc7, 0x95, 0x0e, 0x31, 0x55, 0x21, 0xd3, 0xb5, 0x1e, 0xe9, 0x0c, 0xba, 0xec, 0xb8, 0x89, 0x19, 0x3e, 0xb3, 0xaf, 0x75, 0x81, 0x9d, 0x53, 0xb9, 0x41, 0x57, 0xf4, 0x6d, 0x39, 0x25, 0x29, 0x7c, 0x87, 0xd9, 0xb4, 0x98, 0x45, 0x7d, 0xa7, 0x26, 0x9c, 0x65, 0x3b, 0x85, 0x68, 0x89, 0xd7, 0x3b, 0xbd, 0xff, 0x14, 0x67, 0xf2, 0x2b, 0xf0, 0x2a, 0x41, 0x54, 0xf0, 0xfd, 0x2c, 0x66, 0x7c, 0xf8, 0xc0, 0x8f, 0x33, 0x13, 0x03, 0xf1, 0xd3, 0xc1, 0x0b, 0x89, 0xd9, 0x1b, 0x62, 0xcd, 0x51, 0xb7, 0x80, 0xb8, 0xaf, 0x3a, 0x10, 0xc1, 0x8a, 0x5b, 0xe8, 0x8a, 0x56, 0xf0, 0x8c, 0xaa, 0xfa, 0x35, 0xe9, 0x42, 0xc4, 0xd8, 0x55, 0xc3, 0x38, 0xcc, 0x2b, 0x53, 0x5c, 0x69, 0x52, 0xd5, 0xc8, 0x73, 0x02, 0x38, 0x7c, 0x73, 0xb6, 0x41, 0xe7, 0xff, 0x05, 0xd8, 0x2b, 0x79, 0x9a, 0xe2, 0x34, 0x60, 0x8f, 0xa3, 0x32, 0x1f, 0x09, 0x78, 0x62, 0xbc, 0x80, 0xe3, 0x0f, 0xbd, 0x65, 0x20, 0x08, 0x13, 0xc1, 0xe2, 0xee, 0x53, 0x2d, 0x86, 0x7e, 0xa7, 0x5a, 0xc5, 0xd3, 0x7d, 0x98, 0xbe, 0x31, 0x48, 0x1f, 0xfb, 0xda, 0xaf, 0xa2, 0xa8, 0x6a, 0x89, 0xd6, 0xbf, 0xf2, 0xd3, 0x32, 0x2a, 0x9a, 0xe4, 0xcf, 0x17, 0xb7, 0xb8, 0xf4, 0xe1, 0x33, 0x08, 0x24, 0x8b, 0xc4, 0x43, 0xa5, 0xe5, 0x24, 0xc2
O host pode solicitar o relatório de recurso de status de certificação de dispositivo de um dispositivo de caneta Windows integrado a qualquer momento, depois de ler o descritor de relatório.
Relatório do recurso de modo de latência
Observação
O Windows 10, a versão 1511 e sistemas operacionais anteriores não emitem atualmente esse relatório de recursos HID para dispositivos com caneta ou tela sensível ao toque que fornecem suporte para ele. No entanto, a adição do suporte ao Relatório do recurso de modo de latência a um dispositivo garantirá que o dispositivo esteja preparado para uma data futura em que o Windows passar oferecer esse suporte em dispositivos de caneta ou tela sensível ao toque.
O relatório de recurso do modo de latência é enviado pelo host para um dispositivo de caneta Windows integrado, para indicar quando a alta latência é desejável para economia de energia e, inversamente, quando a latência normal é desejada para operação. No caso de um dispositivo Windows pen integrado conectado por USB, isso permite que o dispositivo diferencie entre ser suspenso por inatividade (IDLE de tempo de execução) e ser suspenso porque o sistema está entrando no S3 ou no Modo de Espera Conectado.
O modo de latência deve ser indicado por meio do valor do uso do modo de latência (Página 0x0D, Uso 0x60) no relatório do recurso de modo de latência.
Valor do modo de latência | Modo de latência |
---|---|
0 | Normal |
1 | Alto |
Relatórios de entrada integrados da caneta do Windows
Os usos na tabela a seguir são usados pelo host para extrair dados de caneta de um relatório de entrada, por meio da coleção de caneta integrada do Windows. A tabela mostra todos os usos obrigatórios e os usos opcionais suportados pelo Windows para gerar relatórios sobre a caneta.
Membro | Descrição | ? | ID | Obrigatório/opcional | Necessário para HLK |
---|---|---|---|---|---|
X | Coordenada X de posição do contato | 0x01 | 0x30 | Obrigatório | Yes |
Y | Coordenada Y de posição do contato | 0x01 | 0x31 | Obrigatório | Yes |
Dica | Defina se a caneta estiver na superfície do digitalizador | 0x0D | 0x42 | Obrigatório | Yes |
Dentro do alcance | Indica se a caneta está no alcance do digitalizador | 0x0D | 0x32 | Obrigatório | Yes |
Botão do corpo | Estado do botão localizado na lateral da caneta | 0x0D | 0x44 | Obrigatório | Yes |
Inverter | Indica que a orientação da caneta implica uma intenção de apagar | 0x0D | 0x3C | Opcional | Yes |
Borracha | Indica que a caneta está apagando | 0x0D | 0x45 | Opcional | Yes |
Pressão da ponta | Pressão exercida na ponta da caneta | 0x0D | 0x30 | Opcional | Yes |
Hora da verificação | Tempo de varredura relativo por quadro | 0x0D | 0x56 | Opcional | Não |
X-Tilt | O ângulo de inclinação da caneta ao longo do eixo x | 0x0D | 0x3D | Opcional | Não |
Inclinação em Y | O ângulo de inclinação da caneta ao longo do eixo y | 0x0D | 0x3E | Opcional | Não |
Torcer | Rotação da caneta no sentido horário | 0x0D | 0x41 | Opcional | Não |
Número de série do transdutor | Identificador persistente exclusivo para o transdutor | 0x0D | 0x5B | Opcional | Não |
Número de série do transdutor - Parte 2 | Usado para estender o número de série do transdutor por mais 32 bits | 0x0D | 0x6E | Opcional | Não |
ID do fornecedor do transdutor | O identificador atribuído para o fornecedor do transdutor | 0x0D | 0x91 | Opcional | Não |
A tabela a seguir mostra os usos obrigatórios em nível de relatório para relatórios integrados de entrada de caneta do Windows.
Membro | Descrição | ? | ID | Obrigatório/opcional |
---|---|---|---|---|
ID do Relatório | ID de relatório integrado da Caneta do Windows | 0x0D | 0x02 | Obrigatório |
Usos opcionais obrigatórios e compatíveis com Windows
Qualquer dispositivo que não relate todos os usos obrigatórios no nível de contato ou relatório não funcionará como um dispositivo de caneta Windows integrado. Os usos obrigatórios são estritamente impostos pelo host do Windows. Onde um valor máximo lógico não foi definido, o valor pode ser otimizado para reduzir o tamanho do descritor.
As seções a seguir fornecem mais detalhes sobre os usos opcionais obrigatórios e com suporte do Windows que foram apresentados em uma tabela anterior.
X, Y
X e Y informam as coordenadas da caneta integrada. Os seguintes itens globais devem ser especificados para os usos X e Y :
Mínimo físico & Máximo físico
Unidade & Expoente unitário
Mínimo lógico & Máximo lógico (garantindo uma resolução >de entrada = 150DPI)
Observação Todo o intervalo de coordenadas lógicas deve ser reportável nos eixos X e Y .
Ponta da caneta
Usado para indicar quando a ponta da caneta está na superfície ou saiu da superfície do digitalizador. Isso é indicado por um item principal com um tamanho de relatório de 1 bit. Ao entregar um relatório de entrada, o bit deve ser definido quando a caneta estiver na superfície do digitalizador e limpo quando a caneta tiver saído da superfície.
Quando uma caneta está sendo relatada pela primeira vez em um fluxo de relatório com o interruptor de ponta limpo, o local X/Y que está sendo relatado deve ser o mesmo que a última posição relatada com o conjunto de interruptores de ponta.
Dentro do alcance
Usado para indicar quando a ponta da caneta (ou borracha traseira) está ao alcance do digitalizador. Isso é indicado por um item principal com um tamanho de relatório de 1 bit. Ao entregar um relatório de entrada, o bit deve ser definido quando a ponta da caneta (ou borracha traseira) estiver na superfície do digitalizador ou dentro do intervalo detectável do digitalizador, e limpo quando a caneta não for mais detectável. Deve-se notar que o In-Range só deve ser relatado quando a localização X/Y da caneta puder ser relatada de forma confiável e dentro dos parâmetros estabelecidos pelos requisitos da caneta HLK para o Windows 10.
Quando uma caneta está sendo relatada com o interruptor no alcance limpo, o local X/Y que está sendo relatado deve ser o mesmo que a última posição relatada quando o interruptor no intervalo foi definido.
Botão do corpo
Usado para indicar quando o botão na lateral da caneta está pressionado. Isso é indicado por um item principal com um tamanho de relatório de 1 bit. Ao entregar um relatório de entrada, o bit deve ser definido quando esse botão é pressionado e apagado quando o botão é liberado.
Inverter
Usado para indicar quando a orientação da caneta implica uma intenção de apagar. Isso é indicado por um item principal com um tamanho de relatório de 1 bit. Aqui estão algumas diretrizes de relatório de entrada para as diferentes implementações de borracha:
Implementações de borracha final
Ao entregar um relatório de entrada, o bit deve ser definido sempre que a caneta for invertida e limpo quando a caneta não estiver invertida.
Implementações do botão de borracha
Ao entregar um relatório de entrada, o bit deve ser definido sempre que o botão de borracha estiver pressionado e a caneta estiver no alcance do digitalizador e limpa caso contrário.
Borracha
Usado para indicar quando a caneta está apagando. Isso é indicado por um item principal com um tamanho de relatório de 1 bit. Aqui estão algumas diretrizes de relatório de entrada para as diferentes implementações de borracha:
Implementações de borracha final
Ao entregar um relatório de entrada, o bit deve ser definido sempre que a caneta estiver invertida e em contato com a tela, e desmarcada caso contrário.
Implementações do botão de borracha
Ao entregar um relatório de entrada, o bit deve ser definido sempre que o botão de borracha estiver pressionado e a ponta da caneta estiver em contato com a tela, e limpo caso contrário.
Para evitar ativar ou cancelar acidentalmente a funcionalidade de apagamento nesta implementação, é altamente recomendável que, uma vez que a ponta da caneta esteja em contato com a tela, pressionar ou liberar o botão de apagamento não tenha impacto no relatório do bit de borracha.
Quando uma caneta está sendo relatada pela primeira vez em um fluxo de relatório com a opção de apagamento limpa, o local X/Y que está sendo relatado deve ser o mesmo que a última posição relatada quando a opção de apagamento foi definida.
Hora da verificação
O Tempo de varredura relata o tempo relativo do digitalizador em unidades de 100μs. Quando um dispositivo começa a relatar dados subsequentes a um período de inatividade, o Tempo de varredura representa o intervalo de tempo desde o primeiro quadro que foi relatado até a hora do relatório. O primeiro tempo de digitalização recebido é tratado como o tempo base dos próximos tempos relatados. O tempo decorrido entre os tempos de varredura relatados deve refletir a frequência de varredura do digitalizador. É importante notar que, ao contrário de outros usos, o host não permite qualquer flexibilidade para a unidade para o uso do tempo de varredura, se for implementado. Ele precisa estar em unidades de 100 µs. Espera-se que o valor seja renovado, pois apenas 2 bytes são alocados para o contador.
Pressão da ponta
Usado para indicar a pressão que está sendo aplicada na ponta da caneta. Isso é indicado por um item principal com um tamanho de relatório de pelo menos 8 bits, para acomodar um mínimo de 256 níveis distintos de pressão. Para relatar granularidade adicional, você deve usar um tamanho de relatório maior.
Os valores lógicos da pressão relatada devem aderir o mais próximo possível à curva logarítmica ideal mostrada no diagrama a seguir. Os testes de pressão fornecidos pelo conjunto de testes Pen HLK para Windows 10 são projetados para garantir que a curva de pressão relatada esteja dentro dos limites superior e inferior indicados no diagrama. Embora a curva ideal no diagrama, e suas equações associadas, sejam delineadas para um dispositivo que relata 256 níveis, elas podem ser dimensionadas para acomodar qualquer número de níveis discretos.
Enquanto o interruptor da borracha está ativo em canetas com borrachas traseiras sem recursos de detecção de pressão, a pressão da ponta da caneta deve relatar 127 (50% da pressão máxima). Esse valor foi escolhido para suportar canetas e aplicativos que podem consumir pressão real da caneta enquanto o interruptor da borracha está ativo.
X-Tilt
X-Tilt representa o ângulo plano entre o plano Y-Z, o plano que contém o eixo do transdutor de caneta e o eixo Y.
O alcance físico e o alcance lógico precisam ser especificados. O intervalo físico pode ser de no máximo -90 a 90 graus, porém o mínimo/máximo físico informado no descritor deve corresponder ao X-Tilt real/máximo alcançável da caneta, na unidade correta (0x14, Graus). O alcance lógico precisa ser grande o suficiente para fornecer dados com a precisão de pelo menos duas casas decimais. Os radianos também podem ser usados para o alcance físico. O X-Tilt é positivo à direita do usuário na orientação nativa do digitalizador.
Inclinação em Y
Y-Tilt representa o ângulo plano entre o plano X-Z, o plano que contém o eixo do transdutor da caneta e o eixo Y.
O alcance físico e o alcance lógico precisam ser especificados. O intervalo físico pode ser de no máximo -90 a 90 graus, no entanto, o mínimo/máximo físico relatado no descritor deve corresponder à inclinação Y real/máxima alcançável da caneta na unidade correta (0x14, Graus). O alcance lógico precisa ser grande o suficiente para fornecer dados com a precisão de pelo menos duas casas decimais. Os radianos também podem ser usados para o alcance físico. O Y-Tilt é positivo para o usuário na orientação nativa do digitalizador.
Torcer
Twist especifica a rotação no sentido horário da caneta em torno de seu próprio eixo principal.
O alcance físico e o alcance lógico precisam ser especificados. O intervalo físico deve ser de 0 a 360. O alcance lógico precisa ser grande o suficiente para fornecer dados com a precisão de pelo menos duas casas decimais. Os radianos também podem ser usados para o alcance físico. Nesse caso, o intervalo lógico deve ser grande o suficiente para relatar valores com precisão de pelo menos quatro casas decimais.
Número de série do transdutor
O Número de série do transdutor é um identificador persistente exclusivo para o transdutor usado no acessório de caneta que está se comunicando com o digitalizador de caneta. Ele precisa ser de 32 bits e é definido pelo fornecedor ou pela entidade identificada pela ID do fornecedor do transdutor. Em circunstâncias em que o número de série do transdutor é desconhecido para o digitalizador, seja porque o acessório da caneta não suporta a transmissão deste valor ou porque a transmissão não foi recebida na íntegra, o digitalizador deve relatar 0 ao host. A posição nula não é suportada pelo host.
Número de série do transdutor – Parte 2
Número de série do transdutor – Parte 2 permite que um adicional de 32 bits seja especificado como parte do identificador persistente exclusivo para o transdutor usado em um acessório de caneta. Em circunstâncias em que o Número de Série do Transdutor – Parte 2 é desconhecido para o digitalizador, seja porque o acessório da caneta não suporta a transmissão deste valor ou porque a transmissão não foi recebida na íntegra, o digitalizador deve relatar 0 ao host. A posição nula não é suportada pelo host.
ID do fornecedor do transdutor
A ID do fornecedor do transdutor é um campo para indicar o fabricante do transdutor usado no acessório da caneta que se comunica com o digitalizador de caneta. Deve ser uma ID de fornecedor atribuída por USB-IF de 2 bytes do fabricante ou da IHV/OEM que autoriza o uso de sua ID de fornecedor USB-IF para essa finalidade.