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/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

发表回复

登录后才能评论