📄 keyfunc.c
字号:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int fdkey = -1;
int fdkeypipe = -1;
int ikeycode = 0;
int result=0;
char buf[2]={0,};
fdkey = open("/dev/keypad",O_NONBLOCK,0);
if(fdkey<0)
{
printf("Can't open keypad\n");
return -1;
}
fdkeypipe = open("/dev/keypipe",O_WRONLY);
if(fdkeypipe<0)
{
printf("Can't open keypipe\n");
return -1;
}
while(1)
{
result= read(fdkey,buf,sizeof(buf));
if(result>0)
{
if(buf[0]==0x01){
if(buf[1] == 0x0) ikeycode = 10;
else if(buf[1] == 0x1) ikeycode = 11;
else if(buf[1] == 0x2) ikeycode = 12;
else if(buf[1] == 0x3) ikeycode = 13;
else if(buf[1] == 0x4) ikeycode = 14;
}
else if(buf[0] == 0x02){
if(buf[1] == 0x0) ikeycode = 20;
else if(buf[1] == 0x1) ikeycode = 21;
else if(buf[1] == 0x2) ikeycode = 22;
else if(buf[1] == 0x3) ikeycode = 23;
else if(buf[1] == 0x4) ikeycode = 24;
}
else if(buf[0] == 0x04){
if(buf[1] == 0x0) ikeycode = 30;
else if(buf[1] == 0x1) ikeycode = 31;
else if(buf[1] == 0x2) ikeycode = 32;
else if(buf[1] == 0x3) ikeycode = 33;
else if(buf[1] == 0x4) ikeycode = 34;
}
else if(buf[0] == 0x08){
if(buf[1] == 0x0) ikeycode = 40;
else if(buf[1] == 0x1) ikeycode = 41;
else if(buf[1] == 0x2) ikeycode = 42;
else if(buf[1] == 0x3) ikeycode = 43;
else if(buf[1] == 0x4) ikeycode = 44;
}
else if(buf[0] == 0x10){
if(buf[1] == 0x0) ikeycode = 50;
else if(buf[1] == 0x1) ikeycode = 51;
else if(buf[1] == 0x2) ikeycode = 52;
else if(buf[1] == 0x3) ikeycode = 53;
else if(buf[1] == 0x4) ikeycode = 54;
}
else if(buf[0] == 0x20){
if(buf[1] == 0x0) ikeycode = 60;
else if(buf[1] == 0x1) ikeycode = 61;
else if(buf[1] == 0x2) ikeycode = 62;
else if(buf[1] == 0x3) ikeycode = 63;
else if(buf[1] == 0x4) ikeycode = 64;
}
//ckeycode = itoa(ikeycode);
//向管道写入键值供主程序读
write(fdkeypipe,&ikeycode,sizeof(ikeycode));
printf("in keyfun ckeycode = %d \n",ikeycode);
}
}
close(fdkey);
close(fdkeypipe);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -