⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atkeyboard.h

📁 ps/2键盘处理程序
💻 H
字号:
#ifndef __ATKEYBOARD_H__
#define __ATKEYBOARD_H__

#define KEYBOARD_OK				0
#define KEYBOARD_HOST_BUSY		1
#define KEYBOARD_HOST_DISABLE	2		//主机抑制发送
#define KEYBOARD_HOST_WITHDRAW	3		//主机取消发送
#define KEYBOARD_REC_PARITY		4		//接收校验错
#define KEYBOARD_RESENT			0xFE	//主机要求重发

#define ACTUAL_KEYBOARD		1		//实际键盘
#define VIRTUAL_KEYBOARD	0		//虚拟键盘


//键盘缓冲区大小,暂定20个
//只存不重复的键通码和断码,重复的只存一个
//如:按键A按下到释放得键盘码1C 1C 1C F0 1C,实际只存1C F0 1C
//若超过,则最后输入的按键自动丢失	
#define KEYBOARD_BUFFER_SIZE	20
typedef struct _KEYBOARD_DATA
{
	unsigned char Length;		//缓冲区长度
	unsigned char cKeyBuffer[KEYBOARD_BUFFER_SIZE];	//键盘缓冲区
}sttKeyboardData;

//键码定义
#define KEYUP				0xF0		//键释放时送出的断码信号,后跟实际键码
#define KEY_BACKSPACE		0x66		//退格键
#define KEY_TAB				0x0D		//TAB键
#define KEY_LEFT_SHIFT		0x12		//左Shift键
#define KEY_LEFT_CTRL		0x14		//左Ctrl键
#define KEY_LEFT_ALT		0x11		//左Alt键
#define KEY_ENTER			0x5A		//回车键
#define KEY_ESC				0x76		//ESC键

//功能键
extern code unsigned char KeyCode_FunctionKey[12];
//大键盘数字键码
extern code unsigned char KeyCode_MainNumberKey[10];
//小键盘数字键码
extern code unsigned char KeyCode_SubNumberKey[10];
//26个字母键码
extern code unsigned char KeyCode_Char[26];


extern sttKeyboardData stKeyboardData;	//键盘数据

//开始监控键盘
#define StartMonitorKeyboard()	EX0 = 1		// 开外部中断0

//停止监控键盘
#define StopMonitorKeyboard()	EX0 = 0		// 关外部中断0

//控制实际键盘通讯IO通断
//bit KeyboardType:键盘选择,ACTUAL_KEYBOARD-实际键盘,VIRTUAL_KEYBOARD-虚拟键盘
void SelectKeyboard(bit KeyboardType);

//复位键盘监控
void ResetKeyboardMonitor();

extern void Delay(unsigned char _2NOP);
//从模拟键盘口发送1字节数据
extern unsigned char ATKeyboard_SendByte(unsigned char KeyData);
//接收PC机的应答
//PC机接收键码后,若正确,则无应答,若错误,则有应答0xFE要求重发
extern unsigned char ReceiveEcho();
extern unsigned char ReceiveData();
//模拟键盘发送一按键
//KeyCode:为具体键码
void SendKey(unsigned char KeyCode);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -