SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: ciber_lep en Domingo 22 de Agosto de 2004, 21:35

Título: Ansi
Publicado por: ciber_lep en Domingo 22 de Agosto de 2004, 21:35
Hola, queria perdirles por favor que me den ayuda sobre el manejo del teclado, pues he intetado usar el codigo ascii para controlar las flechas de direcciòn pero no me los reconoce[ me parece raro pues reconoce la tecla escape que es char(27) pero las otras no las reconoce las que necesito], les agradecerè mucho.  :comp:
Título: Re: Ansi
Publicado por: aleSchenk en Lunes 23 de Agosto de 2004, 04:33
ch=getch();

if(ch=='H') printf("FLECHA ARRIBA");
if(ch=='P') printf("FLECHA ABAJO");
if(ch=='K') printf("FLECHA IZQUIERDA");
if(ch=='M') printf("FLECHA DERECHA");


Espero que te sirva :)
Título: Re: Ansi
Publicado por: avis_phoenix en Lunes 23 de Agosto de 2004, 14:49
Bueno para detectar todasals teclas del teclado (incluyendo las felcas) no es muy conveniente getch, pues para cualquier tecla especial getchar envia 2 teclas a al vez (pruebalo pon while (c!= 27) { c=getch(); printf("%d",c);} )y comprobaras loqeu te digo, pero si no te quieres complicar la vida yo tengo una cabecera nada optimiozada, pero practica, donde uso bioskey bios key es unpoco distinto que getch, así que pues con mi cabecera solo tendrías que entender como se usa, y si quieres mejro hacer una tuya mejorada u optimizada pues ya es cosa tuya, la mia es simple casi todas las teclas estan ya definidas, te adjunto la cabecera y un codigo de ejemplo, para probar, ya si tu quieres hacer la tyuya pues imvestiga sobre bioskey y sobre "san code" ok bueno suerte. como solopuedo adjuntar un archivo pues te pongo el codigo para usar mi cabecera en el mensaje:
Código: Text
  1.  
  2. #include <iostream.h>
  3. #include <tecla.h> //fijate de poner la hubicación de tu archivo
  4.  
  5. main()
  6. {
  7.   int c;
  8.   while(c!=ESC){
  9.   cout<<"\nPresiona una tecla\n";
  10.   c = obtecla();
  11.   if (c == TAB)
  12.     cout <<"Haz presionado Tabulador";
  13.   else if (c == CTRL + 'x')
  14.     cout<< "Haz presionado Ctrl + X";
  15.   else if (c == AJ)
  16.     cout<< "Haz presionado Alt + J";
  17.   else if (c== AF)
  18.     cout<<"Haz presionado Alt + F";
  19.   else if (c == INS)
  20.     cout<<"Haz presionado Insertar";
  21.   else if (c == F5)
  22.     cout<<"Haz presionado F5";
  23.   else if (c == ARRIBA)
  24.     cout<<"Haz presionado la flecha Arriba";
  25.   else if (c > 32 && c < 127)
  26.     cout<<"Haz presionado el caracter: "<<char(c);
  27.   else if (c != ESC)
  28.     cout<< "Presiona Tabulador, Ctr + X, Alt + J,Alt + F, Insertar, F5, la flecha Arriba, una letra, y para salir presiona ESC";
  29.   }
  30.   cout<<"Presionaste ESC, Adios!\nPresiona cualquier tecla para salir";
  31.   obtecla();
  32.   return 0;
  33. }
  34.  

puede que Alt + J tengas que presionarlo con Altgr pues con Alt normal no indica que presionaste algo, no se por que, bueno espero te sirva o mejores, bye
Título: Re: Ansi
Publicado por: ciber_lep en Domingo 29 de Agosto de 2004, 21:21
gracias a los que me han tratado de ayudar y he probado el codigo de avis y me sirbio gracias.
Título: Re: Ansi
Publicado por: ciber_lep en Domingo 29 de Agosto de 2004, 21:31
de nuevo.   B) me sirvio pero quisiera que si me hicieras el favor de darme no se una direccion donde yoi pueda encontrar algo sobre el bioskey y la cabecera ctype o scan porque realmente me perdi en eso pero si me sirvio, es que estoy realizado un programa que realiza calculos matematicos (permutacion, combiancion) entre otros y queria hacerle el menu y queria controlarlo desde el teclado. gracias.
Título: Re: Ansi
Publicado por: avis_phoenix en Lunes 30 de Agosto de 2004, 06:14
HOLA!!pues bueno me alegra que te sirva, pues BiosKey la ayuda y desripción viene en tu aydua del compilador, Scan Code aca te pongo un link al giual de ctype.h

