Um ab und zu Programme, die irgendwann auf einem Controller laufen
sollen, teste ich Algorithmen und Programmabläufe gerne zuvor auf dem
Linux-PC aus.
Hier benötige ich dann Funktionen, mit denen ich zum Einen festellen
kann, ob eine Taste gedrückt wurde und wenn ja, welche.
Vor geraumer Zeit habe ich mich hier in die Tiefen von termios.h begeben
und mich da schlau gemacht (von dem ich wieder vieles vergessen habe).
Auch wenn mein Code (im Anhang) funktioniert, war ich nie zu 100%
zufrieden, denn er hat einen Schönheitsfehler in der Anwendung.
Bisweilen, aber nicht immer gibt er mir an der aktuellen Cursorposition
die Escape-Sequezen für bspw. die Cursortasten oder die Funktionstasten
aus:
Meine < readkey > Funktion liefert mir neben den Ascii-Codes der Tasten
auch die erweiterten Codes für eben oben genannte Cursor und
Funktionstasten.
1 | #define keyleft 0x00005b44
|
2 | #define keyright 0x00005b43
|
3 | #define keyup 0x00005b41
|
4 | #define keydown 0x00005b42
|
5 | #define pageup 0x005b357e
|
6 | #define pagedown 0x005b367e
|
7 | #define keypos1 0x00005b48
|
8 | #define keyend 0x00005b46
|
9 |
|
10 | #define keyf1 0x00004f50
|
11 | #define keyf2 0x00004f51
|
12 | #define keyf3 0x00004f52
|
13 | #define keyf4 0x00004f53
|
14 | #define keyf5 0x5b31357e
|
15 | #define keyf6 0x5b31377e
|
16 | #define keyf7 0x5b31387e
|
17 | #define keyf8 0x5b31397e
|
18 | #define keyf9 0x5b32307e
|
19 | #define keyf10 0x5b32317e
|
Leider zerstört mir das Ausgeben der Escapesequenzen meinen
Bildschirmaufbau. Bisher habe ich mir damit beholfen, dass ich in meinen
Programmen einen Bereich schwarze Textfarbe auf schwarzem Hintergrund
definiere auf den ich nach jeder Bildschirmausgabe verzweige.
Irgendein Puffer in dem wohl die erweiterten Tasten abgelegt werden muß
wohl gelöscht werden, aber ich weiß nicht wo und wie ich das
bewerkstellige.
Vllt. kennt einer der Linux- Systemprogrammierercracks wie das geht ?