Linux c++ rozhodování stiskem klávesy v konzoli
Pavel Hudeček
edizon na seznam.cz
Pátek Září 3 11:54:21 CEST 2021
Dobrý den všem,
Potřebuji něco, co by v linuxové konzolové aplikaci čekalo na stisk klávesy
a pak detekovalo jaká to byla. Tzn něco ve stylu:
Press Y to Yes or N to No
Chci ale, aby nebylo potřeba mačkat enter.
Ve windows používám:
// wait for user choice from 2 to 3 keys (key3=0 or key4=0 -> not used)
// key1/key2/key3 is lower case, keyboard input is independent =============
======================
char choiceKey(char key1, char * text1, char key2, char * text2, char key3=0
, char * text3="", char key4=0, char * text4="") {
char ch;
while(1) {
ch = _getch();
if (ch<'a' && ch>='A' && ch<='Z') ch += 'z'-'Z'; // convert to lower
case
if (ch==key1) {
if (text1[0]!=0) printf("%s\n", text1);
break;
} else if (ch==key2) {
if (text2[0]!=0) printf("%s\n", text2);
break;
} else if (key3!=0) if (ch==key3) {
if (text3[0]!=0) printf("%s\n", text3);
break;
} else if (key4!=0) if (ch==key4) {
if (text4[0]!=0) printf("%s\n", text4);
break;
}
}
return ch;
}
Jenže _getch není, resp. není conio.h.
Našel jsem:
https://stackoverflow.com/questions/8792317/where-is-the-conio-h-header-file
-on-linux-why-cant-i-find-conio-h
Doinstaloval:
sudo apt-get install libncurses5-dev libncursesw5-dev
Použil curses.h a z něj cbreak + getch
Jenže:
/usr/bin/ld: /tmp/cceqblBw.o: undefined reference to symbol '_ZNSt8ios_base4
InitD1Ev@@GLIBCXX_3.4'
/usr/bin/ld: //lib/arm-linux-gnueabihf/libstdc++.so.6: error adding symbols:
DSO missing from command line
A dál už nevím, je to RPI s 32b ARM
Díky,
PH
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210903/a69d6ccf/attachment.html>
Další informace o konferenci Hw-list