Ich arbeite an einer einfachen Konsole App, um meine Füße wieder mit Flüchen nass zu bekommen. Ich habe ein kleines Problem mit der Portierung meiner App von XP auf AIX. Hier ist ein Beispielcode.AIX/XP Curses erhalten Schlüssel/Zusatztaste in einer plattformübergreifenden Art und Weise
int main(void)
{
WINDOW *_window = initscr();
int _rows;
int _cols;
cbreak();
/* Accept all keys */
keypad(_window, true);
/* Don't echo things that are typed */
noecho();
/* Get the screen dimensions */
getmaxyx(_window, _rows, _cols);
/* Don't display cursor */
curs_set(0);
for (;;)
{
printw("Press a Key ");
refresh();
int key = wgetch(_window);
printw("%d \n", key);
}
endwin();
return 0;
}
Als ich dies unter XP laufen, erhalte ich die folgende Ausgabe von einem DOWNARROW durch einen CTRL-DOWNARROW gefolgt.
Press a Key 258
Press a Key 481
Press a Key
258 Vorschlagen ist der Code für den Pfeil nach unten, und 481 für ctrl-Pfeil nach unten.
Durchführen desselben Tests unter AIX.
Press a Key 1858
Press a Key 27
Press a Key 79
Press a Key 66
Press a Key
Die 1858 ist der Pfeil nach unten, und die 27/29/66 ist die Antwort für den ctrl-Pfeil nach unten. Ich erkenne, dass der 27/29/66 wahrscheinlich eine der Standard-Escape-Sequenzen ist. Ich hatte gehofft, dass Flüche es auf einen einzigen Wert abbilden würden. Auf der XP-Seite ist CTL_DOWN in der Datei curses.h definiert. Die AIX-Seite nicht.
Also hier meine Frage ist
Ist ihnen etwas Beschwörung ich hier verpasst, die auf magische Weise diese drei Zeichen in eine schöne einzigartige ganze Zahl abbildet? Oder muss ich eine Art von Klasse schreiben, um die plattformspezifischen Tastenanschläge in etwas zu verstecken, das meine reale App benutzen kann?
Meine Augen sind Blut aus der Suche nach den AIX-Online-Zeug. Jede Hilfe, um mich in die richtige Richtung zu zeigen, würde geschätzt werden.
Andere Zufallsinformationen
ich XP Pro leite, mit dem neuesten Service msvc 6-Packs, mit Service Pack 6. Die Flüche Bibliothek ist pdcurses
Der andere Compiler ist IBM XL C/C++ ENTERPRISE EDITION V8.0 die Kompilierung verwendet
xlC++ -g app.cpp -lcurses
ich pdcurses33 bin mit auf dem PC und den nativen Flüche auf AIX.
Welche Curses Bibliothek verwenden Sie? –
Guter Fang. Es wurde der Frage hinzugefügt. – EvilTeach