linux應用層獲取輸入事件

2021-06-28 01:31:53 字數 2208 閱讀 7604

在linux輸入系統從核心層次較詳細的介紹了輸入系統構架,linux輸入裝置驅動實列介紹了如何實現乙個簡單的輸

如裝置驅動。下面主要介紹如何通過非阻塞的方式,在應用層獲取輸入事件,**如下:

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define logv(...) __android_log_print(android_log_silent, log_tag, __va_args__)

#define logi(...) __android_log_print(android_log_info, log_tag, __va_args__)

#define loge(...) __android_log_print(android_log_error, log_tag, __va_args__)

#define device "/dev/input/event0"

struct cmdcmdrecovery;

int write_recoverycmd()

int count = write(miscfd,(char*) &cmdrecovery, sizeof(cmdrecovery));

printf("sizeof(cmdrecovery)=%d count=%d \n",sizeof(cmdrecovery),count);

if (count != sizeof(cmdrecovery))

else

close(miscfd);

return 0;

}int write_commandfile()

int n=write(fd,cmd,sizeof(*cmd)); //fix me !after wirte successfully,but nothing in the file

if(n!=sizeof(*cmd))

sync();

close(fd);

return 0;

}int read_recoverycmd()

int n2=read(miscfd1,&readcmd,sizeof(readcmd));

if(n2!=sizeof(readcmd))

close(miscfd1);

printf("cmd=%s \n",readcmd.command);

printf("recovery =%s \n",readcmd.recovery);

return 0;

}int main(int argc,char *argv)

printf("in the recovery.c\n");

memset(&ufds,0 ,sizeof(ufds));

memset(&event,0 ,sizeof(event));

ufds.fd=fd ;

ufds.events = pollin;

while(1)

res = read(ufds.fd,&event,sizeof(event));

if(res!= sizeof(event))

printf("event.code =%d event.value=%d \n",event.code , event.value);

if((event.code==key_down) ||(event.code==key_enter))

break;

}if(write_recoverycmd())

//property_set("sys.shutdown.requested","1 recovery");

//property_set("persist.sys.safemode","1");

sleep(1);

//property_set("sys.powerctl","reboot,recovery"); //will eraser the cmdrecovery.recovery

system("reboot");

return 0;

}

Linux應用層時間函式

include time t time time t ptr 這個函式返回從unix新紀元 1970年1月1日00 00 00 utc 開始到現在經過的秒數,並且是按照utc協調時間進行計算,統稱為日曆時間。它的精度是秒。include int clock gettime clockid t clo...

表示層 應用層

表示層 功能 為異種機通訊提供一種公共語言,以便能進行互操作。這種型別的服務之所以需要,是因為不同的計算機體系結構使用的資料表示法不同。例如,ibm主機使用ebcdic編碼,而大部分pc機使用的是ascii碼。在這種情況下,便需要表示層來完成這種轉換。應用層 包含了通常要使用的協議 http協議 超...

應用層協議

應用層協議定義了執行在不同端系統上的應用程式程序如何相互傳遞訊息。特別是定義了 交換的訊息型別,如請求訊息和響應訊息。各種訊息型別的語法,如訊息中的各個字段及其詳細描述。欄位的語義,即包含在字段中的資訊的含義。程序何時 如何傳送訊息及對訊息進行響應的規則。有些應用層協議是由rfc文件定義的,因此它們...