---
title: "Läsa PILAR (ascii)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/81541-läsa-pilar-ascii"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "JPE"
published: "2003-07-08T06:49:55.000Z"
updated: "2003-07-10T10:31:27.000Z"
replies: 4
views: 506
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/81541-läsa-pilar-ascii"
---

# Läsa PILAR (ascii)

## #1 — JPE, 2003-07-08T06:49Z

I t.ex qbasic kan man läsa av inmatade piltangenter enligt
a$=input$(1)       (detta stannar upp och läser in ett tecken till a$)
if a$=chr$(0)+chr$(78) then...

(kan inte dubbelkoderna i huvudet, men pilarnas ascii koder
ligger där kring 0+70 till 0+80 ungefär

Men så frågan - är det någon som vet hur man gör detta i C.
(alt C++) ??

typ:
char ch;
ch=getch();
if(ch== ?????)... 

eller på nått annat vis, bara man på nått vis kan få bekräftat att
en av pilarna (eller annat tecken med dubbelkod) har tryckts
ned av användaren

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

## #2 — Viktor, 2003-07-08T06:54Z

Du är på rätt väg,

```
ch=getch();
if(ch==70)
printf("En pil tryckt!");
```

Har inte provat det men det borde fungera.

/Viktor

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

## #3 — JPE, 2003-07-08T07:07Z

nix

Alltså piltangenterna, liksom 'page up' , page down' och en del till
har inga egentliga ascii-koder. (varken 7 bitars eller 8 bitars)
Istället har de s.k. dubbelkoder och i QBasic går det att avläsa dessa dubbelkoder. Låt oss säga att 'Arrow down' har dubbelkod
0 + 78. (dubbelkode börjar alltid på "noll plus ett ascii")

att läsa av om denna tangent blivit nedtryckt av användaren 
är alltså inte samma sak som att tangent med ascii 78 trycks ner, även om 0+78 förvisso är 78.

Så så enkelt som du vill göra det till, sorry...

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

## #4 — Viktor, 2003-07-08T07:50Z

Ok, det var fel, då gör vi ett nytt försök :)

Denna kod är baserad på det som har har hittat här, [Goggle](http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=31D5D546.4B8A%40fay.infi.net&rnum=1&prev=/groups%3Fq%3Dgetch%2Barrows%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3D31D5D546.4B8A%2540fay.infi.net%26rnum%3D1)

> UpArrow = 328
> DownArrow = 336
> RightArrow = 333
> LeftArrow = 331
> Home=327
> End=335

```
#include <conio.h>
#include <iostream>
using namespace std;

int mygetch();
int main()
{
	cout << mygetch() << endl;
	return 0;
}

int mygetch()
{
	int key;
	key=getch();
	if(key==224)
		key=getch()+256;
	return(key);
}
```

Jag har provat den i VS.NET (C++) och där fungerar den perfekt.

/Viktor

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

## #5 — JPE, 2003-07-10T10:31Z

Jo, det fungerade ju mycket bättre. Fast måste erkänna att jag inte riktigt förstår det där med 224. Efter MYCKET testande
fick jag själv fram följande lösning (använder själv alltid "C-style", om det inte handlar om ett större objektorienterat projekt):

char mygetch(void)
{
 char c;
 c=getch();
 if(c==0)c=getch();
 return c;
}

När man trycker på en 'dubbelkodstangent' läses alltså TVÅ
tecken in, och det första är (nästan) alltid en nolla.
Pilarnas dubbelkoder är 0+72,0+75,0+77 och 0+80

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/81541-läsa-pilar-ascii
