感謝二樓大大的指導+Google 搜尋出來的一些資訊
以下是簡單的範例 XD 自己用 gcc 編譯吧- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <errno.h>
- #include <fcntl.h>
- #include <dirent.h>
- #include <linux/input.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/select.h>
- #include <sys/time.h>
- #include <termios.h>
- #include <signal.h>
- void handler (int sig)
- {
- printf ("nexiting...(%d)n", sig);
- exit (0);
- }
- void perror_exit (char *error)
- {
- perror (error);
- handler (9);
- }
- int main (int argc, char *argv[])
- {
- struct input_event ev[64];
- int fd, rd, value, size = sizeof (struct input_event);
- char name[256] = "Unknown";
- char *device = NULL;
- //Setup check
- if (argv[1] == NULL){
- printf("Please specify (on the command line) the path to the dev event interface devicen");
- exit (0);
- }
-
- if ((getuid ()) != 0){
- printf ("You are not root! This may not work...n");
- }
-
- if (argc > 1){
- device = argv[1];
- }
- //Open Device
- if ((fd = open (device, O_RDONLY)) == -1){
- printf ("%s is not a vaild device.n", device);
- }
-
- //Print Device Name
- ioctl (fd, EVIOCGNAME (sizeof (name)), name);
- printf ("Reading From : %s (%s)\n", device, name);
-
- while (1){
- if ((rd = read (fd, ev, size * 64)) < size){
- perror_exit ("read()");
- }
- value = ev[0].value;
- if( ev[0].value == 1 ){
- printf ("Key in: %d \n", (ev[0].code));
- }else if( ev[0].value == 0 ){
- printf ("Key up: %d \n", (ev[0].code));
- }
-
- }
- return 0;
- }
复制代码 |