QTS3native-native-build 1.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
QTS3native/__init__.py ADDED
@@ -0,0 +1,4 @@
1
+ from .qtElements import *
2
+ from .rpcs3Hooks import *
3
+ from .keylistener import *
4
+ from .log_gui import *
@@ -0,0 +1,569 @@
1
+ import keyboard
2
+ from PyQt5 import QtCore
3
+
4
+
5
+ class Keys:
6
+ BACKSPACE = "BACKSPACE"
7
+ TAB = "TAB"
8
+ ENTER = "ENTER"
9
+ SHIFT = "SHIFT"
10
+ CTRL = "CTRL"
11
+ ALT = "ALT"
12
+ ALT_GR = "ALT_GR"
13
+ PAUSE = "PAUSE"
14
+ CAPSLOCK = "CAPSLOCK"
15
+ ESCAPE = "ESCAPE"
16
+ SPACE = "SPACE"
17
+ PAGE_UP = "PAGE_UP"
18
+ PAGE_DOWN = "PAGE_DOWN"
19
+ END = "END"
20
+ HOME = "HOME"
21
+ LEFT = "LEFT"
22
+ UP = "UP"
23
+ RIGHT = "RIGHT"
24
+ DOWN = "DOWN"
25
+ INSERT = "INSERT"
26
+ DELETE = "DELETE"
27
+ PRINT_SCREEN = "PRINT_SCREEN"
28
+ SCROLLLOCK = "SCROLLLOCK"
29
+ NUMLOCK = "NUMLOCK"
30
+ LWIN = "LWIN"
31
+ RWIN = "RWIN"
32
+ MENU = "MENU"
33
+ APPS = "APPS"
34
+ CLEAR = "CLEAR"
35
+ HELP = "HELP"
36
+ SELECT = "SELECT"
37
+ EXECUTE = "EXECUTE"
38
+ SLEEP = "SLEEP"
39
+ DECIMAL = "DECIMAL"
40
+ SEPARATOR = "SEPARATOR"
41
+ SUBTRACT = "SUBTRACT"
42
+ ADD = "ADD"
43
+ MULTIPLY = "MULTIPLY"
44
+ DIVIDE = "DIVIDE"
45
+
46
+ NUMPAD_0 = "NUMPAD_0"
47
+ NUMPAD_1 = "NUMPAD_1"
48
+ NUMPAD_2 = "NUMPAD_2"
49
+ NUMPAD_3 = "NUMPAD_3"
50
+ NUMPAD_4 = "NUMPAD_4"
51
+ NUMPAD_5 = "NUMPAD_5"
52
+ NUMPAD_6 = "NUMPAD_6"
53
+ NUMPAD_7 = "NUMPAD_7"
54
+ NUMPAD_8 = "NUMPAD_8"
55
+ NUMPAD_9 = "NUMPAD_9"
56
+
57
+ F1 = "F1"
58
+ F2 = "F2"
59
+ F3 = "F3"
60
+ F4 = "F4"
61
+ F5 = "F5"
62
+ F6 = "F6"
63
+ F7 = "F7"
64
+ F8 = "F8"
65
+ F9 = "F9"
66
+ F10 = "F10"
67
+ F11 = "F11"
68
+ F12 = "F12"
69
+ F13 = "F13"
70
+ F14 = "F14"
71
+ F15 = "F15"
72
+ F16 = "F16"
73
+ F17 = "F17"
74
+ F18 = "F18"
75
+ F19 = "F19"
76
+ F20 = "F20"
77
+ F21 = "F21"
78
+ F22 = "F22"
79
+ F23 = "F23"
80
+ F24 = "F24"
81
+
82
+ MEDIA_PLAY_PAUSE = "MEDIA_PLAY_PAUSE"
83
+ MEDIA_STOP = "MEDIA_STOP"
84
+ MEDIA_NEXT_TRACK = "MEDIA_NEXT_TRACK"
85
+ MEDIA_PREV_TRACK = "MEDIA_PREV_TRACK"
86
+ VOLUME_UP = "VOLUME_UP"
87
+ VOLUME_DOWN = "VOLUME_DOWN"
88
+ VOLUME_MUTE = "VOLUME_MUTE"
89
+ BROWSER_BACK = "BROWSER_BACK"
90
+ BROWSER_FORWARD = "BROWSER_FORWARD"
91
+ BROWSER_REFRESH = "BROWSER_REFRESH"
92
+ BROWSER_STOP = "BROWSER_STOP"
93
+ BROWSER_SEARCH = "BROWSER_SEARCH"
94
+ BROWSER_FAVORITES = "BROWSER_FAVORITES"
95
+ BROWSER_HOME = "BROWSER_HOME"
96
+ LAUNCH_MAIL = "LAUNCH_MAIL"
97
+ LAUNCH_MEDIA_SELECT = "LAUNCH_MEDIA_SELECT"
98
+ LAUNCH_APP1 = "LAUNCH_APP1"
99
+ LAUNCH_APP2 = "LAUNCH_APP2"
100
+
101
+ A = "a"
102
+ B = "b"
103
+ C = "c"
104
+ D = "d"
105
+ E = "e"
106
+ F = "f"
107
+ G = "g"
108
+ H = "h"
109
+ I = "i"
110
+ J = "j"
111
+ K = "k"
112
+ L = "l"
113
+ M = "m"
114
+ N = "n"
115
+ O = "o"
116
+ P = "p"
117
+ Q = "q"
118
+ R = "r"
119
+ S = "s"
120
+ T = "t"
121
+ U = "u"
122
+ V = "v"
123
+ W = "w"
124
+ X = "x"
125
+ Y = "y"
126
+ Z = "z"
127
+
128
+ ZERO = "0"
129
+ ONE = "1"
130
+ TWO = "2"
131
+ THREE = "3"
132
+ FOUR = "4"
133
+ FIVE = "5"
134
+ SIX = "6"
135
+ SEVEN = "7"
136
+ EIGHT = "8"
137
+ NINE = "9"
138
+
139
+ MINUS = "-"
140
+ EQUALS = "="
141
+ LEFT_BRACKET = "["
142
+ RIGHT_BRACKET = "]"
143
+ BACKSLASH = "\\"
144
+ SEMICOLON = ";"
145
+ APOSTROPHE = "'"
146
+ COMMA = ","
147
+ PERIOD = "."
148
+ FORWARD_SLASH = "/"
149
+ GRAVE = "`"
150
+
151
+ EXCLAMATION = "!"
152
+ AT = "@"
153
+ HASH = "#"
154
+ DOLLAR = "$"
155
+ PERCENT = "%"
156
+ CARET = "^"
157
+ AMPERSAND = "&"
158
+ ASTERISK = "*"
159
+ LEFT_PAREN = "("
160
+ RIGHT_PAREN = ")"
161
+ UNDERSCORE = "_"
162
+ PLUS = "+"
163
+ LEFT_BRACE = "{"
164
+ RIGHT_BRACE = "}"
165
+ PIPE = "|"
166
+ COLON = ":"
167
+ QUOTE = '"'
168
+ LESS_THAN = "<"
169
+ GREATER_THAN = ">"
170
+ QUESTION_MARK = "?"
171
+ TILDE = "~"
172
+
173
+ ALL = {
174
+ BACKSPACE,
175
+ TAB,
176
+ ENTER,
177
+ SHIFT,
178
+ CTRL,
179
+ ALT,
180
+ ALT_GR,
181
+ PAUSE,
182
+ CAPSLOCK,
183
+ ESCAPE,
184
+ SPACE,
185
+ PAGE_UP,
186
+ PAGE_DOWN,
187
+ END,
188
+ HOME,
189
+ LEFT,
190
+ UP,
191
+ RIGHT,
192
+ DOWN,
193
+ INSERT,
194
+ DELETE,
195
+ PRINT_SCREEN,
196
+ SCROLLLOCK,
197
+ NUMLOCK,
198
+ LWIN,
199
+ RWIN,
200
+ MENU,
201
+ APPS,
202
+ CLEAR,
203
+ HELP,
204
+ SELECT,
205
+ EXECUTE,
206
+ SLEEP,
207
+ DECIMAL,
208
+ SEPARATOR,
209
+ SUBTRACT,
210
+ ADD,
211
+ MULTIPLY,
212
+ DIVIDE,
213
+ NUMPAD_0,
214
+ NUMPAD_1,
215
+ NUMPAD_2,
216
+ NUMPAD_3,
217
+ NUMPAD_4,
218
+ NUMPAD_5,
219
+ NUMPAD_6,
220
+ NUMPAD_7,
221
+ NUMPAD_8,
222
+ NUMPAD_9,
223
+ F1,
224
+ F2,
225
+ F3,
226
+ F4,
227
+ F5,
228
+ F6,
229
+ F7,
230
+ F8,
231
+ F9,
232
+ F10,
233
+ F11,
234
+ F12,
235
+ F13,
236
+ F14,
237
+ F15,
238
+ F16,
239
+ F17,
240
+ F18,
241
+ F19,
242
+ F20,
243
+ F21,
244
+ F22,
245
+ F23,
246
+ F24,
247
+ MEDIA_PLAY_PAUSE,
248
+ MEDIA_STOP,
249
+ MEDIA_NEXT_TRACK,
250
+ MEDIA_PREV_TRACK,
251
+ VOLUME_UP,
252
+ VOLUME_DOWN,
253
+ VOLUME_MUTE,
254
+ BROWSER_BACK,
255
+ BROWSER_FORWARD,
256
+ BROWSER_REFRESH,
257
+ BROWSER_STOP,
258
+ BROWSER_SEARCH,
259
+ BROWSER_FAVORITES,
260
+ BROWSER_HOME,
261
+ LAUNCH_MAIL,
262
+ LAUNCH_MEDIA_SELECT,
263
+ LAUNCH_APP1,
264
+ LAUNCH_APP2,
265
+ A,
266
+ B,
267
+ C,
268
+ D,
269
+ E,
270
+ F,
271
+ G,
272
+ H,
273
+ I,
274
+ J,
275
+ K,
276
+ L,
277
+ M,
278
+ N,
279
+ O,
280
+ P,
281
+ Q,
282
+ R,
283
+ S,
284
+ T,
285
+ U,
286
+ V,
287
+ W,
288
+ X,
289
+ Y,
290
+ Z,
291
+ ZERO,
292
+ ONE,
293
+ TWO,
294
+ THREE,
295
+ FOUR,
296
+ FIVE,
297
+ SIX,
298
+ SEVEN,
299
+ EIGHT,
300
+ NINE,
301
+ MINUS,
302
+ EQUALS,
303
+ LEFT_BRACKET,
304
+ RIGHT_BRACKET,
305
+ BACKSLASH,
306
+ SEMICOLON,
307
+ APOSTROPHE,
308
+ COMMA,
309
+ PERIOD,
310
+ FORWARD_SLASH,
311
+ GRAVE,
312
+ EXCLAMATION,
313
+ AT,
314
+ HASH,
315
+ DOLLAR,
316
+ PERCENT,
317
+ CARET,
318
+ AMPERSAND,
319
+ ASTERISK,
320
+ LEFT_PAREN,
321
+ RIGHT_PAREN,
322
+ UNDERSCORE,
323
+ PLUS,
324
+ LEFT_BRACE,
325
+ RIGHT_BRACE,
326
+ PIPE,
327
+ COLON,
328
+ QUOTE,
329
+ LESS_THAN,
330
+ GREATER_THAN,
331
+ QUESTION_MARK,
332
+ TILDE,
333
+ }
334
+
335
+ class GlobalKeyboardListener(QtCore.QThread):
336
+ keys_pressed = QtCore.pyqtSignal(tuple)
337
+
338
+ NON_SYMBOL_KEYS = [
339
+ "BACKSPACE",
340
+ "TAB",
341
+ "ENTER",
342
+ "SHIFT",
343
+ "CTRL",
344
+ "ALT",
345
+ "ALT_GR",
346
+ "PAUSE",
347
+ "CAPSLOCK",
348
+ "ESCAPE",
349
+ "SPACE",
350
+ "PAGE_UP",
351
+ "PAGE_DOWN",
352
+ "END",
353
+ "HOME",
354
+ "LEFT",
355
+ "UP",
356
+ "RIGHT",
357
+ "DOWN",
358
+ "INSERT",
359
+ "DELETE",
360
+ "PRINT_SCREEN",
361
+ "SCROLLLOCK",
362
+ "NUMLOCK",
363
+ "LWIN",
364
+ "RWIN",
365
+ "MENU",
366
+ "APPS",
367
+ "CLEAR",
368
+ "HELP",
369
+ "SELECT",
370
+ "EXECUTE",
371
+ "SLEEP",
372
+ "DECIMAL",
373
+ "SEPARATOR",
374
+ "SUBTRACT",
375
+ "ADD",
376
+ "MULTIPLY",
377
+ "DIVIDE",
378
+ "NUMPAD_0",
379
+ "NUMPAD_1",
380
+ "NUMPAD_2",
381
+ "NUMPAD_3",
382
+ "NUMPAD_4",
383
+ "NUMPAD_5",
384
+ "NUMPAD_6",
385
+ "NUMPAD_7",
386
+ "NUMPAD_8",
387
+ "NUMPAD_9",
388
+ "F1",
389
+ "F2",
390
+ "F3",
391
+ "F4",
392
+ "F5",
393
+ "F6",
394
+ "F7",
395
+ "F8",
396
+ "F9",
397
+ "F10",
398
+ "F11",
399
+ "F12",
400
+ "F13",
401
+ "F14",
402
+ "F15",
403
+ "F16",
404
+ "F17",
405
+ "F18",
406
+ "F19",
407
+ "F20",
408
+ "F21",
409
+ "F22",
410
+ "F23",
411
+ "F24",
412
+ "MEDIA_PLAY_PAUSE",
413
+ "MEDIA_STOP",
414
+ "MEDIA_NEXT_TRACK",
415
+ "MEDIA_PREV_TRACK",
416
+ "VOLUME_UP",
417
+ "VOLUME_DOWN",
418
+ "VOLUME_MUTE",
419
+ "BROWSER_BACK",
420
+ "BROWSER_FORWARD",
421
+ "BROWSER_REFRESH",
422
+ "BROWSER_STOP",
423
+ "BROWSER_SEARCH",
424
+ "BROWSER_FAVORITES",
425
+ "BROWSER_HOME",
426
+ "LAUNCH_MAIL",
427
+ "LAUNCH_MEDIA_SELECT",
428
+ "LAUNCH_APP1",
429
+ "LAUNCH_APP2",
430
+ ]
431
+
432
+ MODIFIER_KEYS = {"CTRL", "ALT", "SHIFT", "ALT_GR"}
433
+ MODIFIER_ORDER = {
434
+ "CTRL": 0,
435
+ "ALT": 1,
436
+ "ALT_GR": 2,
437
+ "SHIFT": 3,
438
+ }
439
+
440
+ KEY_NAME_MAP = {
441
+ "backspace": "BACKSPACE",
442
+ "tab": "TAB",
443
+ "enter": "ENTER",
444
+ "return": "ENTER",
445
+ "shift": "SHIFT",
446
+ "left shift": "SHIFT",
447
+ "right shift": "SHIFT",
448
+ "ctrl": "CTRL",
449
+ "left ctrl": "CTRL",
450
+ "right ctrl": "CTRL",
451
+ "alt": "ALT",
452
+ "left alt": "ALT",
453
+ "right alt": "ALT",
454
+ "alt gr": "ALT_GR",
455
+ "pause": "PAUSE",
456
+ "caps lock": "CAPSLOCK",
457
+ "esc": "ESCAPE",
458
+ "escape": "ESCAPE",
459
+ "space": "SPACE",
460
+ "page up": "PAGE_UP",
461
+ "page down": "PAGE_DOWN",
462
+ "end": "END",
463
+ "home": "HOME",
464
+ "left": "LEFT",
465
+ "up": "UP",
466
+ "right": "RIGHT",
467
+ "down": "DOWN",
468
+ "insert": "INSERT",
469
+ "delete": "DELETE",
470
+ "print screen": "PRINT_SCREEN",
471
+ "scroll lock": "SCROLLLOCK",
472
+ "num lock": "NUMLOCK",
473
+ "windows": "LWIN",
474
+ "left windows": "LWIN",
475
+ "right windows": "RWIN",
476
+ "menu": "MENU",
477
+ "apps": "APPS",
478
+ "decimal": "DECIMAL",
479
+ "separator": "SEPARATOR",
480
+ "subtract": "SUBTRACT",
481
+ "add": "ADD",
482
+ "multiply": "MULTIPLY",
483
+ "divide": "DIVIDE",
484
+ "play/pause media": "MEDIA_PLAY_PAUSE",
485
+ "stop media": "MEDIA_STOP",
486
+ "next track": "MEDIA_NEXT_TRACK",
487
+ "previous track": "MEDIA_PREV_TRACK",
488
+ "volume up": "VOLUME_UP",
489
+ "volume down": "VOLUME_DOWN",
490
+ "volume mute": "VOLUME_MUTE",
491
+ "browser back": "BROWSER_BACK",
492
+ "browser forward": "BROWSER_FORWARD",
493
+ "browser refresh": "BROWSER_REFRESH",
494
+ "browser stop": "BROWSER_STOP",
495
+ "browser search": "BROWSER_SEARCH",
496
+ "browser favorites": "BROWSER_FAVORITES",
497
+ "browser home": "BROWSER_HOME",
498
+ "launch mail": "LAUNCH_MAIL",
499
+ "launch media select": "LAUNCH_MEDIA_SELECT",
500
+ "launch app 1": "LAUNCH_APP1",
501
+ "launch app 2": "LAUNCH_APP2",
502
+ }
503
+
504
+ def __init__(self, parent=None):
505
+ super().__init__(parent)
506
+ self._pressed_keys = set()
507
+ self._hook = None
508
+ self._running = False
509
+ self.key_polling_rate = 10
510
+
511
+ def normalise_key_name(self, key_name):
512
+ if key_name is None:
513
+ return None
514
+
515
+ key_name = str(key_name).strip().lower()
516
+
517
+ if key_name in self.KEY_NAME_MAP:
518
+ return self.KEY_NAME_MAP[key_name]
519
+
520
+ if key_name.startswith("numpad "):
521
+ suffix = key_name.replace("numpad ", "")
522
+ if suffix.isdigit():
523
+ return f"NUMPAD_{suffix}"
524
+
525
+ if key_name.startswith("f") and key_name[1:].isdigit():
526
+ return key_name.upper()
527
+
528
+ if len(key_name) == 1:
529
+ return key_name
530
+
531
+ return key_name.upper().replace(" ", "_")
532
+
533
+ def build_key_tuple(self, current_key):
534
+ held_modifiers = [key for key in self._pressed_keys if key in self.MODIFIER_KEYS]
535
+ held_modifiers.sort(key=lambda key: self.MODIFIER_ORDER.get(key, 999))
536
+
537
+ if current_key in self.MODIFIER_KEYS:
538
+ return tuple(held_modifiers)
539
+
540
+ return tuple(held_modifiers + [current_key])
541
+
542
+ def _keyboard_callback(self, event):
543
+ key_name = self.normalise_key_name(event.name)
544
+ if key_name is None:
545
+ return
546
+
547
+ if event.event_type == "down":
548
+ self._pressed_keys.add(key_name)
549
+ self.keys_pressed.emit(self.build_key_tuple(key_name))
550
+
551
+ elif event.event_type == "up":
552
+ self._pressed_keys.discard(key_name)
553
+
554
+ def run(self):
555
+ self._running = True
556
+ self._hook = keyboard.hook(self._keyboard_callback)
557
+
558
+ while self._running:
559
+ self.msleep(self.key_polling_rate)
560
+
561
+ if self._hook is not None:
562
+ keyboard.unhook(self._hook)
563
+ self._hook = None
564
+
565
+ def stop(self):
566
+ self._running = False
567
+ self.wait()
568
+
569
+