Hello community,

here is the log from the commit of package evtest for openSUSE:Factory checked 
in at 2015-08-21 07:40:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evtest (Old)
 and      /work/SRC/openSUSE:Factory/.evtest.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "evtest"

Changes:
--------
--- /work/SRC/openSUSE:Factory/evtest/evtest.changes    2015-01-14 
11:45:13.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.evtest.new/evtest.changes       2015-08-21 
07:40:50.000000000 +0200
@@ -1,0 +2,6 @@
+Sun Aug 16 13:39:49 UTC 2015 - [email protected]
+
+- Update to version 1.33
+  * No ChangeLog available
+
+-------------------------------------------------------------------

Old:
----
  evtest-1.32.tar.gz

New:
----
  evtest-1.33.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ evtest.spec ++++++
--- /var/tmp/diff_new_pack.8rJefj/_old  2015-08-21 07:40:51.000000000 +0200
+++ /var/tmp/diff_new_pack.8rJefj/_new  2015-08-21 07:40:51.000000000 +0200
@@ -16,7 +16,7 @@
 #
 
 Name:           evtest
-Version:        1.32
+Version:        1.33
 Release:        0
 Summary:        Input device event monitor and query tool
 License:        GPL-2.0+

++++++ evtest-1.32.tar.gz -> evtest-1.33.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evtest-1.32/configure.ac new/evtest-1.33/configure.ac
--- old/evtest-1.32/configure.ac        2014-08-08 04:49:19.000000000 +0200
+++ new/evtest-1.33/configure.ac        2015-07-23 01:51:31.000000000 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ([2.57])
-AC_INIT(evtest,[1.32], 
[https://bugzilla.freedesktop.org/enter_bug.cgi?product=evtest], evtest)
+AC_INIT(evtest,[1.33], 
[https://bugzilla.freedesktop.org/enter_bug.cgi?product=evtest], evtest)
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
 AC_CONFIG_HEADERS(config.h)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evtest-1.32/evtest.c new/evtest-1.33/evtest.c
--- old/evtest-1.32/evtest.c    2014-08-08 04:49:19.000000000 +0200
+++ new/evtest-1.33/evtest.c    2015-07-23 01:51:31.000000000 +0200
@@ -55,6 +55,10 @@
 #include <errno.h>
 #include <getopt.h>
 #include <ctype.h>
+#include <signal.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
 
 #define BITS_PER_LONG (sizeof(long) * 8)
 #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
@@ -100,6 +104,14 @@
        { "EV_SW",  EV_SW, SW_MAX, EVIOCGSW(SW_MAX) },
 };
 
+static int grab_flag = 0;
+static volatile sig_atomic_t stop = 0;
+
+static void interrupt_handler(int sig)
+{
+       stop = 1;
+}
+
 /**
  * Look up an entry in the query_modes table by its textual name.
  *
@@ -192,6 +204,12 @@
        NAME_ELEMENT(INPUT_PROP_DIRECT),
        NAME_ELEMENT(INPUT_PROP_BUTTONPAD),
        NAME_ELEMENT(INPUT_PROP_SEMI_MT),
+#ifdef INPUT_PROP_TOPBUTTONPAD
+       NAME_ELEMENT(INPUT_PROP_TOPBUTTONPAD),
+#endif
+#ifdef INPUT_PROP_POINTING_STICK
+       NAME_ELEMENT(INPUT_PROP_POINTING_STICK),
+#endif
 };
 #endif
 
@@ -349,10 +367,39 @@
        NAME_ELEMENT(KEY_DATABASE),             NAME_ELEMENT(KEY_NEWS),
        NAME_ELEMENT(KEY_VOICEMAIL),            NAME_ELEMENT(KEY_ADDRESSBOOK),
        NAME_ELEMENT(KEY_MESSENGER),            NAME_ELEMENT(KEY_DISPLAYTOGGLE),
-       NAME_ELEMENT(KEY_SPELLCHECK),           NAME_ELEMENT(KEY_LOGOFF),
-       NAME_ELEMENT(KEY_DOLLAR),               NAME_ELEMENT(KEY_EURO),
-       NAME_ELEMENT(KEY_FRAMEBACK),            NAME_ELEMENT(KEY_FRAMEFORWARD),
-       NAME_ELEMENT(KEY_CONTEXT_MENU),         NAME_ELEMENT(KEY_MEDIA_REPEAT),
+#ifdef KEY_SPELLCHECK
+       NAME_ELEMENT(KEY_SPELLCHECK),
+#endif
+#ifdef KEY_LOGOFF
+       NAME_ELEMENT(KEY_LOGOFF),
+#endif
+#ifdef KEY_DOLLAR
+       NAME_ELEMENT(KEY_DOLLAR),
+#endif
+#ifdef KEY_EURO
+       NAME_ELEMENT(KEY_EURO),
+#endif
+#ifdef KEY_FRAMEBACK
+       NAME_ELEMENT(KEY_FRAMEBACK),
+#endif
+#ifdef KEY_FRAMEFORWARD
+       NAME_ELEMENT(KEY_FRAMEFORWARD),
+#endif
+#ifdef KEY_CONTEXT_MENU
+       NAME_ELEMENT(KEY_CONTEXT_MENU),
+#endif
+#ifdef KEY_MEDIA_REPEAT
+       NAME_ELEMENT(KEY_MEDIA_REPEAT),
+#endif
+#ifdef KEY_10CHANNELSUP
+       NAME_ELEMENT(KEY_10CHANNELSUP),
+#endif
+#ifdef KEY_10CHANNELSDOWN
+       NAME_ELEMENT(KEY_10CHANNELSDOWN),
+#endif
+#ifdef KEY_IMAGES
+       NAME_ELEMENT(KEY_IMAGES),
+#endif
        NAME_ELEMENT(KEY_DEL_EOL),              NAME_ELEMENT(KEY_DEL_EOS),
        NAME_ELEMENT(KEY_INS_LINE),             NAME_ELEMENT(KEY_DEL_LINE),
        NAME_ELEMENT(KEY_FN),                   NAME_ELEMENT(KEY_FN_ESC),
@@ -371,28 +418,54 @@
        NAME_ELEMENT(KEY_BRL_DOT5),             NAME_ELEMENT(KEY_BRL_DOT6),
        NAME_ELEMENT(KEY_BRL_DOT7),             NAME_ELEMENT(KEY_BRL_DOT8),
        NAME_ELEMENT(KEY_BRL_DOT9),             NAME_ELEMENT(KEY_BRL_DOT10),
+#ifdef KEY_NUMERIC_0
        NAME_ELEMENT(KEY_NUMERIC_0),            NAME_ELEMENT(KEY_NUMERIC_1),
        NAME_ELEMENT(KEY_NUMERIC_2),            NAME_ELEMENT(KEY_NUMERIC_3),
        NAME_ELEMENT(KEY_NUMERIC_4),            NAME_ELEMENT(KEY_NUMERIC_5),
        NAME_ELEMENT(KEY_NUMERIC_6),            NAME_ELEMENT(KEY_NUMERIC_7),
        NAME_ELEMENT(KEY_NUMERIC_8),            NAME_ELEMENT(KEY_NUMERIC_9),
        NAME_ELEMENT(KEY_NUMERIC_STAR),         NAME_ELEMENT(KEY_NUMERIC_POUND),
+#endif
        NAME_ELEMENT(KEY_BATTERY),
        NAME_ELEMENT(KEY_BLUETOOTH),            
NAME_ELEMENT(KEY_BRIGHTNESS_CYCLE),
-       NAME_ELEMENT(KEY_BRIGHTNESS_ZERO),      NAME_ELEMENT(KEY_DASHBOARD),
+       NAME_ELEMENT(KEY_BRIGHTNESS_ZERO),
+#ifdef KEY_DASHBOARD
+       NAME_ELEMENT(KEY_DASHBOARD),
+#endif
        NAME_ELEMENT(KEY_DISPLAY_OFF),          NAME_ELEMENT(KEY_DOCUMENTS),
        NAME_ELEMENT(KEY_FORWARDMAIL),          NAME_ELEMENT(KEY_NEW),
        NAME_ELEMENT(KEY_KBDILLUMDOWN),         NAME_ELEMENT(KEY_KBDILLUMUP),
        NAME_ELEMENT(KEY_KBDILLUMTOGGLE),       NAME_ELEMENT(KEY_REDO),
        NAME_ELEMENT(KEY_REPLY),                NAME_ELEMENT(KEY_SAVE),
-       NAME_ELEMENT(KEY_SCALE),                NAME_ELEMENT(KEY_SEND),
+#ifdef KEY_SCALE
+       NAME_ELEMENT(KEY_SCALE),
+#endif
+       NAME_ELEMENT(KEY_SEND),
        NAME_ELEMENT(KEY_SCREENLOCK),           
NAME_ELEMENT(KEY_SWITCHVIDEOMODE),
-       NAME_ELEMENT(KEY_UWB),                  NAME_ELEMENT(KEY_VIDEO_NEXT),
-       NAME_ELEMENT(KEY_VIDEO_PREV),           NAME_ELEMENT(KEY_WIMAX),
+#ifdef KEY_UWB
+       NAME_ELEMENT(KEY_UWB),
+#endif
+#ifdef KEY_VIDEO_NEXT
+       NAME_ELEMENT(KEY_VIDEO_NEXT),
+#endif
+#ifdef KEY_VIDEO_PREV
+       NAME_ELEMENT(KEY_VIDEO_PREV),
+#endif
+#ifdef KEY_WIMAX
+       NAME_ELEMENT(KEY_WIMAX),
+#endif
+#ifdef KEY_WLAN
        NAME_ELEMENT(KEY_WLAN),
+#endif
 #ifdef KEY_RFKILL
        NAME_ELEMENT(KEY_RFKILL),
 #endif
+#ifdef KEY_MICMUTE
+       NAME_ELEMENT(KEY_MICMUTE),
+#endif
+#ifdef KEY_CAMERA_FOCUS
+       NAME_ELEMENT(KEY_CAMERA_FOCUS),
+#endif
 #ifdef KEY_WPS_BUTTON
        NAME_ELEMENT(KEY_WPS_BUTTON),
 #endif
@@ -445,7 +518,10 @@
        NAME_ELEMENT(BTN_TOOL_MOUSE),           NAME_ELEMENT(BTN_TOOL_LENS),
        NAME_ELEMENT(BTN_TOUCH),                NAME_ELEMENT(BTN_STYLUS),
        NAME_ELEMENT(BTN_STYLUS2),              
NAME_ELEMENT(BTN_TOOL_DOUBLETAP),
-       NAME_ELEMENT(BTN_TOOL_TRIPLETAP),       NAME_ELEMENT(BTN_TOOL_QUADTAP),
+       NAME_ELEMENT(BTN_TOOL_TRIPLETAP),
+#ifdef BTN_TOOL_QUADTAP
+       NAME_ELEMENT(BTN_TOOL_QUADTAP),
+#endif
        NAME_ELEMENT(BTN_GEAR_DOWN),
        NAME_ELEMENT(BTN_GEAR_UP),
 
@@ -453,7 +529,54 @@
        NAME_ELEMENT(BTN_DPAD_UP),              NAME_ELEMENT(BTN_DPAD_DOWN),
        NAME_ELEMENT(BTN_DPAD_LEFT),            NAME_ELEMENT(BTN_DPAD_RIGHT),
 #endif
-
+#ifdef KEY_ALS_TOGGLE
+       NAME_ELEMENT(KEY_ALS_TOGGLE),
+#endif
+#ifdef KEY_BUTTONCONFIG
+       NAME_ELEMENT(KEY_BUTTONCONFIG),
+#endif
+#ifdef KEY_TASKMANAGER
+       NAME_ELEMENT(KEY_TASKMANAGER),
+#endif
+#ifdef KEY_JOURNAL
+       NAME_ELEMENT(KEY_JOURNAL),
+#endif
+#ifdef KEY_CONTROLPANEL
+       NAME_ELEMENT(KEY_CONTROLPANEL),
+#endif
+#ifdef KEY_APPSELECT
+       NAME_ELEMENT(KEY_APPSELECT),
+#endif
+#ifdef KEY_SCREENSAVER
+       NAME_ELEMENT(KEY_SCREENSAVER),
+#endif
+#ifdef KEY_VOICECOMMAND
+       NAME_ELEMENT(KEY_VOICECOMMAND),
+#endif
+#ifdef KEY_BRIGHTNESS_MIN
+       NAME_ELEMENT(KEY_BRIGHTNESS_MIN),
+#endif
+#ifdef KEY_BRIGHTNESS_MAX
+       NAME_ELEMENT(KEY_BRIGHTNESS_MAX),
+#endif
+#ifdef KEY_KBDINPUTASSIST_PREV
+       NAME_ELEMENT(KEY_KBDINPUTASSIST_PREV),
+#endif
+#ifdef KEY_KBDINPUTASSIST_NEXT
+       NAME_ELEMENT(KEY_KBDINPUTASSIST_NEXT),
+#endif
+#ifdef KEY_KBDINPUTASSIST_PREVGROUP
+       NAME_ELEMENT(KEY_KBDINPUTASSIST_PREVGROUP),
+#endif
+#ifdef KEY_KBDINPUTASSIST_NEXTGROUP
+       NAME_ELEMENT(KEY_KBDINPUTASSIST_NEXTGROUP),
+#endif
+#ifdef KEY_KBDINPUTASSIST_ACCEPT
+       NAME_ELEMENT(KEY_KBDINPUTASSIST_ACCEPT),
+#endif
+#ifdef KEY_KBDINPUTASSIST_CANCEL
+       NAME_ELEMENT(KEY_KBDINPUTASSIST_CANCEL),
+#endif
 #ifdef BTN_TRIGGER_HAPPY
        NAME_ELEMENT(BTN_TRIGGER_HAPPY1),       
NAME_ELEMENT(BTN_TRIGGER_HAPPY11),
        NAME_ELEMENT(BTN_TRIGGER_HAPPY2),       
NAME_ELEMENT(BTN_TRIGGER_HAPPY12),
@@ -554,6 +677,12 @@
        NAME_ELEMENT(LED_KANA),                 NAME_ELEMENT(LED_SLEEP),
        NAME_ELEMENT(LED_SUSPEND),              NAME_ELEMENT(LED_MUTE),
        NAME_ELEMENT(LED_MISC),
+#ifdef LED_MAIL
+       NAME_ELEMENT(LED_MAIL),
+#endif
+#ifdef LED_CHARGING
+       NAME_ELEMENT(LED_CHARGING),
+#endif
 };
 
 static const char * const repeats[REP_MAX + 1] = {
@@ -580,11 +709,21 @@
        NAME_ELEMENT(SW_LID),
        NAME_ELEMENT(SW_TABLET_MODE),
        NAME_ELEMENT(SW_HEADPHONE_INSERT),
+#ifdef SW_RFKILL_ALL
        NAME_ELEMENT(SW_RFKILL_ALL),
+#endif
+#ifdef SW_MICROPHONE_INSERT
        NAME_ELEMENT(SW_MICROPHONE_INSERT),
+#endif
+#ifdef SW_DOCK
        NAME_ELEMENT(SW_DOCK),
+#endif
+#ifdef SW_LINEOUT_INSERT
        NAME_ELEMENT(SW_LINEOUT_INSERT),
+#endif
+#ifdef SW_JACK_PHYSICAL_INSERT
        NAME_ELEMENT(SW_JACK_PHYSICAL_INSERT),
+#endif
 #ifdef SW_VIDEOOUT_INSERT
        NAME_ELEMENT(SW_VIDEOOUT_INSERT),
 #endif
@@ -596,6 +735,12 @@
 #ifdef SW_ROTATE_LOCK
        NAME_ELEMENT(SW_ROTATE_LOCK),
 #endif
+#ifdef SW_LINEIN_INSERT
+       NAME_ELEMENT(SW_LINEIN_INSERT),
+#endif
+#ifdef SW_MUTE_DEVICE
+       NAME_ELEMENT(SW_MUTE_DEVICE),
+#endif
 };
 
 static const char * const force[FF_MAX + 1] = {
@@ -617,7 +762,7 @@
 
 static const char * const * const names[EV_MAX + 1] = {
        [0 ... EV_MAX] = NULL,
-       [EV_SYN] = events,                      [EV_KEY] = keys,
+       [EV_SYN] = syns,                        [EV_KEY] = keys,
        [EV_REL] = relatives,                   [EV_ABS] = absolutes,
        [EV_MSC] = misc,                        [EV_LED] = leds,
        [EV_SND] = sounds,                      [EV_REP] = repeats,
@@ -684,6 +829,7 @@
        struct dirent **namelist;
        int i, ndev, devnum;
        char *filename;
+       int max_device = 0;
 
        ndev = scandir(DEV_INPUT_EVENT, &namelist, is_event_device, 
versionsort);
        if (ndev <= 0)
@@ -706,13 +852,18 @@
 
                fprintf(stderr, "%s:    %s\n", fname, name);
                close(fd);
+
+               sscanf(namelist[i]->d_name, "event%d", &devnum);
+               if (devnum > max_device)
+                       max_device = devnum;
+
                free(namelist[i]);
        }
 
-       fprintf(stderr, "Select the device event number [0-%d]: ", ndev - 1);
+       fprintf(stderr, "Select the device event number [0-%d]: ", max_device);
        scanf("%d", &devnum);
 
-       if (devnum >= ndev || devnum < 0)
+       if (devnum > max_device || devnum < 0)
                return NULL;
 
        asprintf(&filename, "%s/%s%d",
@@ -738,8 +889,9 @@
 static int usage(void)
 {
        printf("USAGE:\n");
-       printf(" Grab mode:\n");
-       printf("   %s /dev/input/eventX\n", program_invocation_short_name);
+       printf(" Capture mode:\n");
+       printf("   %s [--grab] /dev/input/eventX\n", 
program_invocation_short_name);
+       printf("     --grab  grab the device for exclusive access\n");
        printf("\n");
        printf(" Query mode: (check exit code)\n");
        printf("   %s --query /dev/input/eventX <type> <value>\n",
@@ -802,6 +954,32 @@
 }
 #endif
 
+static int get_state(int fd, unsigned int type, unsigned long *array, size_t 
size)
+{
+       int rc;
+
+       switch(type) {
+       case EV_LED:
+               rc = ioctl(fd, EVIOCGLED(size), array);
+               break;
+       case EV_SND:
+               rc = ioctl(fd, EVIOCGSND(size), array);
+               break;
+       case EV_SW:
+               rc = ioctl(fd, EVIOCGSW(size), array);
+               break;
+       case EV_KEY:
+               /* intentionally not printing the value for EV_KEY, let the
+                * repeat handle this */
+       default:
+               return 1;
+       }
+       if (rc == -1)
+               return 1;
+
+       return 0;
+}
+
 /**
  * Print static device information (no events). This information includes
  * version numbers, device name and all bits supported by this device.
@@ -811,14 +989,18 @@
  */
 static int print_device_info(int fd)
 {
-       unsigned int type, code, prop;
+       unsigned int type, code;
        int version;
        unsigned short id[4];
        char name[256] = "Unknown";
        unsigned long bit[EV_MAX][NBITS(KEY_MAX)];
+       unsigned long state[KEY_CNT] = {0};
 #ifdef INPUT_PROP_SEMI_MT
+       unsigned int prop;
        unsigned long propbits[INPUT_PROP_MAX];
 #endif
+       int stateval;
+       int have_state;
 
        if (ioctl(fd, EVIOCGVERSION, &version)) {
                perror("evtest: can't get version");
@@ -841,12 +1023,20 @@
 
        for (type = 0; type < EV_MAX; type++) {
                if (test_bit(type, bit[0]) && type != EV_REP) {
+                       have_state = (get_state(fd, type, state, sizeof(state)) 
== 0);
+
                        printf("  Event type %d (%s)\n", type, typename(type));
                        if (type == EV_SYN) continue;
                        ioctl(fd, EVIOCGBIT(type, KEY_MAX), bit[type]);
                        for (code = 0; code < KEY_MAX; code++)
                                if (test_bit(code, bit[type])) {
-                                       printf("    Event code %d (%s)\n", 
code, codename(type, code));
+                                       if (have_state) {
+                                               stateval = test_bit(code, 
state);
+                                               printf("    Event code %d (%s) 
state %d\n",
+                                                      code, codename(type, 
code), stateval);
+                                       } else {
+                                               printf("    Event code %d 
(%s)\n", code, codename(type, code));
+                                       }
                                        if (type == EV_ABS)
                                                print_absdata(fd, code);
                                }
@@ -881,9 +1071,16 @@
 {
        struct input_event ev[64];
        int i, rd;
+       fd_set rdfs;
 
-       while (1) {
-               rd = read(fd, ev, sizeof(struct input_event) * 64);
+       FD_ZERO(&rdfs);
+       FD_SET(fd, &rdfs);
+
+       while (!stop) {
+               select(fd + 1, &rdfs, NULL, NULL, NULL);
+               if (stop)
+                       break;
+               rd = read(fd, ev, sizeof(ev));
 
                if (rd < (int) sizeof(struct input_event)) {
                        printf("expected %d bytes, got %d\n", (int) 
sizeof(struct input_event), rd);
@@ -902,6 +1099,8 @@
                        if (type == EV_SYN) {
                                if (code == SYN_MT_REPORT)
                                        printf("++++++++++++++ %s 
++++++++++++\n", codename(type, code));
+                               else if (code == SYN_DROPPED)
+                                       printf(">>>>>>>>>>>>>> %s 
<<<<<<<<<<<<\n", codename(type, code));
                                else
                                        printf("-------------- %s 
------------\n", codename(type, code));
                        } else {
@@ -916,6 +1115,9 @@
                }
 
        }
+
+       ioctl(fd, EVIOCGRAB, (void*)0);
+       return EXIT_SUCCESS;
 }
 
 /**
@@ -924,13 +1126,13 @@
  * @param fd The file descriptor to the device.
  * @return 0 if the grab was successful, or 1 otherwise.
  */
-static int test_grab(int fd)
+static int test_grab(int fd, int grab_flag)
 {
        int rc;
 
        rc = ioctl(fd, EVIOCGRAB, (void*)1);
 
-       if (!rc)
+       if (rc == 0 && !grab_flag)
                ioctl(fd, EVIOCGRAB, (void*)0);
 
        return rc;
@@ -943,7 +1145,7 @@
  * @param device The device to monitor, or NULL if the user should be prompted.
  * @return 0 on success, non-zero on error.
  */
-static int do_capture(const char *device)
+static int do_capture(const char *device, int grab_flag)
 {
        int fd;
        char *filename = NULL;
@@ -981,7 +1183,7 @@
 
        printf("Testing ... (interrupt to exit)\n");
 
-       if (test_grab(fd))
+       if (test_grab(fd, grab_flag))
        {
                printf("***********************************************\n");
                printf("  This device is grabbed by another process.\n");
@@ -995,6 +1197,9 @@
                printf("***********************************************\n");
        }
 
+       signal(SIGINT, interrupt_handler);
+       signal(SIGTERM, interrupt_handler);
+
        free(filename);
 
        return print_events(fd);
@@ -1077,6 +1282,7 @@
 }
 
 static const struct option long_options[] = {
+       { "grab", no_argument, &grab_flag, 1 },
        { "query", no_argument, NULL, MODE_QUERY },
        { "version", no_argument, NULL, MODE_VERSION },
        { 0, },
@@ -1095,6 +1301,8 @@
                if (c == -1)
                        break;
                switch (c) {
+               case 0:
+                       break;
                case MODE_QUERY:
                        mode = c;
                        break;
@@ -1109,7 +1317,7 @@
                device = argv[optind++];
 
        if (mode == MODE_CAPTURE)
-               return do_capture(device);
+               return do_capture(device, grab_flag);
 
        if ((argc - optind) < 2) {
                fprintf(stderr, "Query mode requires device, type and key 
parameters\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evtest-1.32/evtest.txt new/evtest-1.33/evtest.txt
--- old/evtest-1.32/evtest.txt  2014-08-08 04:49:19.000000000 +0200
+++ new/evtest-1.33/evtest.txt  2015-07-23 01:51:31.000000000 +0200
@@ -8,7 +8,7 @@
 
 SYNOPSIS
 --------
-     evtest /dev/input/eventX
+     evtest [--grab] /dev/input/eventX
 
      evtest --query /dev/input/eventX <type> <value>
 
@@ -19,6 +19,10 @@
 supported by the device. It then monitors the device and displays all the
 events layer events generated.
 
+If the --grab flag is given in capture mode, evtest keeps an EVIOCGRAB on the
+device. While this grab is active, other processes will not receive events
+from the kernel devices. The grab is released again when evtest quits.
+
 In the second invocation type ("query mode"), evtest performs a one-shot query
 of the state of a specific key *value* of an event *type*.
 


Reply via email to