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

📄 keyboard_up.h~

📁 贪吃蛇在arm版上的运行
💻 H~
字号:
#ifndef _PUBLIC_H#define _PUBLIC_H#include <linux/fb.h>#include <stdio.h>#include <linux/fb.h>#include <fcntl.h>#include <errno.h>#include <unistd.h>#include <sys/mman.h>#include <sys/ioctl.h>#define SYS_BLACK		0x00000000#define SYS_WHITE		0xffffffff// Framebuffer device display information
unsigned int fb_bpp;
unsigned int fb_width;
unsigned int fb_height;
unsigned int fb_pixel_size;
unsigned int fb_line_size;
unsigned int fb_buffer_size;// Define macro of display information
#define BPP				fb_bpp
#define SCREEN_WIDTH	fb_width
#define SCREEN_HEIGHT	fb_height
#define PIXEL_SIZE		fb_pixel_size
#define LINE_SIZE		fb_line_size
#define BUFFER_SIZE		fb_buffer_size/* Keyboard values*/typedef unsigned short	MWKEY;typedef unsigned short	MWSCANCODE;/* Keyboard state modifiers*/typedef unsigned int	MWKEYMOD;#define MWKEY_UNKNOWN		0#define MWKEY_NONASCII_MASK	0xFF00/* Numeric keypad*/#define MWKEY_KP0		'0'#define MWKEY_KP1		'1'#define MWKEY_KP2		'2'#define MWKEY_KP3		'3'#define MWKEY_KP4		'4'#define MWKEY_KP5		'5'#define MWKEY_KP6		'6'#define MWKEY_KP7		'7'#define MWKEY_KP8		'8'#define MWKEY_KP9		'9'#define MWKEY_KP_DEL		0x7F#define MWKEY_KP_DIVIDE		'/'#define MWKEY_KP_MULTIPLY	'*'#define MWKEY_KP_MINUS		'-'#define MWKEY_KP_PLUS		'+'#define MWKEY_KP_ENTER		13#define MWKEY_KP_EQUALS		61#define MWKEY_KP_NUMLOCK	0XFF#define MWKEY_C_DEL			'.' //0x7F#define MWKEY_C_DIVIDE		'/'#define MWKEY_C_MULTIPLY	'*'#define MWKEY_C_MINUS		'-'#define MWKEY_C_PLUS		'+'#define MWKEY_C_ENTER		13#define MWKEY_C_EQUALS		61#define MWKEY_C_NUMLOCK		0XFF/* Following keysyms are mapped to private use portion of Unicode-16*//* arrows + home/end pad*/#define MWKEY_FIRST		MWKEY_KP4#define MWKEY_LEFT		MWKEY_KP4#define MWKEY_RIGHT		MWKEY_KP6#define MWKEY_UP		MWKEY_KP8#define MWKEY_DOWN		MWKEY_KP2#define MWKEY_INSERT	MWKEY_KP0#define MWKEY_DELETE	MWKEY_KP_DEL#define MWKEY_HOME		MWKEY_KP7#define MWKEY_END		MWKEY_KP1#define MWKEY_PAGEUP	MWKEY_KP9#define MWKEY_PAGEDOWN	MWKEY_KP3#define MWKEY_NUMLOCK	MWKEY_KP_NUMLOCK#define KEYBOARD "/dev/mcu/kbd"typedef struct{    int r;    int g;    int b;} color;/* Interface to Keyboard Device Driver*/typedef struct _kbddevice {	int  (*Open)(void);	void (*Close)(void);	void (*GetModifierInfo)(MWKEYMOD *modifiers, MWKEYMOD *curmodifiers);	int  (*Read)(MWKEY *buf,MWKEYMOD *modifiers,MWSCANCODE *scancode);	int  (*Poll)(void);		/* not required if have select()*/} KBDDEVICE;static int fd;typedef struct{	MWKEY mwkey;	int scancode;}KeyMap;static MWKEY scancodes[64];static KeyMap keymap[] = {		//update map policy      {MWKEY_KP0,  0x0b},       {MWKEY_KP1,  0x02},       {MWKEY_KP2,  0x03},       {MWKEY_KP3,  0x04},       {MWKEY_KP4,  0x05},       {MWKEY_KP5,  0x06},       {MWKEY_KP6,  0x07},       {MWKEY_KP7,  0x08},       {MWKEY_KP8,  0x09},       {MWKEY_KP9,  0x0a},       {MWKEY_NUMLOCK, 	0x2a},       {MWKEY_KP_DIVIDE,	0x35},       {MWKEY_KP_MULTIPLY,	0x37},       {MWKEY_KP_MINUS,	0x4a},       {MWKEY_KP_PLUS,	0x4e},       {MWKEY_KP_ENTER,	0x1c},       {MWKEY_KP_DEL,	0x53}, };intKBD_Open(void){	int i;	fd = open(KEYBOARD, O_RDONLY | O_NONBLOCK);	if (fd < 0) 	{		printf("%s - Can't open keyboard!\n", __FUNCTION__);		return -1;	}	for (i=0; i<sizeof(scancodes)/sizeof(scancodes[0]); i++)		scancodes[i]=MWKEY_UNKNOWN;	for (i=0; i< sizeof(keymap)/sizeof(keymap[0]); i++)		scancodes[keymap[i].scancode]=keymap[i].mwkey;	return fd;}voidKBD_Close(void){	close(fd);	fd = -1;}voidKBD_GetModifierInfo(MWKEYMOD * modifiers, MWKEYMOD * curmodifiers){	if (modifiers)		*modifiers = 0;	/* no modifiers available */	if (curmodifiers)		*curmodifiers = 0;}intKBD_Read(char* kbuf, MWKEYMOD * modifiers, MWSCANCODE * scancode){	int keydown = 0;	int cc = 0;	char buf, key;	cc = read(fd, &buf, 1);	if (cc < 0) 	{		if ((errno != EINTR) && (errno != EAGAIN) && (errno != EINVAL)) 		{			perror("KBD KEY");			return (-1);		} 		else 		{			return (0);		}	}	if (cc == 0)		return (0);	*modifiers = 0;	if (buf & 0x80) 	{		keydown = 1;	/* Key pressed but not released */	} 	else 	{		keydown = 2;	/* key released */	}	buf &= (~0x80);	*scancode = scancodes[(int) buf];	*kbuf = *scancode ;	return keydown;}int kbd_init(){	if (KBD_Open() < 0) 	{		printf("Can't open keyboard!\n");		return -1;	}	return 0;}int kbd_close(){	KBD_Close();	return 0;}char get_key(void){	int keydown = 0;	char  key = 0; 	MWKEYMOD  modifiers;	MWSCANCODE  scancode;	while(1)	{		keydown = KBD_Read(&key, &modifiers, &scancode); 		if(keydown == 1)		{			return key;		}else return 'n';	}}#endif

⌨️ 快捷键说明

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