Linux C 키 코드 읽 기
#include <stdio.h>
#include <stdlib.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <sys/time.h>
struct timeval begin_time;
int reboot_done = 0;
static void show_event(struct input_event* event)
{
int current_time = event->time.tv_sec * 1000 + (int) event->time.tv_usec/1000;
{
if( event->value == 0 )
{
begin_time.tv_sec = 0;
begin_time.tv_usec = 0;
reboot_done = 0;
printf("%d %d %d [%d.%d]
", event->type, event->code,
event->value, event->time.tv_sec,(int) event->time.tv_usec/1000 );
printf("press release !
");
}
else if( event->value == 1 )
{
begin_time.tv_sec = event->time.tv_sec;
begin_time.tv_usec = event->time.tv_usec;
printf("%d %d %d [%d.%d]
", event->type, event->code,
event->value, event->time.tv_sec,(int) event->time.tv_usec/1000 );
}
else if( event->value == 2 )
{
if(event->time.tv_sec - begin_time.tv_sec >= 4)
{
if(event->time.tv_usec - begin_time.tv_usec >= 0)
{
if(reboot_done == 0)
{
printf("%d %d %d [%d.%d]
", event->type, event->code,
event->value, event->time.tv_sec,(int) event->time.tv_usec/1000 );
reboot_done = 1;
printf("press long then 4 s
");
}
}
}
}
}
}
int main(int argc, char* argv[])
{
struct input_event event = {{0}, 0};
const char* file_name = argc == 2 ? argv[1] : "/dev/input/event0";
int fd = open(file_name, O_RDWR);
if(fd > 0)
{
do
{
int ret = read(fd, &event, sizeof(event));
if(ret == sizeof(event))
{
show_event(&event);
}
}
while(1);
close(fd);
}
else
printf("open filed %s
", argv[1]);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.