Newsgroup: it.comp.lang.c
Titolo: ma perchè...

...non mi riconosce le freccine?!?!
c=getch();
.   FRECCIA SU PREMUTA
if (c==KEY_UP) {....bla bla   NON CI ENTRA MAI}
Perchč? Ho anche fatto keypad(stdscr,TRUE)
Help me,please.
Ciao,Marco

 ha scritto nel messaggio
news:9f8j00$kjl$1...@lacerta.tiscalinet.it...

getxkey()? (se hai la libreria conio) e K_EUp (keys.h)


wrote:

Tutti gli extended keys (come le freccine, tasti funzione, ecc...)
arrivano alla getch() con una sequenza di due tasti, il primo e'
sempre zero, il secondo e' lo scan code del tasto.
Per leggere gli extended keys devi fare pressapoco cosi':
if ((key = getch()) == 0) {	// e' un extended key
  key = getch();	// legge lo scan code
  switch (key) {
     case FRECCIA_SU: /* ecc...*/
  }
} else {	// e' un tasto normale
  switch (key) {
     case ENTER: /* ecc...*/
  }
}
ciao, acc.   
a...@libero.it

      case FRECCIA_SU: /* ecc...*/
Ma FRECCIA_SU a cosa è uguale? Cioè, cosa si deve scrivere sul compilatore?



#define FRECCIA_SU	0x48		/* 72 in decimale */
Ehi, non mi chiederai mica di postare l'intera lista degli scan code ?
ciao, acc.   
a...@libero.it

> Ehi, non mi chiederai mica di postare l'intera lista degli scan code ?
E' cosě che si chiama? Beh, postarla no, ma magari sai dirmi dove posso
trovarla?
Grazie cmq.
--
Ramses
---
http://evilzone.tsx.org
http://knowledgeparty.cjb.net

Grazie cmq.
La trovi sui manuali tecnici di PC (ma anche in alcune tastiere)
specialmente su HW vecchio, purtroppo oggi non usa piu' allegare la
documentazione :"(
BTW dato che l'argomento interessa a piu' persone, e che la lista non
e' poi cosi' lunga, ecco qua:
SYSREQ	0x54
CAPSLOCK	0x3A
NUMLOCK	0x45
SCROLLLOCK	0x46
LEFTCTRL	0x1D
LEFTALT	0x38
LEFTSHIFT	0x2A
RIGHTCTRL	0x9D
RIGHTALT	0xB8
RIGHTSHIFT	0x36
ESC	0x01
BACKSPACE	0x0E
ENTER	0x1C
SPACE	0x39
TAB	0x0F
F1	0x3B
F2	0x3C
F3	0x3D
F4	0x3E
F5	0x3F
F6	0x40
F7	0x41
F8	0x42
F9	0x43
F10	0x44
F11	0x57
F12	0x58
A	0x1E
B	0x30
C	0x2E
D	0x20
E	0x12
F	0x21
G	0x22
H	0x23
I	0x17
J	0x24
K	0x25
L	0x26
M	0x32
N	0x31
O	0x18
P	0x19
Q	0x10
R	0x13
S	0x1F
T	0x14
U	0x16
V	0x2F
W	0x11
X	0x2D
Y	0x15
Z	0x2C
1	0x02
2	0x03
3	0x04
4	0x05
5	0x06
6	0x07
7	0x08
8	0x09
9	0x0A
0	0x0B
MINUS	0x0C
EQUAL	0x0D
LBRACKET	0x1A
RBRACKET	0x1B
SEMICOLON	0x27
TICK	0x28
APOSTROPHE	0x29
BACKSLASH	0x2B
COMMA	0x33
PERIOD	0x34
SLASH	0x35
INS	0xD2
DEL	0xD3
HOME	0xC7
END	0xCF
PGUP	0xC9
PGDN	0xD1
LARROW	0xCB
RARROW	0xCD
UARROW	0xC8
DARROW	0xD0
KEYPAD0	0x52
KEYPAD1	0x4F
KEYPAD2	0x50
KEYPAD3	0x51
KEYPAD4	0x4B
KEYPAD5	0x4C
KEYPAD6	0x4D
KEYPAD7	0x47
KEYPAD8	0x48
KEYPAD9	0x49
KEYPADDEL	0x53
KEYPADSTAR	0x37
KEYPADMINUS	0x4A
KEYPADPLUS	0x4E
KEYPADENTER	0x9C
CTRLPRTSC	0xB7
SHIFTPRTSC	0xB7
KEYPADSLASH	0xB5
ciao, acc.   
a...@libero.it

 [...]
Ti ringrazio infinitamente, mi sarà molto utile.


Ti ringrazio infinitamente, mi sarà molto utile.
Ah dimenticavo...Tenete presente che la getch() come del resto tutte
le funzioni che utilizzano l'Int16h del BIOS tornano la coppia di
tasti (il primo con codice 0 ed il secondo con lo scancode) solo nel
caso di tasti "extended" che sono in pratica i tasti funzione F1..F12
ed i tasti Ins,Canc, ecc... (e le freccette, of course) negli altri
casi tornano UN SOLO tasto e con codifica ASCII, quindi Esc e' 27 (o
1B hex) e non 1, Enter e' 13 (0D hex) ecc...
Inoltre per quanto riguarda i vari Shift, Alt, Ctrl, Caps Lock ecc...
sono completamente ignorati dalla getch(), occorre usare la
_bios_keybrd() o la bioskey() (per il Borland) oppure, per chi
preferisce i metodi drastici, scrivere un Int09 handler...
ciao, acc.   
a...@libero.it