rk平板硬件按钮点击事件(工作内容)

按键对应得键值

//按键对应的键值
#define IO_KEY_BACK			0x00000001  //back key
#define IO_KEY_HOME			0x00000002  //home key
#define IO_KEY_VOLUP		0x00000004
#define IO_KEY_VOLDOWN		0x00000008
#define IO_KEY_HELP			0x00000010
#define IO_KEY_MENU			0x00000020  //menu key
#define IO_KEY_UP			0x00000100
#define IO_KEY_DOWN			0x00000200
#define IO_KEY_LEFT			0x00000400
#define IO_KEY_RIGHT		0x00000800
#define IO_KEY_ROTATE		0x00001000
#define IO_KEY_POWER		0x80000000



按键面板初始化


int  Keypad_Initialize(void)
{
    if (! Is_Keypad_Initialized)
    {
        Fd_Event = open("/dev/input/event1", O_RDONLY|O_NONBLOCK);
        if (Fd_Event < 0)
        {
            return STATUS_INITIALIZE_ERROR;
        }
        Fd_PowerKey = open("/dev/input/event0", O_RDONLY|O_NONBLOCK);
        if (Fd_PowerKey < 0)
        {
            return STATUS_INITIALIZE_ERROR;
        }
        Is_Keypad_Initialized = 1;
    }
    return 0;
}

按键清除

void Keypad_Cleanup(void)
{
    if (Is_Keypad_Initialized)
    {
        if (Fd_Event > 0)
        {
            close(Fd_Event);
            Fd_Event = -1;
        }
        if (Fd_PowerKey > 0)
        {
            close(Fd_PowerKey);
            Fd_PowerKey = -1;
        }
        Is_Keypad_Initialized = 0;
    }
}

获取按键状态

int Keypad_Get_IOKeyStatus(void)
{
    struct input_event key_event, key_power_event;
	int ret, ret_power;

    do{
		ret = read(Fd_Event, &key_event, sizeof(key_event));
        if (key_event.type == EV_KEY && key_event.value)
		{
			switch (key_event.code)
			{
				case 0x9E: //EXIT or Back key
					return IO_KEY_BACK;
				case 0x8A: //help key
					return IO_KEY_HELP;
				case 0x73: //v+ key
					return IO_KEY_VOLUP;
				case 0x72: //v- key
					return IO_KEY_VOLDOWN;
				case 0x8B: //shutter or menu key
					return IO_KEY_MENU;
				case 0x67: //up key
					return IO_KEY_UP;
				case 0x6A: //right key
					return IO_KEY_RIGHT;
				case 0x6C: //down key
					return IO_KEY_DOWN;
				case 0x69: //left key
					return IO_KEY_LEFT;
				case 0x66: //home or enter key
					return IO_KEY_HOME;
				case 0x74: //power
					return IO_KEY_POWER;
				case 0xF9: //rotate
					return IO_KEY_ROTATE;
				default:
					return 0;
			}
		}
		ret_power = read(Fd_PowerKey, &key_power_event, sizeof(key_power_event));
        if (key_power_event.type == EV_KEY && key_power_event.value && key_power_event.code == 0x74)
			return IO_KEY_POWER;
		
    }while ( ret > 0 && ret_power > 0);
		return 0;
}

使用按键

void Camera_Test_for_PCBA(void)
{
	int key_status = 0 ;
	static int status_count = 0 ;
	int File_num = 0 ;
	int flag = 0 ;
	//初始化界面显示
	INIT:
	Display_Initialize();
	disp_setting();
	Display_Title();
	printf("disp_set success!\n");
	//初始化按键
	Keypad_Initialize();
	while(1)
	{
		key_status = Keypad_Get_IOKeyStatus();
		if(key_status == IO_KEY_HOME)
		{
			printf("Start_camera test\n");
			Start_Camera_Test();
			
		}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值