<html><body>Dobrý den všem,<div><br></div><div>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:</div><div>Press Y to Yes or N to No</div><div>Chci ale, aby <b>nebylo potřeba mačkat enter</b>.</div><div><br></div><div>Ve windows používám:</div><div><div style="line-height:19px"><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre"><span style="color:#008000">// wait for user choice from 2 to 3 keys (key3=0 or key4=0 -> not used)</span></div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre"><span style="color:#008000">// key1/key2/key3 is lower case, keyboard input is independent ===================================</span></div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre"><span style="color:#0000ff">char</span> choiceKey(<span style="color:#0000ff">char</span> key1, <span style="color:#0000ff">char</span> <span style="color:#0000ff">*</span> text1, <span style="color:#0000ff">char</span> key2, <span style="color:#0000ff">char</span> <span style="color:#0000ff">*</span> text2, <span style="color:#0000ff">char</span> key3=<span style="color:#098658">0</span>, <span style="color:#0000ff">char</span> <span style="color:#0000ff">*</span> text3=<span style="color:#a31515">""</span>, <span style="color:#0000ff">char</span> key4=<span style="color:#098658">0</span>, <span style="color:#0000ff">char</span> <span style="color:#0000ff">*</span> text4=<span style="color:#a31515">""</span>) {</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">    <span style="color:#0000ff">char</span> ch;</div><br><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">    <span style="color:#0000ff">while</span>(<span style="color:#098658">1</span>) {</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        <b>ch = _getch()</b>;</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        <span style="color:#0000ff">if</span> (ch<<span style="color:#a31515">'a'</span> && ch>=<span style="color:#a31515">'A'</span> && ch<=<span style="color:#a31515">'Z'</span>) ch += <span style="color:#a31515">'z'</span>-<span style="color:#a31515">'Z'</span>;<span style="color:#008000"> // convert to lower case</span></div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        <span style="color:#0000ff">if</span> (ch==key1) {</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">if</span> (text1[<span style="color:#098658">0</span>]!=<span style="color:#098658">0</span>) printf(<span style="color:#a31515">"%s\n"</span>, text1);</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">break</span>;</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        } <span style="color:#0000ff">else</span> <span style="color:#0000ff">if</span> (ch==key2) {</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">if</span> (text2[<span style="color:#098658">0</span>]!=<span style="color:#098658">0</span>) printf(<span style="color:#a31515">"%s\n"</span>, text2);</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">break</span>;</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        } <span style="color:#0000ff">else</span> <span style="color:#0000ff">if</span> (key3!=<span style="color:#098658">0</span>) <span style="color:#0000ff">if</span> (ch==key3) {</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">if</span> (text3[<span style="color:#098658">0</span>]!=<span style="color:#098658">0</span>) printf(<span style="color:#a31515">"%s\n"</span>, text3);</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">break</span>;</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        } <span style="color:#0000ff">else</span> <span style="color:#0000ff">if</span> (key4!=<span style="color:#098658">0</span>) <span style="color:#0000ff">if</span> (ch==key4) {</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">if</span> (text4[<span style="color:#098658">0</span>]!=<span style="color:#098658">0</span>) printf(<span style="color:#a31515">"%s\n"</span>, text4);</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">            <span style="color:#0000ff">break</span>;</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">        }</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">    }</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">    <span style="color:#0000ff">return</span> ch;</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">}</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">Jenže _getch není, resp. není conio.h.</div><div style="font-family:Consolas,'Courier New',monospace;font-size:14px;white-space:pre">Našel jsem:</div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre">https://stackoverflow.com/questions/8792317/where-is-the-conio-h-header-file-on-linux-why-cant-i-find-conio-h</span></font><br></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre">Doinstaloval:</span></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre">sudo apt-get install libncurses5-dev libncursesw5-dev</span><br></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre">Použil curses.h a z něj cbreak + getch</span></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre">Jenže:</span></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre"><div>/usr/bin/ld: /tmp/cceqblBw.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'</div><div>/usr/bin/ld: //lib/arm-linux-gnueabihf/libstdc++.so.6: error adding symbols: DSO missing from command line</div><div><br></div><div>A dál už nevím, je to RPI s 32b ARM</div><div><br></div><div>Díky,</div><div>PH</div></span></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div></div></div></body></html>