Debugando o KeyStroke, os caminhos que cada sobrecarga de getKeyStroke toma é muito diferente…
Recomendo trocar de String para char e retestar.
O próprio JavaDoc demonstra que há alguma diferença:
http://docs.oracle.com/javase/6/docs/api/javax/swing/KeyStroke.html#getKeyStroke(java.lang.String)
http://docs.oracle.com/javase/6/docs/api/javax/swing/KeyStroke.html#getKeyStroke(char)
Achei!!!
inputMap.put(KeyStroke.getKeyStroke(“typed Ç”), meuCedilha);
Para o caso do Ç, precisa colocar o typed antes (não está escrito em lugar nenhum essa obrigatoriedade)
Seguinte,
Peguei teu código e dei uma olhada nele.
Há alguns pequenos erros nele e alguns ajustes:
Primeiro o for para criar os Action/InputMaps
Vc tem um array de 27 objetos (de zero a 26) mas para antes do último (que é justamente o cedilha).
Troquei por <=
for( int i = 0; i <= 26; i++ )
Depois, fiz as alterações:
InputMap iMap = visaoPrincipal.getPainelPrincipal().getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW );
Eu troquei por
InputMap iMap = visaoPrincipal.getPainelPrincipal().getInputMap();
Depois troquei o conteúdo do for por:
String actionName = "botaoA" + i;
String letra = botoesA[i].getText();
aMap.put( actionName, acaoBotoesAlfabeto[i] = new BotaoAlfabetoAcao(i) );
iMap.put( KeyStroke.getKeyStroke(letra.toLowerCase().charAt(0)), actionName ); //Para pegar letras em minúsculo
iMap.put( KeyStroke.getKeyStroke(letra.toUpperCase().charAt(0)), actionName ); //Para pegar letras em maiúsculo
Por fim, na classe Dados, alterei o método:
/** * Configura/Notifica a área de texto da Visão para texto( alfabeto ) */
public void setAreaDeTexto( int e ) {
String letra = botoesA[e].getText();
visaoPrincipal.getAreaDeTexto().setText( visaoPrincipal.getAreaDeTexto().getText() + letra );
}
A sim… após esses ajustes, funcionou!
com relação ao método setAreaDeTexto
Tinha um if e == 26 que colocava o Ç. Provavelmente você já tinha alterado o código 
O problema é que o Ç não é algo padrão (como a Lina tinha comentado).
Quando vc usa String no getKeyStroke, ele já entende a letra maiúscula e minúscula porém ele espera caracteres mapeados (VK_algumacoisa), quando usa char, precisa mapear ambos os casos…
Não diria, neste caso que era erro, mas “particularidades” não bem documentadas 
[quote=lucas_guj]Hmm…Entendi. Caraca essa foi difícil. Só mas uma coisa, você percebeu, quando abriu o programa ai, que no visual editor o layout dele aparece de um jeito e, quando executa, fica de outro jeito? Eu usei layout em tudo, não sei por que ficou assim. Você tem alguma ideia?[/quote]Desculpe cara, mas não usei Visual Editor não (eu dificilmente uso um editor de telas). Mas o correto mesmo é utilizar layout managers sim.
Só uma observação: O Visual Editor foi “descontinuado” e agora há outro plugin: Window Builder. Há algumas versões do Visual Editor muito “bugadas”
.
Não desenvolvo muito telas, mas qdo preciso, prefiro fazer na mão mesmo. Raramente utilizo editores de telas e não gosto do código q o matisse gera.