-
Notifications
You must be signed in to change notification settings - Fork 1
/
keyboard.py
65 lines (54 loc) · 1.45 KB
/
keyboard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/python
import struct
import time
import sys
import os
infile_path = "/dev/input/event5"
#long int, long int, unsigned short, unsigned short, unsigned int
FORMAT = 'llHHI'
EVENT_SIZE = struct.calcsize(FORMAT)
#open file in binary mode
in_file = open(infile_path, "rb")
event = in_file.read(EVENT_SIZE)
lang = "us"
while event:
(tv_sec, tv_usec, type, code, value) = struct.unpack(FORMAT, event)
if type != 0 or code != 0 or value != 0:
if code == 40:
if value == 1:
# print("G1")
os.system("xdotool key ctrl+shift+c")
# also G9
elif value == 2:
# print("G2")
os.system("xdotool key ctrl+shift+v")
elif value == 4:
# also G11
# print("G3")
os.system("xdotool key ctrl+shift+t")
elif value == 8:
# also G12
# print("G4")
if lang == "us":
lang = "ru"
else:
lang = "us"
os.system("setxkbmap "+lang)
elif value == 16:
# print("G5")
# os.system("xdotool key Escape")
os.system("xdotool key ctrl+backslash")
elif value == 32:
# print("G6")
os.system("xdotool key ctrl+p")
elif value == 64:
# print("G7")
os.system("xdotool key ctrl+shift+p")
else:
if value != 0:
print("Event type %u, code %u, value %u at %d.%d" % (type, code, value, tv_sec, tv_usec))
# else:
# Events with code, type and value == 0 are "separator" events
# print("===========================================")
event = in_file.read(EVENT_SIZE)
in_file.close()