當前位置:首頁 » 編程語言 » c語言監控鍵盤

c語言監控鍵盤

發布時間: 2025-04-06 21:33:40

1. c語言 如何在一段時間內檢測鍵盤是否按下

#include <bios.h>
#include <stdio.h>
main()
{
int key;
for(;;)
{
if (bioskey(1)) /*有鍵按下,讀取鍵值*/
key=bioskey(0);
else /*無鍵按下,返回0*/
key=0;
switch(key)
{case 0: ...../*無按鍵,執行該操作*/
case 0xXXXXH:..../*不同鍵值,做不同處理*/
。。。。。
}
}
}

該程序段功能:
判斷是否有鍵按下,若有進行不同操作,若無進行其他操作。

相關原理:
函數名: bioskey
功 能: 直接使用BIOS服務的鍵盤介面
函數原型:int bioskey (int cmd)
說明:bioskey()的函數原型在bios.h中
bioskey()完成直接鍵盤操作,cmd的值決定執行什麼操作。

cmd = 1:
當cmd是1,bioskey()查詢是否按下一個鍵,若按下一個鍵則返回非零值,否則返回0。

鍵盤有按鍵時,會把鍵值(掃描碼)存入緩沖區,當需要判斷是否有鍵按下時,掃描緩沖區,為空則無鍵按下,不為空則有鍵按下。注意:該功能並不清空緩沖區。

cmd = 0:
當cmd是0,bioskey()返回鍵盤鍵入的值。它返回一個16位的二進制數,包括兩個不同的值。當按下一個普通鍵時,它的低8位數存放該字元的ASCII碼,高8位存放該鍵的掃描碼;對於特殊鍵(如方向鍵、F1~F12等等),低8位為0,高8位位元組存放該鍵的掃描碼。

其操作步驟為:
1.檢測緩沖區是否有數據;
2.沒有則繼續第一步;
3.讀取緩沖區第一個單元中的鍵盤輸入
4.讀取的掃描碼
5.將已讀取的鍵盤輸入從緩沖區刪除

2. C語言如何檢測鍵盤動作不要用bios.h和windows.h。

在應用層實現應該用到windows.h;而在核心層可以不必用到bios.h和windows.h.單說記錄鍵盤動作在核心層實現的方法也是有許多種,講都講不完.你可以搜索:鍵盤驅動

3. 如何在linux下用c語言實現對鍵盤的監聽

自己寫函數

#include<stdio.h>
#include<termios.h>

staticstructtermiosinitial_settings,new_settings;
staticintpeek_character=-1;
voidinit_keyboard(void);
voidclose_keyboard(void);
intkbhit(void);
intreadch(void);
voidinit_keyboard()
{
tcgetattr(0,&initial_settings);
new_settings=initial_settings;
new_settings.c_lflag|=ICANON;
new_settings.c_lflag|=ECHO;
new_settings.c_lflag|=ISIG;
new_settings.c_cc[VMIN]=1;
new_settings.c_cc[VTIME]=0;
tcsetattr(0,TCSANOW,&new_settings);
}

voidclose_keyboard()
{
tcsetattr(0,TCSANOW,&initial_settings);
}

intkbhit()
{
unsignedcharch;
intnread;

if(peek_character!=-1)return1;
new_settings.c_cc[VMIN]=0;
tcsetattr(0,TCSANOW,&new_settings);
nread=read(0,&ch,1);
new_settings.c_cc[VMIN]=1;
tcsetattr(0,TCSANOW,&new_settings);
if(nread==1)
{
peek_character=ch;
return1;
}
return0;
}

intreadch()
{
charch;

if(peek_character!=-1)
{
ch=peek_character;
peek_character=-1;
returnch;
}
read(0,&ch,1);
returnch;
}

intmain()
{
init_keyboard();
while(1)
{
kbhit();
printf(" %d ",readch());
}
close_keyboard();
return0;
}
熱點內容
商場源碼 發布:2025-04-30 08:48:10 瀏覽:991
安卓腳本製作工具 發布:2025-04-30 08:45:24 瀏覽:794
比斯巨獸伺服器為什麼經常掉線 發布:2025-04-30 08:45:22 瀏覽:881
個體年審登錄密碼是什麼 發布:2025-04-30 08:40:54 瀏覽:851
安卓轉移數據如何到鴻蒙 發布:2025-04-30 08:30:27 瀏覽:648
安卓手機如何設置翻蓋息屏 發布:2025-04-30 08:21:29 瀏覽:674
我的世界伺服器推薦主題 發布:2025-04-30 08:20:45 瀏覽:583
c語言程序100例 發布:2025-04-30 08:17:06 瀏覽:901
酷家樂上傳貼圖 發布:2025-04-30 08:16:54 瀏覽:862
遠程音頻腳本 發布:2025-04-30 08:00:02 瀏覽:28