30/09/2018, 17:18
Hỏi về mã của bàn phím
while(1)
{
char c=getch();
cout<< (int)c<<endl;
}
e dùng cái mã trên để ghi ra giá trị của mã bàn phím ,lúc e ghi các phím a,b,c thì nó ra mã chỉ có 1 số như 97,96 … nhưng khi e nhấn phím mũi tên hay delete ,end thì nó lại ra tận 2 số
vd phím trái : -32
77
phím phải : -32
75
cho e hỏi là cái -32 là số gì ạ ,sao chỉ các phím mũi tên hay trên phím mũi tên là có vậy
Bài liên quan
Mình cũng không rõ. Hồi trước mình cũng có test để tìm mã phím kiểu này và cũng bị tương tự.
Để kết quả test ra 1 số thì bạn nên dùng printf trong C để làm.
mỗi lần bấm phím thì phím mũi tên đẩy 2 ký tự lên buffer thay vì 1 ký tự như mấy phím bình thường.
phím trái thì đẩy 2 ký tự là 224 và 77, phím phải thì 224 và 75. getch() lấy 1 ký tự trực tiếp từ buffer nên sẽ lấy 224 trước rồi tới 77. 224 vượt quá giới hạn của char (max là 127) nên bị overflow thành số âm (-32).
vd bấm 3 chữ a rồi 1 chữ b rồi 2 phím trái thì lúc in ra thì in ra 8 số: 97 97 97 98 -32 77 -32 77 (do 224 vượt quá giới hạn của char như đã nói ở trên), mặc dù chỉ nhấn 6 phím.
getch and arrow codes