Prog Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 Mam pytanie. Piszę akurat program, do którego potrzebuję zczytywać klawisze jakie wciśnie użytkownik i napisać na przykład: klawisz funkcyjny F1. Wszystko jest ok. Mój kod rozróżnia klawisz ESC, małe i duże litery, cyfry. Kłopot zaczyna się przy klawiszu ENTER lub F1. Nie wiem gdzie mogę znaleźć kod ASCII tych klawiszy. U mnie w skrypcie działają kody ósemkowe. Np '\032' to spacja Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 Może wkleisz co masz i opiszesze bo tak na sucho to cieżko cokolwiek odpowiedzieć. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 Może wkleisz co masz i opiszesze bo tak na sucho to cieżko cokolwiek odpowiedzieć. Ok. #include <iostream.h>#include <conio.h>//-----------------------------void main() { cout << "Podaj znak z klawiatury: "; char znak = getch(); if (znak>='\141' && znak <='\172'){ cout << "mala litera"; } if (znak>='\101' && znak <='\132'){ cout << "duza litera"; } if (znak>='\060' && znak <='\071'){ cout << "duza litera"; } if (znak=='\033'){ cout << "klawisz ESC"; } if (znak==???){ cout << "klawisz ENTER"; } if (znak=='???'){ cout << "strzalka w lewo"; } if (znak=='???'){ cout << "strzalka w prawo"; } if (znak=='???'){ cout << "klawisz funkcyjny F1"; } if (znak=='???'){ cout << "inny klawisz"; } getch();} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
DiJo Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 (edytowane) zrób pomocniczy programik: #include <stdio.h>int main (){ char a=znak; scanf("%c", &a); // tu wcisniesz klawisz, ktorego nie znasz, albo a=getch(); print("Wcisnoles %d\n", a);} i powinno pokazać co wciskasz. Chociaz niewiem jak pod windowsem :] Inny sposób, który mi jeszcze przyszedł na myśl to wykorzystanie jakiejś biblioteki, np. SDL, ale z tym to już jest troche więcej kodu. pozdr. Edytowane 12 Października 2006 przez DiJo Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 zrób pomocniczy programik: #include <stdio.h>int main (){ char a=znak; scanf("%c", &a); // tu wcisniesz klawisz, ktorego nie znasz, albo a=getch(); print("Wcisnoles %d\n", a);} i powinno pokazać co wciskasz. Chociaz niewiem jak pod windowsem :] Inny sposób, który mi jeszcze przyszedł na myśl to wykorzystanie jakiejś biblioteki, np. SDL, ale z tym to już jest troche więcej kodu. pozdr. Kiepsko... Z klawiszami głównymi jest ok. Gorzej ze strzałkami, czy F1. Tego nie czyta. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 Z tego co pamietam klawisze specjalne trzeba bylo czytac 2 razy.. pierwszy odczyt zwracal 0, a drugi juz poprawna wartosc. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 Z tego co pamietam klawisze specjalne trzeba bylo czytac 2 razy.. pierwszy odczyt zwracal 0, a drugi juz poprawna wartosc. Czyli dwa razy powtórzyć zapisywanie do zmiennej char znak = getch(); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 12 Października 2006 Zgłoś Opublikowano 12 Października 2006 Tak.. za pierwszym razem sprawdzasz czy jest 0, jesli jest to znaczy, ze jest to klawisz specjalny, wiec czytasz drugi raz i wtedy dostaniesz prawidlowy kod. Sprawdzilem przed chwila.. dziala. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 13 Października 2006 Zgłoś Opublikowano 13 Października 2006 Tak.. za pierwszym razem sprawdzasz czy jest 0, jesli jest to znaczy, ze jest to klawisz specjalny, wiec czytasz drugi raz i wtedy dostaniesz prawidlowy kod. Sprawdzilem przed chwila.. dziala. Działa. Dzieje się tak, bo funkcja getch(); pobiera z bufora klawiatury jeden bajt. Więc jeżeli liczba jest zapisana w formie np. 013 to wtedy należy pobrać najpierw z bufora klawiatury 0 [tak jak móiwsz FiDO], a potem sprawdzić jakie cyfry są po zerze. Wszystko jest wtedy ok. Tutaj podam parę linijek kodu, aby wszystko było jasne. if (znak==0){ znak=getch()+1000; if (znak==1059){ cout << "klawisz F1"; } } Zapytacie się dlaczego 1000 po getch(). Ano dlatego, by nie pomylić się ze standardowym ASCII o kodzie 59 na przykład. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 13 Października 2006 Zgłoś Opublikowano 13 Października 2006 można też tak: http://www.druid.net/~darcy/files/ascii.h Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
DiJo Opublikowano 14 Października 2006 Zgłoś Opublikowano 14 Października 2006 co powinienem zrobić żeby w linuksie mieć funkcje getch() ? Nie ma plików iostream ani conio :( Da sie to ściągnąć w jakimś pakiecie? Albo może są jakieś odpowiedniki (oprócz stdio.h) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 14 Października 2006 Zgłoś Opublikowano 14 Października 2006 co powinienem zrobić żeby w linuksie mieć funkcje getch() ? Nie ma plików iostream ani conio :( Da sie to ściągnąć w jakimś pakiecie? Albo może są jakieś odpowiedniki (oprócz stdio.h) google nie gryzie: http://www.google.pl/search?client=firefox...Szukaj+w+Google Na przykład: http://cboard.cprogramming.com/archive/ind...hp/t-27714.html czy: http://www.thescripts.com/forum/thread503640.html Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
aurel Opublikowano 17 Października 2006 Zgłoś Opublikowano 17 Października 2006 hm. mam oto problem dotyczący kodów ascii - jakie są kody kursorów...? na wikipedii niby są wszystkie klawisze funkcyjne wypisane, ale może ja jestem jakaś głupia, ale strzałek znaleźć nie mogę... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 17 Października 2006 Zgłoś Opublikowano 17 Października 2006 #include <conio.h>#include <iostream.h>int main(){ clrscr(); while (1) { char c = getch(); cout << (int)c << endl << endl; //Esc kończy działanie programu if((int)c == 27) break; } return 0;} Uruchom sobie ten kod, podczas naciśnięcia przycisku bedziesz mieć jego kod. Przed niektórymi przyciskami oczywiście są zera w tym i przed strzałkami. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
aurel Opublikowano 18 Października 2006 Zgłoś Opublikowano 18 Października 2006 wielkie dzięki :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 19 Października 2006 Zgłoś Opublikowano 19 Października 2006 #include <conio.h>#include <iostream.h>int main(){ clrscr(); while (1) { char c = getch(); cout << (int)c << endl << endl; //Esc kończy działanie programu if((int)c == 27) break; } return 0;} Uruchom sobie ten kod, podczas naciśnięcia przycisku bedziesz mieć jego kod. Przed niektórymi przyciskami oczywiście są zera w tym i przed strzałkami. Właśnie tu jest kłopot, bo getch() pobiera jeden bit z bufora klawiatury a nie dwa. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 24 Października 2006 Zgłoś Opublikowano 24 Października 2006 Właśnie tu jest kłopot, bo getch() pobiera jeden bit z bufora klawiatury a nie dwa. To nie jest żaden problem. B.T.W. getch pobiera pojedynczy bajt ze strumienia wejściowego. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 24 Października 2006 Zgłoś Opublikowano 24 Października 2006 To nie jest żaden problem. B.T.W. getch pobiera pojedynczy bajt ze strumienia wejściowego. Moja pomyłka o 7 bitów... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...