⑴ c語言 讀取鍵值的函數 注意:環境是VC++,沒有就說沒有
正常來說,一個單線程的程序是順序執行的,比如說你用scanf等待輸入鍵值,他會等待直到你輸入位置,然後繼續,這是順序執行的。所以你需要採用多線程的方法,開個線程監聽是否有鍵入,如果有的話就輸入並結束該線程就行了。這么說有點復雜,如果你用的是C++的MFC框架的話,可以採用消息機制,在消息處理函數中監聽鍵盤輸入消息來得到你想要的值就行了。
⑵ unix下用C語言如何獲得鍵值
用getchar,判斷ascii
⑶ c語言中怎樣輸入和讀取方向鍵
在用C語言寫出的「貪吃蛇」小游戲中,可以自編以下這個intokey( )函數,用來獲取方向鍵值以便控制蛇的拐彎。庫函數kbhit( )是檢測是否有按鍵被按下,Dir是代表方向的變數,整型變數flag用來獲取鍵值,1、2、3、4分別表示方向的上下左右。要#include<conio.h> .
void intokey( )
{ int flag;
if ( kbhit( ) ) //判斷有鍵按下時才執行下面操作
{ flag = getch( ); //用flag來獲取鍵值
if (flag==224) flag = getch( ); //值為224是方向鍵,要再次獲取才行
if (flag==72 && dir != 2) dir = 1; //方向鍵為「上」且原方向不為下時,讓dir=1.
if (flag==80 && dir != 1) dir = 2; //方向鍵為「下」且原方向不為上時,讓dir=2.
if (flag==75 && dir != 4) dir = 3; //方向鍵為「左」且原方向不為右時,讓dir=3.
if (flag==77 && dir != 3) dir = 4; //方向鍵為「右」且原方向不為左時,讓dir=4.
}
}
註:上下左右鍵按下後都會產生2個值,第一個是224,第二個才分別是72、80、75和
77.所以要用庫函數getch( )兩次獲取鍵值。如果是ASDW來控制拐彎,flag可以定義為
字元型,獲取一次鍵值即可。
⑷ c語言各個按鍵的鍵值是什麼
,用它可以獲得鍵盤上按鍵的鍵值,獲得鍵值之後,把它們記住,或者用宏定義,就可以為以後的 判斷語句使用,
for example:
#include<stdio.h>
void main(void)
{
int key=0;
clrscr();
while(key != 0x11b) /*0x11b就是ESC鍵的鍵值,用它來判斷結束,這是我事先知道的,方法是一樣的*/
{
key = bioskey(0);
printf("%x ",key);/*把獲得的鍵值用16進制顯示*/
}
}
⑸ c語言中怎樣輸入和讀取方向鍵
在C代碼中可設置如下自編的intokey( )函數,用以接收方向鍵值。庫函數kbhit( )是檢測是否有按鍵被按下,庫函數getch( )是讀取鍵盤按鍵值的,不需按回車,也不回顯。dir是代表方向的變數,根據不同的方向鍵值,讓dir取1到4這四個不同的值。其它的程序段就可根據dir的值讓東西朝某個方向移動。方向鍵按下後會產生2個值,第一個是224,另一個分別為上下左右的72、80、75、77,因此要讀取2次值來判斷。要包含#include<conio.h> .
void intokey( )
{ int flag;
if ( kbhit( ) ) //判斷有鍵按下時才執行下面的操作
{ flag = getch( ); //用flag來獲取鍵值
if (flag==224)
{ flag = getch( ); //值為224時表示按下了方向鍵,要再次獲取才行
if ( flag==72 && dir != 2 ) dir = 1;
if ( flag==80 && dir != 1 ) dir = 2;
if ( flag==75 && dir != 4 ) dir = 3;
if ( flag==77 && dir != 3 ) dir = 4;
}
if (flag==13)
{ while( 1 ) if ( ( flag=getch( ) )==13 ) break ; }
}
}
註:這個函數來源於某些「貪吃蛇」的代碼,略有修改,足可獲取方向鍵值。其中的1、2、 3、4分別對應著上下左右。當flag獲得鍵值後,分兩種情況:一是flag=224,此時再次獲取鍵值以判斷輸入的是4個方向中的哪一個;二是flag=13,表示按下回車鍵,我們就執行循環,程序暫停,等待再次輸入回車,程序繼續運行。
⑹ 求C語言中各鍵值
鍵盤掃描碼
[編輯本段]定義
鍵盤上的每一個鍵都有兩個唯一的數值進行標志。為什麼要用兩個數值而不是一個數值呢?這是因為一個鍵可以被按下,也可以被釋放。當一個鍵按下時,它們產生一個唯一的數值,當一個鍵被釋放時,它也會產生一個唯一的數值,我們把這些數值都保存在一張表裡面,到時候通過查表就可以知道是哪一個鍵被敲擊,並且可以知道是它是被按下還是被釋放了。這些數值在系統中被稱為鍵盤掃描碼
[編輯本段]掃描碼大全
掃描碼 鍵
0x011b ESC
0x3b00 F1
0x3c00 F2
0x3d00 F3
0x3e00 F4
0x3f00 F5
0x4000 F6
0x4100 F7
0x4200 F8
0x4300 F9
0x4400 F10
主鍵盤區:
0x2960 ~
0x0231 1
0x0332 2
0x0433 3
0x0534 4
0x0635 5
0x0736 6
0x0837 7
0x0938 8
0x0a39 9
0x0b30 0
0x0c2d -
0x0d3d =
0x2b5c \
0x0e08 退格鍵
0x0f09 Tab
0x1071 q
0x1177 w
0x1265 e
0x1372 r
0x1474 t
0x1579 y
0x1675 u
0x1769 i
0x186f o
0x1970 p
0x1a5b [
0x1b5d ]
0x1e61 a
0x1f73 s
0x2064 d
0x2166 f
0x2267 g
0x2368 h
0x246a j
0x256b k
0x266c l
0x273b ;
0x2827 '
0x1c0d 回車
0x2c7a z
0x2d78 x
0x2e63 c
0x2f76 v
0x3062 b
0x316e n
0x326d m
0x332c ,
0x342e .
0x352f /
0x3920 空格鍵
0xe05b 左Win
0xe05c 右Win
0xe05d Menu
右邊數字鍵盤:
0x5200 Insert
0x4700 Home
0x4900 Page UP
0x5300 Delete
0x4f00 End
0x5100 PageDown
0x4800 上箭頭
0x4b00 左箭頭
0x5000 下箭頭
0x4d00 右箭頭
0x352f /
0x372a *
0x4a2d - (注意,這是數字鍵盤的)
0x4737 7
0x4838 8
0x4939 9
0x4b34 4
0x4c35 5
0x4d36 6
0x4e2b +
0x4f31 1
0x5032 2
0x5133 3
0x5230 0
0x532e Del
⑺ linux下c語言編程,怎樣掃描鍵盤輸入並且獲取鍵值
列印編譯的方法有很多,比如在編譯時候將其重定向到另一個文件或者直接打開某一個文件在c中直接將參數寫入該文件
⑻ 在dev環境下,如何利用C語言獲得鍵盤鍵值
#include<iostream>/*GetKeyState()函數是windows.h中的函數,當括弧內的鍵被按下時,其值小於0,*/
#include<windows.h>/*並且只要在只要鍵處於被按下的狀態,其值都會小於0,當鍵被松開時,其值大於0*/
using namespace std;
int main()
{
while(1){
if((GetKeyState(VK_CONTROL)<0)&&(GetKeyState('A')<0)){
cout<<"CONTROL+A";
while(GetKeyState(VK_CONTROL)<0&&GetKeyState('A')<0) ;//只要鍵被按下,就會有一定的持續時間。
}
}
}
//自己耗費1天半的嘔心瀝血之作,希望對你有用!
⑼ 請問下c語言從鍵盤讀入控制鍵鍵值如何實現
用bioskey()函數;在dos.h頭文件中!
函數原型:int bioskey (int cmd)
說明:bioskey()的函數原型在bios.h中
bioskey()完成直接鍵盤操作,cmd的值決定執行什麼操作。
cmd = 0:
當cmd是0,bioskey()返回下一個在鍵盤鍵入的值(它將等待到按下一個鍵)。它返回一個16位的二進制數,包括兩個不同的值。當按下一個普通鍵時,它的低8位數存放該字元的ASCII碼;對於特殊鍵(如方向鍵、F1~F12等等),低8位為0,高8位位元組存放該鍵的掃描碼。
cmd = 1:
當cmd是1,bioskey()查詢是否按下一個鍵,若按下一個鍵則返回非零值,否則返回0。
cmd = 2:
當cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert鍵的狀態。各鍵狀態存放在返回值的低8位位元組中。
位元組位 含義
0 右邊Shift鍵狀態
1 左邊Shift鍵狀態
3 Ctrl鍵狀態
4 Alt鍵狀態
5 ScrollLock鍵狀態
6 NumLock鍵狀態
7 CapsLock鍵狀態
8 Insert鍵狀態
方向鍵可以用下面的程序啊!
#define Key_Up 0x4800/*up*/
#define Key_Down 0x5000/*down*/
#define Key_Right 0x4d00/*right*/
#define Key_Left 0x4b00/*left*/
int key=bioskey(0);
switch(key)
{
case Key_Up:/*code*/
case Key_Down:/*code*/
case Key_Left:/*code*/
case Key_Right:/*code*/
}
⑽ Linux系統中如何用C語言編程獲取方向鍵值.....
特殊的鍵,如方向鍵,功能鍵等,可以使用讀取普通鍵的方式,但是要連讀兩次。