c語言識別鍵盤,c語言從鍵盤輸入是什麼意思

本文目錄一覽:

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函數。

c語言怎樣判斷鍵盤按鍵的按下、釋放?

C語言判斷鍵盤按下和釋放,是通過檢測該鍵的狀態來實現的。如果是單一的一個按鍵,那麼直接檢測該鍵是「1」還是「0」,就可以確定是按下還是釋放。如果是矩陣鍵盤,那麼需要發送掃描碼,再檢測輸入值,來判斷鍵盤中鍵的狀態。以下舉例說明:

bit keychk()    //單一按鍵檢測

{

if(P1.0==0)    //如果鍵按下

{

delay();     //延時去抖

if(P1.0==0)return(1);    //返回鍵狀態

}

return(0);

}

unsigned char kbscan(void)    //矩陣掃描按鍵檢測

{

unsigned char sccode,recode;

P1=0x0f;  //發0掃描,列線輸入

if ((P2  0x0f) != 0x0f)  //有鍵按下

{

delay(20);   //延時去抖動

if ((P10x0f)!= 0x0f)

{

sccode = 0xef;    //逐行掃描初值

while((sccode0x01)!=0)

{

P1=sccode;

if((P10x0f)!=0x0f)

{

recode=(P10x0f)|0xf0;

while((P10x0f)!=0x0f);//等待鍵抬起

return((~sccode)+(~recode));

}

else

sccode=(sccode1)|0x01;

}

}

}

return 0;  //無鍵按下,返回0

}

在c語言中什麼函數能實現識別鍵盤上的按鍵?

添加WM_KEYDOWN函數。在函數體中case WM_KEYDOWN: if (wParam==VK_LEFT)//方向鍵左 { rect1.left-=10; rect1.right-=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_RIGHT)//方向鍵右 { rect1.left+=10; rect1.right+=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_UP)//方向鍵上 { rect1.top-=10; rect1.bottom-=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_DOWN)//方向鍵下 { rect1.top+=10; rect1.bottom+=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_PRIOR)//PG UP { rect1.top-=10; rect1.bottom-=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_NEXT)//PG DN { rect1.top+=10; rect1.bottom+=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_HOME)//HOME { rect1.left-=10; rect1.right-=10; InvalidateRect (hWnd,NULL,TRUE); } else if (wParam==VK_END)//END { rect1.left+=10; rect1.right+=10; InvalidateRect (hWnd,NULL,TRUE); } break;

c語言中如何識別鍵盤輸入的方向鍵?

用windows API裡面有一個LRESULT CALLBACK WndProc( HWND hWnd, // 窗口的句柄

UINT uMsg, // 窗口的消息

WPARAM wParam, // 附加的消息內容

LPARAM lParam) // 附加的消息內容

這個消息響應函數,然後用switch語句對於 case WM_KEYDOWN:即鍵盤按下時的消息響應,這個時候再判斷傳進來的參數wParam的值,方向鍵對應鍵值分別為VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT,下面是一個例子,你自己看看:

LRESULT CALLBACK WndProc( HWND hWnd, // 窗口的句柄

UINT uMsg, // 窗口的消息

WPARAM wParam, // 附加的消息內容

LPARAM lParam) // 附加的消息內容

{

switch (uMsg) // 檢查Windows消息

{

case WM_ACTIVATE: // 監視窗口激活消息

{

if (!HIWORD(wParam)) // 檢查最小化狀態 HIWORD取後面參數的高16位

{

active=TRUE; // 程序處於激活狀態

}

else

{

active=FALSE; // 程序不再激活

}

return 0; // 返回消息循環

}

case WM_SYSCOMMAND: // 系統中斷命令

{

switch (wParam) // 檢查系統調用

{

case SC_SCREENSAVE: // 屏保要運行?

case SC_MONITORPOWER: // 顯示器要進入節電模式?

return 0; // 阻止發生

}

break; // 退出

}

case WM_CLOSE: // 收到Close消息?

{

PostQuitMessage(0); // 發出退出消息

return 0; // 返回

}

case WM_KEYDOWN: // 有鍵按下么?

{

switch (wParam)

{

case VK_UP:

MOVEUP();

return 0;

}

}

case WM_KEYUP: // 有鍵放開么?

{

keys[wParam] = FALSE; // 如果是,設為FALSE

return 0; // 返回

}

case WM_SIZE: // 調整OpenGL窗口大小

{

ReSizeGLScene(LOWORD(lParam),HIWORD(lParam)); // LoWord=Width,HiWord=Height

return 0; // 返回

}

}

return DefWindowProc(hWnd,uMsg,wParam,lParam);

}

希望對你有所幫助。

c語言如何識別鍵盤按鍵的長按與抬起動作,求助

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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286305.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 03:47
下一篇 2024-12-23 03:47

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 鍵盤如何啟動運行

    鍵盤作為計算機的一部分,是輸入設備的代表,具有啟動運行的至關重要作用。本文將分多個方面詳述鍵盤如何啟動運行。 一、鍵盤的連接方式 鍵盤的連接方式有2種:一種是通過PS/2口連接,另…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論