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

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


Pardon, to bol zly priklad (caka na enter).

Tu spravny, pomocou ncurses

#include <curses.h>

int main(int argc, char **argv) {
   initscr();
   cbreak();
   printw("press any key to exit...");
   char c = getch();
   endwin();
   printf("Char: %c\n", c);
   return 0;
}

On 9/3/21 12:12 PM, iko wrote:
> #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