"apertar" alt na aplicação

9 respostas
F

Olá,

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

Obrigada pela atenção!

9 Respostas

ricoldi

Qual o objeto input esta usando?

Poste essa parte do código, porque pode ser o tipo de entrada que esta escolhendo que define seu tipo de entrada com “alt”.

Att
Ricoldi

F

É 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)

ricoldi

Posta só a parte do input. não precisa postar o resto.

F

OK. resumidamente é isso

public class blablabla extends Canvas
{
      //blablabla
     String texto="";

    protected void keyPressed(int Tecla)
    {
        texto += Tecla;
    }
}
ricoldi

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.

Abraços
Ricoldi

F

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.

ricoldi

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.

F

Talvez seja problema da JVM… qual tu usa, ricoldi?
Eu instalei a Esmertec JBED

ricoldi

Usamos 2, no MotoQ não sei exatamente qual esta entre as

WebSphere - http://www-01.ibm.com/software/wireless/weme/

CrEme - http://www.nsicom.com/Default.aspx?tabid=138

Quem sabe mais das vms são outros caras que trabalham com a gente. eu só faço os códigos quem testa e configura vms são eles.

Ve ai estas 2 se te servem, qualquer coisa fala.

Abraços,
Ricoldi

Criado 5 de janeiro de 2009
Ultima resposta 8 de jan. de 2009
Respostas 9
Participantes 2