Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C][LINUX]Kody klawiszy kursora

Ostatnio zmodyfikowano 2014-06-11 15:42
Autor Wiadomość
szarry
Temat założony przez niniejszego użytkownika
[C][LINUX]Kody klawiszy kursora
» 2014-06-11 10:43:47
Poszukuję kodów klawiszy kursora oraz innych klawiszy specjalnych (del, f1-f12 etc.) dla linuksa
Próbowałem
C/C++
char znak;
znak = getch(); //biblioteka gconio.h
printf( "%d", znak );

Powyższy kod działa świetnie dla zwykłych znaków alfanumerycznych, ale dla specjalnych zwraca wartość 27.

Jakaś tabelka? Kawałek kodu?

Musze się z tym wyrobić do 12-stej, bo idę prezentować program na zaliczenie, a na laptopie mam tylko Debiana.
P-111909
maly
» 2014-06-11 10:55:49
C/C++
#include <stdio.h>
#include <conio.h>
int main( void )
{
    int c;
    int extended = 0;
    c = getch();
    if( !c )
         extended = getch();
   
    if( extended )
         printf( "The character is extended\n" );
    else
         printf( "The character isn't extended\n" );
   
    return 0;
}
P-111910
szarry
Temat założony przez niniejszego użytkownika
» 2014-06-11 11:28:20
Niestety, teraz zwraca dla wszystkich -73.
Problem doraźnie rozwiązałem zastępując kursory WSAD'em, insert klawiszem i itd. ale i tak staram się znaleźć rozwiązanie, więc jak ktoś ma jakiś pomysł, to proszę pisać.

Dowiedziałem się na IRC, że kodowanie klawiszy specjalnych może zależeć od użytego emulatora; ale to tylko gdybanie, jeszcze nie potwierdzone.
P-111912
maly
» 2014-06-11 11:44:44
P-111913
pekfos
» 2014-06-11 14:42:04
C/C++
int main( void )
{
    int c1 =( unsigned char ) getch(), c2 = 0;
   
    if( kbhit() )
         c2 =( unsigned char ) getch();
   
    printf( "%d %d", c1, c2 );
}
P-111922
Elaine
» 2014-06-11 15:07:53
P-111926
Adik80
» 2014-06-11 15:42:19
Zalezy jaki terminal masz ustawiony. Mozesz wyswietlic wszytskie sekwencje poleceniem: infocmp $TERM. W man terminfo znajdziesz opis. Ale prosciej jest uzyc biblioteki ktora ci to zunifikuje (przeczyta baze przy starcie i bedzie zastepowala sekwencje pojedynczym znakiem) np. w ncurses getch() dla "<-" zwroci ci KEY_LEFT
P-111931
« 1 »
  Strona 1 z 1