| 406 | |
| 407 | # main function, process key's queue in loop |
| 408 | def processQueue(self): |
| 409 | |
| 410 | # endless loop |
| 411 | while True: |
| 412 | |
| 413 | # get one key |
| 414 | key = self.key_queue.get() |
| 415 | |
| 416 | # terminate process if queue is empty |
| 417 | if key is None: |
| 418 | self.key_queue.task_done() |
| 419 | if self.key_queue.empty(): |
| 420 | return |
| 421 | continue |
| 422 | # print key |
| 423 | elif not self.keys.standalone: |
| 424 | self.keys.common.info("Key: \033[1;35m%s/%s\033[0;37m, duration: \033[1;35m%f\033[0;37m, direction: \033[1;35m%s\033[0;37m, type: \033[1;35m%s" % ( |
| 425 | key["okey"] if key["okey"] else "None", |
| 426 | key["key"], key["time"], |
| 427 | "UP" if key["up"] and not key["down"] else "DOWN" if not key["up"] and key["down"] else "BOTH" if key["up"] and key["down"] else "NONE", |
| 428 | "None" if key["type"] is None else "DK" if key["type"] == self.keys.direct_keys else "VK"), "\033[0;35mKEY: \033[0;37m" |
| 429 | ) |
| 430 | |
| 431 | # if it's a key |
| 432 | if key["key"]: |
| 433 | |
| 434 | # press |
| 435 | if key["down"]: |
| 436 | self.sendKey(key["key"], self.keys.key_press | key["type"]) |
| 437 | |
| 438 | # wait |
| 439 | sleep(key["time"]) |
| 440 | |
| 441 | # and release |
| 442 | if key["up"]: |
| 443 | self.sendKey(key["key"], self.keys.key_release | key["type"]) |
| 444 | |
| 445 | # not an actual key, just pause |
| 446 | else: |
| 447 | sleep(key["time"]) |
| 448 | |
| 449 | # mark as done (decrement internal queue counter) |
| 450 | self.key_queue.task_done() |
| 451 | |
| 452 | # send key |
| 453 | def sendKey(self, key, type): |