[PATCH evemu 7/7] python: add InputEvent.matches(type, code) for comparisons

Benjamin Tissoires benjamin.tissoires at gmail.com
Wed Nov 5 07:11:22 PST 2014


On Tue, Nov 4, 2014 at 11:48 PM, Peter Hutterer
<peter.hutterer at who-t.net> wrote:
> Benjamin,
>
> can you remember the reason his one didn't get merged? It's the most useful
> one of the series, the one I use the most whenever I need to analyse event
> sequences.
>

Hmm... it might be a miss on my side. I do not remember anything
regarding this patch, and I do not see anything preventing it to be
upstream.

Sorry for the mess.

Pushed now:
c6fa672..bcbdb42  master -> master

Cheers,
Benjamin

PS: make distcheck fails on my box, it complains about event_names not
available, whereas after install, a plain python shell finds it easily
:-/

> Cheers,
>    Peter
>
> On Fri, Aug 29, 2014 at 09:44:09AM +1000, Peter Hutterer wrote:
>> Allows for:
>>       if e.matches("EV_REL", "REL_X"):
>>          print("Relative X events")
>>
>> but it'll happily take integers as well.
>>
>> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>> ---
>>  python/evemu/__init__.py          |  9 +++++++++
>>  python/evemu/tests/test_device.py | 40 +++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 49 insertions(+)
>>
>> diff --git a/python/evemu/__init__.py b/python/evemu/__init__.py
>> index 65e4673..7af5032 100644
>> --- a/python/evemu/__init__.py
>> +++ b/python/evemu/__init__.py
>> @@ -133,6 +133,15 @@ class InputEvent(object):
>>          self.code = code
>>          self.value = value
>>
>> +    def matches(self, type, code = None):
>> +        if event_get_value(type) != self.type:
>> +            return False
>> +
>> +        if code != None and event_get_value(self.type, code) != self.code:
>> +            return False
>> +
>> +        return True
>> +
>>      def __str__(self):
>>          f = tempfile.TemporaryFile()
>>          libc = evemu.base.LibC()
>> diff --git a/python/evemu/tests/test_device.py b/python/evemu/tests/test_device.py
>> index f2d14db..10bd290 100644
>> --- a/python/evemu/tests/test_device.py
>> +++ b/python/evemu/tests/test_device.py
>> @@ -278,5 +278,45 @@ class DevicePropertiesTestCase(evemu.testing.testcase.BaseTestCase):
>>          self.assertEqual(evemu.input_prop_get_name("foo"), None)
>>          self.assertEqual(evemu.input_prop_get_name(None), None)
>>
>> +    def test_event_matching(self):
>> +        e = evemu.InputEvent(0, 0, 0x01, 44, 0)
>> +        self.assertTrue(e.matches("EV_KEY"))
>> +        self.assertTrue(e.matches("EV_KEY", "KEY_Z"))
>> +        self.assertTrue(e.matches(0x01))
>> +        self.assertTrue(e.matches(0x01, 44))
>> +        self.assertTrue(e.matches("EV_KEY", 44))
>> +        self.assertTrue(e.matches(0x01, "KEY_Z"))
>> +
>> +        for t in range(-1, 0xff):
>> +            for c in range(-1, 0xff):
>> +                if t != e.type or c != e.code:
>> +                    self.assertFalse(e.matches(t, c))
>> +
>> +        e = evemu.InputEvent(0, 0, 0x02, 0x01, 0)
>> +        self.assertTrue(e.matches("EV_REL"))
>> +        self.assertTrue(e.matches("EV_REL", "REL_Y"))
>> +        self.assertTrue(e.matches(0x02))
>> +        self.assertTrue(e.matches(0x02, 0x01))
>> +        self.assertTrue(e.matches("EV_REL", 0x01))
>> +        self.assertTrue(e.matches(0x02, "REL_Y"))
>> +
>> +        for t in range(-1, 0xff):
>> +            for c in range(-1, 0xff):
>> +                if t != e.type or c != e.code:
>> +                    self.assertFalse(e.matches(t, c))
>> +
>> +        e = evemu.InputEvent(0, 0, 0x03, 0x00, 0)
>> +        self.assertTrue(e.matches("EV_ABS"))
>> +        self.assertTrue(e.matches("EV_ABS", "ABS_X"))
>> +        self.assertTrue(e.matches(0x03))
>> +        self.assertTrue(e.matches(0x03, 0x00))
>> +        self.assertTrue(e.matches("EV_ABS", 0x00))
>> +        self.assertTrue(e.matches(0x03, "ABS_X"))
>> +
>> +        for t in range(-1, 0xff):
>> +            for c in range(-1, 0xff):
>> +                if t != e.type or c != e.code:
>> +                    self.assertFalse(e.matches(t, c))
>> +
>>  if __name__ == "__main__":
>>      unittest.main()
>> --
>> 1.9.3
>>


More information about the Input-tools mailing list