Τα βελάκια πληκτρολογίου ?

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
rifleman
Δημοσιεύσεις: 15
Εγγραφή: 14 Δεκ 2010 20:30

Τα βελάκια πληκτρολογίου ?

Δημοσίευση από rifleman » 14 Δεκ 2010 22:24

Καλησπέρα. Έχω ένα μεγάλο θεματικά σχετικά με τα βελάκια του πληκτρολογίου(αυτά που όλοι ξέρουμε, που μας πηγαίνουν πάνω κάτω δεξιά αριστερά...).
Αρχικά το ερώτημα μου είναι αν τα βελάκια υπάρχουν σαν χαρακτήρες μέσα στον πίνακα ASCI της γλώσσας C?

Και σας ρωτάω αυτό γιατί όταν πατούσα τα βελάκια στην getch() , και μετά εμφάνιζα το αποτέλεσμα με την putch() μου έβγαζε δύο χαρακτήρες.

Και πιο συγκεκριμένα στο παρακάτω προγραμματάκι όταν πατήσω ένα βέλος από το πληκτρολόγιο μου εμφανίζει ωH(πάνω) ή ωK(αριστερά) ή ωP(κάτω) ή ωM(δεξία). Δηλάδη στην πρώτη επανάληψη το buffer γεμίζει με ένα αριθμό ο οποίος είναι μεγαλύτερος του 224 και έτσι εμφανίζει το ω(224) και έπειτα ότι περίσσεψε μέσα στο buffer:

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main&#40;&#41;
&#123;
unsigned char ch=0;
char c;
while &#40;ch!=27&#41;
&#123;
ch = getch&#40;&#41;;
printf&#40;"%c&#58; %d\n",ch,ch&#41;;
&#125;
system &#40;"pause"&#41;;
&#125;

Έτσι όμως δεν μπορώ να κάνω έλεγχο με τα βελάκια. Δεν μπορώ να πω if (c=='ωΗ') όταν το c είναι χαρακτήρας.

Η βοήθεια σας θα ήταν πολύτιμη! ευχαριστώ!

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

Τα βελάκια πληκτρολογίου ?

Δημοσίευση από LightForce » 15 Δεκ 2010 00:45

H getch επιστρέφει 2 ακεραίους για special keys όπως τα βελάκια ή τα F1..F2..F10.
A πάρεις τιμή 0 η 0xE0 κάλεσε την ξανά.

Κώδικας: Επιλογή όλων

void main&#40;&#41;
&#123;
	int ch;		// η getch επιστρέφει int

	do &#123;
		ch = getch&#40;&#41;;
		if &#40;!ch || ch == 0xE0&#41;
			ch = getch&#40;&#41;;
	
		printf&#40;"key&#58; %d\n",ch&#41;;
			
	&#125; while &#40;ch != 27&#41;;
&#125;	

rifleman
Δημοσιεύσεις: 15
Εγγραφή: 14 Δεκ 2010 20:30

Τα βελάκια πληκτρολογίου ?

Δημοσίευση από rifleman » 15 Δεκ 2010 00:55

LightForce έγραψε:H getch επιστρέφει 2 ακεραίους για special keys όπως τα βελάκια ή τα F1..F2..F10.
A πάρεις τιμή 0 η 0xE0 κάλεσε την ξανά.

Κώδικας: Επιλογή όλων

void main&#40;&#41;
&#123;
	int ch;		// η getch επιστρέφει int

	do &#123;
		ch = getch&#40;&#41;;
		if &#40;!ch || ch == 0xE0&#41;
			ch = getch&#40;&#41;;
	
		printf&#40;"key&#58; %d\n",ch&#41;;
			
	&#125; while &#40;ch != 27&#41;;
&#125;	
ευχαριστώ πολύ φίλε! θα το δοκιμάσω. Αν και νομίζω πως μου έχεις λύση ήδη το πρόβλημα μου.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες