Superuser

Autor Thema: Funktionstasten unter C nutzen.  (Gelesen 4472 mal)

bespin127

  • Gast
Funktionstasten unter C nutzen.
« am: 31. Januar 2005, 16:37:02 »
Hallo,

weis jemand wie ich die Funktionstasten bei einer Ultra 10 unter C bzw. C++ nutzen kann ? Nett wäre ein Codeschnippsel.

Gruss
HG

sonnenblen.de - Das unabhängige Sun User Forum

Funktionstasten unter C nutzen.
« am: 31. Januar 2005, 16:37:02 »

bespin127

  • Gast
Re: Funktionstasten unter C nutzen.
« Antwort #1 am: 18. März 2005, 16:53:31 »
#include <stdio.h>
#include <ncurses.h>

/* gcc -o fkttast2 fkttast2.c -lncurses */

int main(void)
{ chtype c;
int i;
initscr();
cbreak();
keypad(stdscr,TRUE);
do
{
printw(" Bitte eine Taste druecken : ");
refresh();
c=getch();
switch(c)
{ case KEY_F(1) : printw(" Taste F1 \n"); break;
case KEY_F(2) : printw(" Taste F2 \n");break;
case KEY_F(3) : printw(" Taste F3 \n");break;
case KEY_F(4) : printw(" Taste F4 \n");break;
case KEY_F(5) : printw(" Taste F5 \n");break;
case KEY_F(6) : printw(" Taste F6 \n");break;
case KEY_F(7) : printw(" Taste F7 \n");break;
case KEY_F(8) : printw(" Taste F8 \n");break;
case KEY_F(9) : printw(" Taste F9 \n");break;
case KEY_F(10) : printw(" Taste F10 \n");break;
case KEY_F(11) : printw(" Taste F11 \n");break;
case KEY_F(12) : printw(" Taste F12 \n");break;
case KEY_UP : printw(" Pfeil nach oben \n");break;
case KEY_DOWN : printw(" Pfeil nach unten \n");break;
case KEY_LEFT : printw(" Pfeil nach links \n");break;
case KEY_RIGHT : printw(" Pfeil nach rechts \n");break;
default : printw(" %c \n",c);
}
refresh();
} while (c != 'q');
endwin();
return 0;
}

Also ich habe es mal damit ausprobiert, die Funktionstaste 1 wird unter
Solaris erkannt. Die anderen Tasten nicht.
Unter Linux läuft das Programm sauber. Hat Jemand eine Idee wo das Problem zu suchen wäre ??

Gruss
Hans-Georg

mdjr

  • Gast
Re: Funktionstasten unter C nutzen.
« Antwort #2 am: 13. Februar 2006, 23:29:26 »
Also ich habe es mal damit ausprobiert, die Funktionstaste 1 wird unter
Solaris erkannt. Die anderen Tasten nicht.
Unter Linux läuft das Programm sauber. Hat Jemand eine Idee wo das Problem zu suchen wäre ??

1) Programm läuft in einem Terminalfenster unter X11:
Möglicherweise werden die Funktionstasten vom Terminal selbst (z.B. xterm) verwendet.

2) Theoretisch ist es auch möglich, die Tasten "RAW" auszulesen (mit getc). Jede Funktionstaste erzeugt eine Kombination aus mehreren Zeichnen, die mit ESC (\x1b) beginnen. Das ganze geht natürlich nur, wenn das Terminal das mitmacht. Leider hat jeder Terminaltyp (Sun, Ansi, Xterm, ...) eine andere Kombination. ANSI-Terminals kennen nur F1-F4...

Martin