Gestos de Movimentos

O Windows Vista inclui um conjunto de oito gestos básicos de movimento. Os movimentos de movimentos de caneta linear são rápidos associados a ações de rolagem e comandos.

Detalhes do Filme

O recurso de movimentos fornece ao usuário uma nova maneira de interagir com o Tablet PC, permitindo que ações comuns sejam executadas fazendo gestos rápidos com a caneta. Os movimentos coexistem e não interrompem ações normais do usuário, como toques à esquerda e à direita, rolagem e escrita à tinta.

Um movimento é um gesto de caneta unidirecional que exige que o usuário entre em contato com o digitalizador em um movimento rápido de movimento. Um movimento é caracterizado por alta velocidade e um alto grau de retaza. Um movimento é identificado por sua direção. Os movimentos podem ser feitos em oito direções correspondentes às direções cardeal e secundária da bússola.

Uma ação ou ação de movimento é a ação ou o atalho executado em resposta a um movimento. Os movimentos são mapeados para ações. A ilustração a seguir mostra um diagrama de oito movimentos de caneta que correspondem às ações de movimento.

ilustração mostrando o mapa de gestos

À medida que o usuário move a caneta sobre o digitalizador de um Tablet PC, o hardware gera pacotes de caneta que são roteado para o subsistema de entrada de caneta da plataforma Tablet PC. Normalmente, se a caneta estiver sendo usada como um substituto para o mouse, o subsistema de entrada da caneta usará esses pacotes de caneta e os enviará, possivelmente com modificações, ao User32, o componente do Windows responsável pelo processamento da entrada do mouse. Se a caneta estiver sendo usada em uma superfície de escrita à tinta, a tinta será renderizada em vez de os pacotes do mouse serem gerados.

A rotina de detecção de movimento é implementada no subsistema de entrada da caneta. A detecção de movimentos começa na caneta e continua até:

  1. a sequência de pacotes recebidos é determinada como não ser um movimento ou

  2. ocorre uma pen-up.

Enquanto a detecção de movimento está ocorrendo, os pacotes de caneta são retidos e não enviados para o sistema. Isso deve ser feito porque o envio de pacotes pode interferir na ação de movimento executada. Por exemplo, enviar pacotes durante um movimento que mapeia para uma ação de cópia ignoraria o que foi selecionado, o que significa que não haveria nada a ser copiado no momento em que a ação foi enviada.

À medida que os pacotes fluem para o subsistema de entrada da caneta, a rotina de detecção de movimento calcula as métricas sobre o comprimento, a velocidade, o tempo e a curvatura do movimento que está sendo executado. Com cada pacote que chega, a rotina de detecção atualiza cada uma dessas métricas. Assim que qualquer uma das métricas ficar fora do que constituiria um movimento, a detecção de movimento termina e os pacotes são enviados.

Onde os movimentos são detectados

Gestos de movimento são possibilitados pelo fato de que os arrastos normalmente são executados lentamente. O usuário deve primeiro direcionar o ponto inicial do arrastar, executar o arrastar e, em seguida, direcionar o ponto de extremidade. Normalmente, isso levará muito tempo para se qualificar como um filme. No entanto, em superfícies de escrita à tinta traços rápidos que se qualificariam como movimentos acontecem com frequência; cruzar um 't' é um exemplo comum. Portanto, por padrão, a detecção de movimento é desativada sobre superfícies de escrita à tinta e ativada em todo o sistema.

Problemas de foco

Depois que um movimento é detectado, uma sequência de eventos começa que, em última análise, leva o sistema a executar uma determinada ação em resposta ao movimento que ocorreu. Primeiro, a rotina de detecção dentro do subsistema de entrada da caneta determina para qual janela o movimento deve ser enviado. Geralmente, essa é a janela que tem foco, mas há exceções. Para movimentos de rolagem, o movimento é enviado para a janela sobre a qual o movimento ocorreu. Observe que essa não é necessariamente a janela com foco. Quando um movimento é enviado para uma janela que não tem foco, o foco não muda para essa janela.

Ações de Movimento

Depois que a janela de destino for determinada, essa janela poderá manipular o movimento em si, dependendo do comportamento do evento padrão ou programado. Os aplicativos podem responder à ação mais apropriada com base no aplicativo e na direção e posição do movimento. Por exemplo, em um aplicativo de mapeamento, movimentos para cima e para baixo podem ampliar ou reduzir em vez de rolar verticalmente, como seria esperado no comportamento padrão.

Para alertar um aplicativo de que ocorreu um movimento, uma mensagem de janela é enviada a ele. Esta mensagem de janela contém o ponto inicial do movimento e a direção do movimento. Se o aplicativo manipular essa mensagem de janela, nenhuma ação adicional será tomada pelo subsistema de entrada da caneta.

Depois que um movimento é detectado, os comentários visuais que representam a ação de movimento são exibidos na tela. Esses comentários servem a duas finalidades. Primeiro, ele confirma para o usuário que o filme foi bem-sucedido. Em segundo lugar, ele lembra ao usuário qual ação foi executada, ajudando o usuário a conectar a direção do movimento com sua ação associada.

Os comentários do filme consistem em duas partes; um ícone que representa a ação e um rótulo que contém o nome da ação. O rótulo é exibido abaixo do ícone. Os comentários são exibidos imediatamente depois que o movimento é detectado. Embora os aplicativos possam personalizar seu comportamento em resposta a movimentos manipulando a mensagem da janela de movimento, o aplicativo não pode desabilitar ou modificar os comentários de movimento.

Espera-se que a maioria dos aplicativos não tenha reconhecimento de movimento e, portanto, não manipulará a mensagem de janela descrita acima. Se a mensagem não for tratada, o subsistema de entrada da caneta tomará mais medidas. Primeiro, ele pesquisa a ação associada à direção do movimento detectado. Em seguida, ele executará etapas (descritas na tabela abaixo) para fazer com que a janela de destino execute essa ação. Para muitas das ações de movimento, isso envolve o envio de um comando de aplicativo, mas determinadas ações implementadas não.

Processando comandos de aplicativo

Seu aplicativo deve responder a qualquer um dos comandos do aplicativo que podem ser potencialmente atribuídos a um gesto de movimento. Se um aplicativo não responder à mensagem WM_TABLET_FLICK, o Windows Vista acompanhará enviando a notificação de WM_APPCOMMAND aplicável, seguida por uma notificação de WM_KEYDOWN .

Veja a seguir uma lista de comandos de aplicativo que podem ser atribuídos a movimentos, com a mensagem de pressionamento de teclas de backup que pode ser enviada.

Comando Pressionamento de teclas de backup
APPCOMMAND_BROWSER_BACKWARD
Nenhum
APPCOMMAND_BROWSER_FORWARD
Nenhum
APPCOMMAND_COPY
Ctrl+C
APPCOMMAND_PASTE
Ctrl+V
APPCOMMAND_UNDO
Ctrl+Z
APPCOMMAND_DELETE
Del
APPCOMMAND_CUT
Ctrl+X
APPCOMMAND_OPEN
Ctrl+O
APPCOMMAND_PRINT
Ctrl+P
APPCOMMAND_SAVE
Ctrl+S
APPCOMMAND_REDO
Ctrl+Y
APPCOMMAND_CLOSE

A edição de comandos como Copiar, Colar, Recortar e Excluir pode ser direcionada contra uma seleção ou contra o objeto localizado na base do gesto de movimento. Se não houver seleção, você poderá usar os dados na estrutura FLICK_POINT para determinar qual, se houver, o objeto pode ter sido o destino do comando de edição.

Referência da API flicks

Respondendo a gestos de movimento