[RESOLVIDO] Combinação de teclas, acentuação e vogais

Oi javeiros!

Seguinte, estou implementando um teclado virtual e esbarrei na seguinte dificuldade, combinar um acento (agundo, til, etc) e uma vocal.
Exemplo: Eu digito no teclado virtual o acento agudo “´” e depois a vogal “A”, após a digitação do “A” ela converte para “Á”.

Alguém já implementou algo parecido. Poderiam me ajudar?

Abraço.

Oi,

Java Desktop ?

Só por curiosidade, esse teclado já está funcionando? Ele consegue pegar a janela que está em processamento (tipo… notepad) e escreve dentro dela ?

Tchauzin!

já tentou dar uma olhada na tabela ASCII?
e na classe Robot?

Até

Bom dia a todos!

Srta. Lina, este teclado é apenas para aplicação que estou criando, que será usado em touch screen. Ou seja o teclado virtual é exclusivo pra esta aplicação desktop.
E entendo que talvez a combinação do teclado virtual e mas a classe Robot que a Srta. Eliangela mencionou seria a saida para o que esta procurando.

Srta. Eliangela, a classe Robot não se aplica a este programa. O teclado virtual já funciona, mas necessito de um algoritimo que combine chaves de acetuação e vogais.
Exemplo: Digitamos “´” acento agundo e depois “a” e o programa junta as duas chave e forma “á”.

Muito abrigado pela ajuda, vocês são muito gentis.

Até mais.

http://java.sun.com/javase/6/docs/api/java/text/Normalizer.html
Use o enumerador Normalizer.Form.NFC.

Ou seja:

a + acento agudo -> á

Entretanto, o acento agudo a ser usado é o Unicode "\u0301" (em Unicodês, U+0301, COMBINING ACUTE ACCENT). O que deve ser feito:

  • Achar os códigos gerados pelo teclado para os acentos
  • Criar uma string contendo a letra e o acento correspondente
  • Usar java.text.Normalizer.normalize(). Ela irá retornar uma outra string.

O programa abaixo requer Java 6.0. Em Java 5.0 ou anteriores, não existe o java.text.Normalizer, e você terá de achar os acentos "no braço".

import java.text.Normalizer;

class TesteNormalizer {
    // Se for rodar este programa em Windows, para visualizar corretamente os acentos, abra
    // um Prompt de Comando, altere a fonte para Lucida Console (no menu Propriedades do Prompt de Comando),
    // e então digite o comando "chcp 1252".

    public static void main(String[] args) {
        String s = "a" + "\u0301";
        System.out.printf ("Antes da normalização: U+%04X U+%04X %n", (int) s.charAt(0), (int) s.charAt(1));
        s = Normalizer.normalize (s, Normalizer.Form.NFC);
        System.out.println (s);
        System.out.printf ("O código Unicode de á é: U+%04X %n", (int) s.charAt (0));
    }
}

Ele deve imprimir:

C:\TEMP>java -cp . TesteNormalizer
Antes da normalização: U+0061 U+0301
á
O código Unicode de á é: U+00E1

Dica dos códigos Unicode dos acentos mais usados:
agudo = U+0301
grave = U+0300
circunflexo = U+0302
til = U+0303
trema = U+0308

Veja: http://www.fileformat.info/info/unicode/block/combining_diacritical_marks/list.htm

Muitissimo obrigado Thingol.

Era realmente isso que estava procurando.

Irei implementar o nosso teclado virtual em cima do código que você me passou.

Até mais.