❶ 如何獲分辨鍵盤是輸入了方向鍵,用的是c語言!
1、一般是使用getch獲取
方向鍵(←): 0xe04b
方向鍵(↑): 0xe048
方向鍵(→): 0xe04d
方向鍵(↓): 0xe050
一個方向鍵要用兩個getch才能把它的數據獲取完.
然後對應著兩個字元數據, 一個當高位, 一個當低位, 就可以判斷按下的是什麼鍵, 如:
char ch = getch();
if(ch == 0xe000) //如果高位相等
{
ch = getch(); //那麼再獲取一個
if (ch == 0x004b) //如果低位也相同(和方向鍵左一樣)
.... //要執行的動作.
}
else //如果不是, 把這個字元吸收了.
getch()
2、常式:
#include<stdio.h>
#include<stdlib.h>
main()
{
intkey,key2;
key=getch();
printf(" keyvalue=0x%02x--%d ",key,key);
key=getch();
printf(" keyvalue=0x%02x--%d ",key,key);
}
❷ 在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語言怎麼捕捉按鍵
通過鍵盤對應鍵的ASCII碼值進行獲取所按下的鍵值,從而確定所按下的具體按鍵。具體實現代碼如下:
#include<stdio.h>
#include<conio.h>
intmain()
{
intkey;
while(1)
{
key=getch();
if(key==27)break;
if(key>31&&key<127)/*如果不是特殊鍵*/
{
printf("按了%c鍵按ESC退出! ",key);
continue;
}
key=getch();
if(key==72)printf("按了上鍵按ESC退出! ");
if(key==80)printf("按了下鍵按ESC退出! ");
if(key==75)printf("按了左鍵按ESC退出! ");
if(key==77)printf("按了右鍵按ESC退出! ");
}
return0;
}
❹ C語言獲取按鍵信息函數
這個程序應該滿足你的要求吧。
#include <stdio.h>
#include <conio.h>
int main(void)
{
while (1)
{
if (!kbhit())
printf("1");
else
{
char c = getch();
if (c == 'a')
{
putchar('2');
getch();
}
}
}
return 0;
}
❺ 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語言各個按鍵的鍵值是什麼
,用它可以獲得鍵盤上按鍵的鍵值,獲得鍵值之後,把它們記住,或者用宏定義,就可以為以後的
判斷語句使用,
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語言各個按鍵的鍵值是什麼
,用它可以獲得鍵盤上按鍵的鍵值,獲得鍵值之後,把它們記住,或者用宏定義,就可以為以後的 判斷語句使用,
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語言從鍵盤讀入控制鍵鍵值如何實現
用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*/
}
❾ 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語言鍵盤內容讀取
綜觀TC提供的鍵盤輸入函數,以bioskey函數為最合適選擇。
int bioskey(int cmd);
使用BIOS中斷0x16執行各種鍵盤操作。參數cmd確定實際得操作。
bioskey的返回值由cmd決定:
0:低8位非0,返回在隊列中等待的下一輸入鍵的ascii字元或鍵盤的下一次按鍵輸入的ascii字元。低8位為0,則高8位為擴展鍵盤碼。
1:測試是否有可讀的輸入鍵,為0,則沒有。Ctrl_break 返回0xffff(-1)。否則,返回下一個輸入鍵。鍵值還保存,供下次cmd=0時bioskey調用返回。
2:請求當前換檔鍵狀態。狀態值由下列值相或(or)得到:
位7 0x80 Insert ON
6 0x40 Caps ON
5 0x20 Numlock ON
4 0x10 Scroll Lock ON
3 0x08 ALT
2 0x04 CTRL
1 0x02 <- SHIFT
0 0x01 -> SHIFT
為了方便起見,我們首先定義一些常用功能鍵的鍵值。
#define ReturnKey 0x0d
#define ESC 0x1b
#define Back 0x08
#define LeftArrow 0x4b00
#define RightArrow 0x4d00
#define UpArrow 0x4800
#define DownArrow 0x5000
#define PageUp 0x4900
#define PageDown 0x5100
#define Home 0x4700
#define End 0x4f00
#define F1 0x3b00
#define F2 0x3c00
#define F3 0x3d00
#define F4 0x3e00
#define F5 0x3f00
#define F6 0x4000
#define F7 0x4100
#define F8 0x4200
#define F9 0x4300
#define F10 0x4400
int GetKey(void)
{
int tKey;
while(bioskey(1)==0)
;
tKey=bioskey(0);
if ((tKey & 0xff)!=0)
tKey=tKey & 0xff;
return tKey;
}
以上代碼,可基本完成常用程序鍵盤讀取操作。
但我們必須注意到,對於函數GetKey的定義中,bioskey函數的使用,我們只是對cmd=0,1的情況進行了處理,而對於cmd=2,也即換檔鍵狀態沒有進行處理,因而諸如ctrl-home等等GetKey不能進行相應的接收,如果確實需要,須繼續擴充GetKey函數。