View difference between Paste ID: 8ywc2uNc and xB5BA8cH
SHOW: | | - or go back to the newest paste.
1
#! /usr/bin/env python
2
# dependancy: https://launchpad.net/python-uinput/
3
4
# http://i.imgur.com/KwU6s.png
5
6
import uinput
7
8
from time import sleep
9
10-
def char2key(c):
10+
11-
    return eval('uinput.KEY_' + c)
11+
    """Creates a virtual keyboard which can emulate a real keyboard"""
12
13
    def __init__(self, cs):
14-
    def __init__(self, keyboard):
14+
        self.events = dict((i, self.c2key(i)) for i in cs)
15-
        self.keyboard = uinput.Device(tuple(char2key(i) for i in keyboard))
15+
        self.keyboard = uinput.Device(tuple(self.events.values()))
16
17
        # There is a delay before the keyboard starts working
18-
        key = char2key(c)
18+
        # At an order of magnitude of -2
19-
        self.keyboard.emit(key, 1)
19+
        sleep(1e-1)
20
21
    def c2key(self, c):
22-
        key = char2key(c)
22+
        return eval('uinput.KEY_' + c.upper())
23-
        self.keyboard.emit(key, 0)
23+
24
    def press(self, c):
25
        self.keyboard.emit(self.events[c], 1)
26-
    keyboard = Keyboard(["Q", "W", "O", "P"])
26+
27-
    keyboard.press("W")     # Press    'W'
27+
28-
    sleep(0.1)              # Wait     100 ms
28+
        self.keyboard.emit(self.events[c], 0)
29-
    keyboard.press("O")     # Press    'O'
29+
30-
    sleep(0.1)              # Wait     100 ms
30+
31-
    keyboard.release("O")   # Release  'O'
31+
    keyboard = Keyboard(["q", "w", "o", "p"])
32-
    keyboard.release("W")   # Release  'W'
32+
33-
    sleep(0.1)              # Wait     100 ms
33+
    while 1:
34-
    keyboard.press("Q")     # Press    'Q'
34+
        keyboard.press("w")     # Press         'W'
35-
    keyboard.release("P")   # Release  'P'
35+
        sleep(1e-1)             #   Wait        100 ms
36-
    sleep(0.2)              # Wait     200 ms
36+
        keyboard.press("o")     # Press         'O'
37-
    keyboard.press("P")     # Press    'P'
37+
        sleep(1e-1)             #   Wait        100 ms
38-
    keyboard.release("Q")   # Release  'Q'
38+
        keyboard.release("o")   #   Release     'O'
39-
    sleep(0.1)              # Wait     100 ms
39+
        keyboard.release("w")   #   Release     'W'
40-
    keyboard.release("P")   # Release  'P'
40+
        sleep(1e-1)             #   Wait        100 ms
41-
    keyboard.press("P")     # Press    'P'
41+
        keyboard.press("q")     # Press         'Q'
42-
    sleep(0.1)              # Wait     100 ms
42+
        keyboard.release("p")   #   Release     'P'
43-
    qwop()
43+
        sleep(2e-1)             #   Wait        200 ms
44
        keyboard.press("p")     # Press         'P'
45
        keyboard.release("q")   #   Release     'Q'
46
        sleep(1e-1)             #   Wait        100 ms
47
        keyboard.release("p")   #   Release     'P'
48
        keyboard.press("p")     # Press         'P'
49
        sleep(1e-1)             #   Wait        100 ms
50
51
if __name__ == '__main__':
52
    qwop()