Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Identificar teclas pressionadas


j4m35_b0nd

Pergunta

Olá pessoal.

Alguém sabe com identificar as teclas pressionadas no teclado?

Eu estou desenvolvendo um editor de texto bem simples, sem interface gráfica, e preciso identificar teclas especiais que são pressionadas.

Através da tabela ASC II, consegui identificar as teclas TAB, BARRA DE ESPAÇOS, BACKSPACE e ENTER, mas não consigo identificar as SETAS DIRECIONAIS, nem as teclas HOME, INSERT, PAGE UP, PAGE DOWN, END e DELETE.

Alguém tem idéia de como proceder?

Obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Encontrei uma solução improvisada que funcionou bem.

tecla = getch();
if (tecla == -32){
     tecla = getch();
     /*Aqui faço a busca pelo atual número que está na variável tecla
     e verifico a qual tecla ele corresponde */
}

Para as teclas que não são padronizadas pela tabela ASCII, a função getch() era executada 2 vezes seguidas, inserindo o valor -32 ou então NULL, e depois era inserido um número pertencente a outra tecla na tabela ascii.

Essa solução que encontrei na internet resolveu o problema, e então dou por resolvido o meu próprio problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá

Solução interessante. Eu pesquisei um pouco para responder a você, imaginando que eventos do tipo KeyUp, KeyDown ou KeyPress resolvessem, mas não achei nada específico para esta situação.

Falta, agora, saber se este código que você encontrou pode ser aplicado de forma mais genérica. Imagino que sim, mas é importante ter essa certeza.

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0
Olá

Solução interessante. Eu pesquisei um pouco para responder a você, imaginando que eventos do tipo KeyUp, KeyDown ou KeyPress resolvessem, mas não achei nada específico para esta situação.

Falta, agora, saber se este código que você encontrou pode ser aplicado de forma mais genérica. Imagino que sim, mas é importante ter essa certeza.

Abraço!

Mesmo você não encontrando algo específico para isso, agradeço por ter tentado.

Para consultas futuras, segue todas as teclas que consegui identificar através dessa solução improvisada.

char tecla;
tecla = getch();
if (tecla == -32){
    tecla = getch();
    switch(tecla){
        case 82: // INSERT
            break;
        case 71: // HOME
            break;
        case 73: // PAGE UP
            break;
        case 83: // DELETE
            break;
        case 79: // END
            break;
        case 81: // PAGE DOWN
            break;
        case 75: //Seta para esquerda
            break;
        case 72: //Seta para cima
            break;
        case 77: //Seta para direita
            break;
        case 80: //Seta para baixo
            break;
        case -123: // F11
            break;
        case -122: // F12
            break;
        case 139: // ALT + F11
            break;
        case 140: // ALT + F12
            break;
    }
}
else if (tecla == NULL){
    tecla = getch();
    switch(tecla){
        case 59: // F1
            break;
        case 60: // F2
            break;
        case 61: // F3
            break;
        case 62: // F4
            break;
        case 63: // F5
            break;
        case 64: // F6
            break;
        case 65: // F7
            break;
        case 66: // F8
            break;
        case 67: // F9
            break;
        case 68: // F10
            break;
        case 104: // ALT + F1
            break;
        case 105: // ALT + F2
            break;
        case 106: // ALT + F3
            break;
        case 107: // ALT + F4
            break;
        case 108: // ALT + F5
            break;
        case 109: // ALT + F6
            break;
        case 110: // ALT + F7
            break;
        case 111: // ALT + F8
            break;
        case 112: // ALT + F9
            break;
        case 113: // ALT + F10
            break;
    }
}
else{
    // Todas as opções abaixo possuem valor na tabela ASCII, assim como letras e números.
    switch(tecla){
        case 9: // TAB
            break;
        case 27: // ESC
            break;
        case 8: // BACKSPACE
            break;
        case 13: // ENTER
            break;
        case 1: // CONTROL + A
            break;
        case 26: // CONTROL + Z
            break;
        case 24: // CONTROL + X
            break;
        case 3: // CONTROL + C
            break;
        case 22: // CONTROL + V
            break;
        case 32: // BARRA DE ESPAÇOS
            break;
    }
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...