Scan Code:Scan Code (http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/keyboard/scancodes3.html)

Ctype.h : <ctype.h> (http://www.sensi.org/~alec/man/man_h/ctype.html)
Título: Re: Ansi
Publicado por: Cid_Highwind en Jueves 9 de Diciembre de 2004, 21:57
Cita de: "ciber_lep"
gracias a los que me han tratado de ayudar y he probado el codigo de avis y me sirbio gracias.
Hola Avis, estoy tratando de compilar tu código pero me marca el siguiente error

"TECLA.H(65,14):Call to undefined function 'bioskey'"

que puede ser?

Saludos
Título: Re: Ansi
Publicado por: avis_phoenix en Jueves 9 de Diciembre de 2004, 22:58
Hola pues lo más seguro es que uses un compilador que no sea de borland (imagino Visual C++ o algo así) pues es parte de la librería de borland, tal vez (la verdad de momento no tengo como probarlo) tampoco lo jale Borland C++Builder, tal vez, de momento no puedo verificarlo, solo fijate que exista en tu compilador <bios.h> y que esta librería tenga la función bioskey o cual es su honomina en tu compilador (si es que tiene una homonima).

Espero que te sirva, como comentario este codigo fue compilado en Turbo C++ 3.0
Título: Re: Ansi
Publicado por: Cid_Highwind en Viernes 10 de Diciembre de 2004, 01:06
Avis, estoy usando el Borland C++ 5.01, en la carpeta de INCLUDE esta el bios.h, pero me marca ese error a la hora de compilar, no se que pueda ser  :(
Título: Re: Ansi
Publicado por: Cid_Highwind en Viernes 10 de Diciembre de 2004, 02:53
Ya me funcionó!!  gracias avis, tu código me será de gran utilidad.

saludos.
Título: Re: Ansi
Publicado por: avis_phoenix en Viernes 10 de Diciembre de 2004, 04:47
A que bueno  que ya te funciono, pienso yo que sería bueno que pusieras por que no te funcionaba tal vez a otrolellegue a pasar, por muy simplon que haya sido el error, Gracias
Título: Re: Ansi
Publicado por: Cid_Highwind en Viernes 10 de Diciembre de 2004, 08:32
Lo unico que hay que hacer es NUEVO PROYECTO y pegar tu codigo y ya, no me funcionaba porque no lo hacia como proyecto jeje  :whistling:

Saludos.
Título: Re: Ansi
Publicado por: Nick++ en Jueves 6 de Enero de 2005, 23:18
Cita de: "avis_phoenix"
Hola pues lo más seguro es que uses un compilador que no sea de borland (imagino Visual C++ o algo así) pues es parte de la librería de borland, tal vez (la verdad de momento no tengo como probarlo) tampoco lo jale Borland C++Builder, tal vez, de momento no puedo verificarlo, solo fijate que exista en tu compilador <bios.h> y que esta librería tenga la función bioskey o cual es su honomina en tu compilador (si es que tiene una homonima).

Espero que te sirva, como comentario este codigo fue compilado en Turbo C++ 3.0
 :hola: Hola. Tenía casi el mismo problema que Cid con lo del BIOS.H pero ahora me surgió otro :unsure: : BIOS.H necesita de <_defs.h> y este no lo tengo. Podrías ayudarme con eso. Te lo agradecería mucho :D .

G R A C I A S ! ! !
Título: Re: Ansi
Publicado por: mgitano2001 en Viernes 7 de Enero de 2005, 00:48
getch() no es ANSI C.
Saludos Mgitano2001
Título: Re: Ansi
Publicado por: avis_phoenix en Viernes 7 de Enero de 2005, 02:36
mm pues bueno, no se si sea lo que menciona mgitano2001, pues mira, si lo que dice mgitano2001 pues simplemente debes definir la variable como char para comvertir un ansi c en char es AnsiString MiVar; char c; c = MiVar[0]; (no recuerdo si es 0 o 1 la primer letra del ansi) que otra cosa??, pues bueno si no es esto pues dime, que compialdor es, que version, que codigo usaste y como lo usaste, dame datos asíno se nada.