Estou desenvolvendo uma aplicação que vai rodar (também) em celulares qwerty (por enquanto estou testando no Moto Q).
O meu problema é que quando a aplicação é inicializada, o teclado se coloca no modo ALT. Aí, por exemplo, quando eu clico em ‘T’, o caracter inserido é o ‘(’ (que está em cima do T).
Só clicar alt antes de digitar resolve, sim. Mas eu gostaria de saber se tem um jeito de eu fazer isso pelo meu usuário =P
É bastante código, e imagino que não seja relevante, pois estou usando uma classe Canvas. A entrada é feita através da função keyPressed do Canvas, que já traz o código ascii da tecla (que no caso já vem com alt)
Bom creio que você deveria tratar cada código e ai trocar pelo valor certo,
o teclado que esta usando é qwerty? se for é mais facil ainda.
Mas se não for você vai ter que fazer igual ao textfield que tem um controle de quantas vezes o botão foi precionado e ai vai trocando a letra na tela.
Não sei se fui claro.
Eu mesmo fiz um customitem assim. se precisar de ajuda diga onde.
Obrigada por tentar me ajudar! Acho que não fui muito clara ao explicar o meu problema. Vou tentar fazer melhor ^^
O teclado é qwerty sim. Eu tenho um controle desses como tu falou pros demais teclados.
O teclado do Moto Q (que é o que eu estou usando pra testar, mas o funcionamento é semelhante aos demais) funciona da seguinte maneira:
Cada botão tem dois caracteres escritos, um em cima do outro. Por exemplo, existe a tecla 1/W (1 em cima, W embaixo)
Quando você simplesmente aperta essa tecla, o programa recebe, na função keyPressed, o argumento Tecla como 119 (decimal), o código ascii do caracter w.
Se o usuário desejar apertar 1, ele deve pressionar ALT, e depois a tecla 1/W. O programa então recebe o argumento pra função como 49, o código ascii do caracter 1.
Se o ALT é pressionado duas vezes consecutivas, então todos os demais cliques serão nos caracteres de cima (é como um caps lock, só que não pra maísculas/minúsculas, mas pra seleção de caracteres). Apertando ALT novamente, volta ao normal.
Por exemplo: a seqüência de cliques ALT 1/w 1/w ALT ALT 1/w 1/w 1/w ALT 1/w resulta nos sinais 49 119 49 49 49 119 (1 w 1 1 1 w)
A tecla ALT não gera uma chamada de keyPressed! Sendo assim, eu não tenho como saber se o cara tá com o ALT ou não, isso é gerenciado pelo celular.
O meu problema é que quando o cara entra no meu programa, é como se ele tivesse apertado ALT duas vezes. Eu quero uma forma de isso não acontecer, pois são válidos para mim apenas números e letras.
Do jeito que tá, o cara entra e clica, por exemplo, na tecla (/T e o programa recebe ‘(’, aí não responde, porque é inválido. Como nada acontece, o cara fica achando que o programa não tá funcionando, que travou, etc.
Agora que me atentei que estava falando do Moto Q, me desculpe.
Mas é estranho estar dando isso aqui onde trabalho tem 1 e funciona corretamente.
Nunca vi um caso assim em nenhum programa que testamos nele. E olha que fazemos os programas para rodar em quantos modelos de celulares forem possíveis, sendo assim não tem programação especifica e mesmo assim funciona.
Por isso que eu tinha pedido para postar o seu código pois sem ele fica complicado de te ajudar porque não dá para saber o que esta fazendo exatamente.