Re: Linux c++ rozhodování stiskem klávesy v konzoli

iko iko.ikoon na gmail.com
Pátek Září 3 12:12:08 CEST 2021


#include <stdio.h>
int main (int argc, char **argv){
   char c = getchar();
   printf("Char: %c", c);
   return 0;
}

On 9/3/21 11:54 AM, Pavel Hudeček wrote:
> 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_base4InitD1Ev@@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

-- 
iko

Odoslané z môjho osobného počítača pomocou protokolu SMTP.


Další informace o konferenci Hw-list