---
title: "Kolla om tangent är nedtryckt...."
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28074-kolla-om-tangent-är-nedtryckt"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "M@rtin"
published: "2000-09-22T20:10:00.000Z"
updated: "2001-08-23T08:55:00.000Z"
replies: 10
views: 595
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28074-kolla-om-tangent-är-nedtryckt"
---

# Kolla om tangent är nedtryckt....

## #1 — M@rtin, 2000-09-22T20:10Z

Hur gör man om man vill kolla om typ ESC trycks ned? Jag har en loop som ser ut typ så här:
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
While (z\<1000)
{
//Massa kod....

}

När man trycker på ESC så vill jag att loopen ska avbrytas genom att man tilldelar z ett värde över 1000. Hur kollar man enklast om en tangen bli nedtryckt alltså? Hellst genom att ange ASCII värdena.

Jag kör i TCplus...

//M@rtin

Permalänk: https://www.webforum.nu/p/28074

## #2 — Muzzafarath, 2000-09-23T08:38Z

\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
char key = getch();

if(key == 27) break;

Nåt sånt iaf ;)

Permalänk: https://www.webforum.nu/p/401124

## #3 — M@rtin, 2000-09-27T19:39Z

Okej nu har jag testat och det funkar. Men det funkade inte riktigt som jag ville :(

När man läser in en tangent med getch() så tvingar den programmet att vänta tills en tangent trycks in. Jag har en while loop som ska köras hela tiden men om en knapp trycks in så ska den lagras i en variabel. Hur gör man detta?

//M@rtin

Permalänk: https://www.webforum.nu/p/401125

## #4 — bughawk, 2000-09-27T20:08Z

\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
char key;
while (true)
{
  if keypressed()
  {
    key = getch();
  }

}

Nått åt det hållet?

tror att det heter keypressed.. eller så blandar jag ihop det med pascal...

Det var ju ett tag sedan jag höll på aktivt.. :l

Permalänk: https://www.webforum.nu/p/401126

## #5 — M@rtin, 2000-09-30T11:10Z

Nej keypressed finns inte i c++. 

Fler förslag?

//M@rtin

Permalänk: https://www.webforum.nu/p/401127

## #6 — Swey, 2000-09-30T12:48Z

Använd kbhit i kombination med getch. Jag har skrivit ett exempel som skriver ut slumpade tecken tills man avbryter med Escape.

```
#include <stdio.h> // printf
#include <stdlib.h> // rand
#include <conio.h> // getch, kbhit

int main()
{
    // Evighetsloop
    while(1) {
        // Visa att någonting händer
        printf("%d", rand());
        // Kolla om en tangent är nedtryckt
        if(kbhit()) {
            // Hämta nedtryckt tangent
            int key = getch();
            // Kolla om tangenten är 27(escape)
            if(key == 27) {
                // Avbryt programmet
                break;
             }
        }
    }
    return 0;
}
```

Permalänk: https://www.webforum.nu/p/401128

## #7 — M@rtin, 2000-09-30T21:38Z

Aha.. kbhit heter det alltså..

Tack så mycket Swey! :)

//M@rtin

\[Redigerat av M@rtin den 30 sep 2000\]

Permalänk: https://www.webforum.nu/p/401129

## #8 — jockee, 2001-08-16T19:30Z

Nån som vet hur man gör det här på linux?
Har inte conio.h :(

\[Redigerat av jockee den 16 aug 2001\]

Permalänk: https://www.webforum.nu/p/401130

## #9 — jsundin, 2001-08-19T17:33Z

i linux får man använda sig av select(2)  har jag för mig - kolla mansidan så ska det finnas ett exempel på exakt hur..

Permalänk: https://www.webforum.nu/p/401131

## #10 — jockee, 2001-08-22T18:54Z

Tack för tipset, det var ett steg närmare men tyvärr så märker den inte om man har tryckt på nåt förrän man skickar det med enter här heller.
Kanske har hittat vad jag letat efter i allegro.h men har inte testat det än. (d/l nu) :)
/Jockee

Permalänk: https://www.webforum.nu/p/401132

## #11 — jsundin, 2001-08-23T08:55Z

En annan sak som kan funka är setvbuf, jag har bara använt det för obuffrad utmatning, men det borde funkar för stdin oxo.. Testa =)

För obuffrad utmatning:
setvbuf( stdout, NULL, 0, \_IONBF );
(argumenten kan vara lite omkastade =))

(Tror dock inte att det där funkar så som du vill iaf, det är nog snarare inmatningsfunktionerna som är fel.)

\[Redigerat av jsundin den 23 aug 2001\]

Permalänk: https://www.webforum.nu/p/401133

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28074-kolla-om-tangent-är-nedtryckt
