Teclado virtual para dispositivos com cabeça duração
Em Windows 10 IoT Core, versão 1809, o componente de teclado na tela mudou significativamente e para melhor! O IoT Core agora usa os mesmos componentes de teclado virtual que a edição desktop do Windows.
Novos recursos
A nova implementação de teclado fornece os seguintes benefícios para o desenvolvimento de dispositivos de cabeça dura:
- Todo o conjunto de layouts de linguagem de teclado do Windows
- Suporte para escopos de entrada (por exemplo, endereço Email, PIN numérico, campo de pesquisa etc.)
- Input Method Editor (IME)
- Campos de entrada de texto não obscurecidos
- Modo de Ditado
- Uma seleção de preferências de interface do usuário
Pacotes de recursos
Para prototipagem de imagens (desenvolvimento), o recurso de teclado na tela já está incluído, mas você precisará habilitá-lo nas Configurações do Dispositivo no Portal de Dispositivos do Windows.
Para comercialização, os seguintes pacotes de recursos opcionais adicionarão o teclado virtual à sua imagem:
- IOT_SHELL_ONSCREEN_KEYBOARD
- IOT_SHELL_ONSCREEN_KEYBOARD_FOLLOWFOCUS
Dica
Para obter mais informações sobre os recursos do IoT Core, consulte Lista de Recursos do IoT Core e Guia de fabricação do IoT Core.
Layouts de linguagem de teclado do Windows
Com esta versão, os layouts de idioma com suporte se expandiram para incluir o conjunto completo daqueles disponíveis na edição desktop do Windows. Para permitir que os usuários selecionem entre layouts de idioma diferentes, você normalmente incluiria a interface do usuário de seleção na área Configurações do aplicativo. A API a seguir é fornecida para permitir que seu aplicativo defina o idioma que o teclado virtual usará:
Windows.Globalization.Language.TrySetInputMethodLanguageTag
Um exemplo dessa API pode ser visto no aplicativo de exemplo IoTCoreDefaultApp, no arquivo LanguageManager.cs .
Suporte para escopos de entrada
Nas versões anteriores, apenas o escopo de entrada EmailSmtpAddress estava disponível. Nesta versão, o conjunto completo de escopos de entrada está disponível. O tópico a seguir explica os escopos de entrada e como usá-los em seus aplicativos:
Usar o escopo de entrada para alterar o teclado virtual
Input Method Editor (IME)
Esta versão fornece um Editor de Método de Entrada, que é necessário para qualquer idioma que tenha mais grafemas do que teclas no teclado, como chinês, japonês e coreano.
Campos de entrada de texto não obscurecidos
Em versões anteriores, o teclado virtual poderia obscurecer o campo de texto focado para que o usuário não pudesse ver o que estava digitando. Esta versão corrige esse problema rolando automaticamente o campo de texto para exibição para que ele não seja mais obscurecido pelo teclado virtual.
Modo de Ditado
Quando o idioma de entrada é definido como o idioma do sistema operacional, que é o padrão, o recurso de entrada de reconhecimento de voz está disponível. Para mostrar o botão de ditado no teclado, consulte a seção a seguir na configuração da Interface do Usuário.
Configuração da Interface do Usuário
O teclado virtual fornece várias opções configuráveis para sua interface do usuário. Eles são configurados por meio do registro.
Durante o desenvolvimento, você pode usar o PowerShell ou o Secure Shell (SSH). Para criar uma imagem OEM, o mecanismo preferencial para definir valores do Registro é o OEMInput.xml
arquivo discutido aqui:
Observação
A maioria das configurações do Registro documentadas aqui entrará em vigor enquanto o teclado virtual estiver visível. Isso permite que você durante o desenvolvimento tente facilmente diferentes combinações de valores de configurações, vendo imediatamente as alterações resultantes em tempo real. Se uma configuração não entrar em vigor imediatamente, você precisará reinicializar o dispositivo para ver as alterações na interface do usuário do teclado.
Altura do teclado
Por padrão, o teclado virtual usará os 45% inferiores da altura da tela. Isso pode parecer muito grande ou pequeno em seu dispositivo, dependendo de seu tamanho e resolução. Você pode ajustar a altura até um máximo de dois terços da altura da tela. Qualquer valor que não estiver no intervalo será fixado no intervalo. Como isso é especificado como um valor de ponto flutuante, ele permite precisão no nível de pixel. Basta aplicar a seguinte fórmula para calcular o percentual:
percentage = (100 * <desired_pixel_height>) / <screen_height>
Por exemplo, para alterar a altura para 56,783%, você definiria o seguinte valor do Registro:
set OskRootKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK
reg.exe ADD "%OskRootKey%" /v MaxHeightPercentage /t REG_SZ /d "56.783" /f
ou do PowerShell:
set OskRootKey "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK"
cd $OskRootKey
Set-ItemProperty -Path . -Name MaxHeightPercentage -Type String -Value 56.783
Observação
O tipo de valor do Registro deve ser um String (REG_SZ
), para que os valores fracionários possam ser representados com.
um ponto decimal. O uso de DWord (REG_DWORD
) não funcionará, mesmo para percentuais de número inteiro.
Preferências adicionais
O conjunto restante de preferências é Valores de cadeia de caracteres na subchave Preferências:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK\Preferences
Valor do Registro | Valor padrão | Descrição |
---|---|---|
AudioFeedback_Disabled | "0" | "0" permite que a chave clique em comentários de áudio; "1" o desabilita. |
Dictation_Disabled | "1" | "0" mostra o botão ditado (reconhecimento de voz) ; "1" o oculta. (consulte a observação abaixo) |
KeyboardModeEnabled_full | "0" | "0" desabilita o modo de teclado completo; "1" permite isso. |
KeyboardModeEnabled_narrow | "1" | "0" desabilita o modo de teclado estreito; "1" permite isso. |
KeyboardModeEnabled_wide | "1" | "0" desabilita o modo de teclado largo; "1" permite isso. |
ModeOrder | "wide;narrow;full" | A ordem (da esquerda para a direita) na qual os modos são listados no menu suspenso do modo, se habilitado |
SettingsMenuKey_Collapsed | "0" | Oculta o menu suspenso do modo. Defina isso como "1" se apenas um modo estiver habilitado. |
Paste_Disabled | "0" | "0" mostra o botão Colar; "1" o oculta. A alteração entra em vigor após a reinicialização. |
CloseButton_Disabled | "0" | "0" mostra o botão Fechar; "1" oculta o botão Fechar. A alteração entra em vigor após a reinicialização. |
EmojiKeyEnabled | "0" | "0" oculta a tecla Emoji; "1" mostra isso, permitindo que o usuário insira caracteres emoji. |
Observação
O modo de ditado requer que um pacote de fala seja instalado para o idioma de entrada selecionado, bem como um dispositivo de entrada de áudio. Se um pacote de fala correspondente não estiver instalado, o botão de ditado não será mostrado.
Todas as imagens incluem a linguagem de fala en-US. Outros pacotes de fala são instalados como recursos opcionais. Para obter mais informações sobre recursos de IoT, consulte Guia de fabricação de IoT Core e Lista de Recursosdo IoT Core.
Por exemplo, para habilitar apenas wide
o modo de teclado, no PowerShell, você pode fazer o seguinte:
set OskRootKey "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK"
cd $OskRootKey
mkdir Preferences
cd Preferences
Set-ItemProperty . -Name KeyboardModeEnabled_full -Value "0" # Optional, since the default is "0"
Set-ItemProperty . -Name KeyboardModeEnabled_narrow -Value "0"
Set-ItemProperty . -Name KeyboardModeEnabled_wide -Value "1" # Optional, since the default is "1"
Set-ItemProperty . -Name SettingsMenuKey_Collapsed -Value "1"