C/C++ lib für Sonderzeichenkombinationen (F1-12, +shift, alt, ctrl) als Scancode
hallo,
wer kennt eine C/C++ lib für Sonderzeichenkombinationen (F1-12, +shift, alt, ctrl), um sie als Art "scancode" von der Tastatur zu lesen?
es soll so ähnlich funktionieren wie mit getch() / getchar(), nur dass nicht ein ASCII Zeichen gelesen werden soll, sondern ein einzigarteiger "Scancode" für die Tastenkombi (also keine Folge von einzelnen chars), z.B.
64031 für F1
65031 für ctrl+F1
66031 für shift+F1
...
usw,
praktischerweise auch
27 für ESC und
65 für 'A' etc,
um sie einfach abfragen und behandeln zu können, wie hier im Pseudocode:
Code:
int32_t i=getkeycode();
if(i==27) {...} // ESC: return NULL, terminate program (quit)
else
if(i==64031) {...} // F1: switch openVG window 1
else
if(i==64032) {...} // F2: switch openVG window 2
else
if(i==64033) {...} // F3: switch openVG window 3
else
if(i==63001) {...} // ctrl + : zoom in
else
if(i==63002) {...} // ctrl - : zoom out
else
if(i==64111) {...} // cur_up: move slow forward
else
if(i==64112) {...} // cur_dn: move slow reverse
else
if(i==66111) {...} // shift+cur_up: move fast forward
else
if(i==66112) {...} // shift+cur_dn: move fast reverse
else
if(i==64113) {...} // cur_left: turn slow left
else
if(i==64114) {...} // cur_right: turn slow right
else
if(i==66113) {...} // shift+cur_left: turn strong left
else
if(i==66114) {...} // shift+cur_right: turn strong right
else
if(i==65113) {...} // ctrl+cur_left: spin left
else
if(i==65114) {...} // ctrl+cur_right: spin right
else
if(i==64120) {...} // end: stop move, coast
else
if(i==65120) {...} // ctrl+end: stop move, brake
...
Man bräuchte dazu allerdings auch eine Tabelle als Übersicht, um die Zeichen nachschlagen zu können:
Code:
key plain shift ctrl alt shift+ctrl ctrl+alt shift+alt shift+ctrl+alt
Home
Insert
Delete
End
Pgup
PgDn
F1
F2
F3
...
cur_up
cur_dn
cur_left
cur_right
...
A
B
C
...
a
b
c
...
wo gibt's sowas, nach 40 Jahren C und Unix/Linux ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
stdio.h ist doch drin. Das erste Include gleich. (Siehe Post #15). Ob g++ auch C-Code kompilieren kann, weiß ich nicht. Ich progge nur in C (BASH / PHP mal außen vor) und alles per Kommandozeile. Wie gesagt, Geany habe ich nicht. Die installierten Pakete liste ich doch nicht auf. Es sind 846 Pakete.
Ich hänge mal meine fertig compilierte Datei hier an. Evtl. hilft sie Dir die Scancodes auszulesen. Die Datei ist unter Windows gepackt und muss auf den Raspi. Die Rechte auf 755 setzen und starten.
Wenn Du sie, wie im Quellcodekopf, mit nice startest, dann läuft sie mit geringerer Priorität. Das & am Ende bedeutet, dass das Programm im Hintergrund ausgeführt wird und die Konsole für andere Dinge genutzt werden kann.
Mehr kann ich da leider nicht für Dich tun. Die nächste Zeit bin ich erstmal hauptsächlich offline und komme auch nicht zum basteln.
Edit: Bei Dir steht zwar -pthread im Parameter, bei mir jedoch -lpthread. Also scheint es da Unterschiede zu geben. Probiere mal nur meinen Code zu compilieren, ohne ihn irgendwo einzubauen.
Edit 2:
int main(int argc, char** argv) ist für die angegebenen Parameter wichtig. Evtl. will Geany für die Fensteroberfläche kompilieren. Schau mal, ob man da auch ein Konsolenprogramm als Typ auswählen kann.