This repository was archived by the owner on May 9, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathosk_key_map.py
More file actions
85 lines (82 loc) · 5.05 KB
/
Copy pathosk_key_map.py
File metadata and controls
85 lines (82 loc) · 5.05 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
import sys
import platform
import logging
import pyautogui
"""
Author: Jonathon Carlyon (JonathonCarlyon@gmail.com)
KeyLocations maps out the position of they keys on the On-Screen Keyboard (OSK)
Currently OSK's height must be minimized for all keys to be detected.
"""
class KeyLocations():
def __init__(self):
logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', level=logging.INFO)
os_version = platform.platform().split('-')[:2]
os_version = ' '.join(os_version)
#os_version = 'Windows 7'
#os_version = 'Windows 10'
osk_filepath = os.path.abspath(r'assets\osk\{}'.format(os_version))
logging.info("Looking for On-Screen Keyboard")
osk_icon = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'OSK_ICON.png'))
if not osk_icon:
sys.exit("Unable to detect On-Screen Keyboard")
logging.info("On-Screen keyboard detected.")
OSK_LOCATION = (osk_icon[0] - 25, osk_icon[1], 1000, 500)
logging.info('Starting key mapping')
self.Q = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'Q.png'), region=OSK_LOCATION, grayscale=True)
self.W = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'W.png'), region=OSK_LOCATION, grayscale=True)
#Get next key's position by getting difference between keys
pixel_space = (self.W[0] - self.Q[0])
self.E = (self.W[0] + pixel_space, self.Q[1])
self.R = (self.E[0] + pixel_space, self.Q[1])
self.T = (self.R[0] + pixel_space, self.Q[1])
self.Y = (self.T[0] + pixel_space, self.Q[1])
self.U = (self.Y[0] + pixel_space, self.Q[1])
self.I = (self.U[0] + pixel_space, self.Q[1])
self.O = (self.I[0] + pixel_space, self.Q[1])
self.P = (self.O[0] + pixel_space, self.Q[1])
#
self.A = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'A.png'), region=OSK_LOCATION, grayscale=True)
self.S = (self.A[0] + pixel_space, self.A[1])
self.D = (self.S[0] + pixel_space, self.A[1])
self.F = (self.D[0] + pixel_space, self.A[1])
self.G = (self.F[0] + pixel_space, self.A[1])
self.H = (self.G[0] + pixel_space, self.A[1])
self.J = (self.H[0] + pixel_space, self.A[1])
self.K = (self.J[0] + pixel_space, self.A[1])
self.L = (self.K[0] + pixel_space, self.A[1])
#
self.Z = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'Z.png'), region=OSK_LOCATION, grayscale=True)
self.X = (self.Z[0] + pixel_space, self.Z[1])
self.C = (self.X[0] + pixel_space, self.Z[1])
self.V = (self.C[0] + pixel_space, self.Z[1])
self.B = (self.V[0] + pixel_space, self.Z[1])
self.N = (self.B[0] + pixel_space, self.Z[1])
self.M = (self.N[0] + pixel_space, self.Z[1])
#
self.ESC = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'ESC.png'), region=OSK_LOCATION, grayscale=True)
#Starting from Tilda for Windows 7 compatability
self.TILDA = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'TILDA.png'), region=OSK_LOCATION, grayscale=True)
self.ONE = (self.TILDA[0] + pixel_space, self.ESC[1])
self.TWO = (self.ONE[0] + pixel_space, self.ESC[1])
self.THREE = (self.TWO[0] + pixel_space, self.ESC[1])
self.FOUR = (self.THREE[0] + pixel_space, self.ESC[1])
self.FIVE = (self.FOUR[0] + pixel_space, self.ESC[1])
self.SIX = (self.FIVE[0] + pixel_space, self.ESC[1])
self.SEVEN = (self.SIX[0] + pixel_space, self.ESC[1])
self.EIGHT = (self.SEVEN[0] + pixel_space, self.ESC[1])
self.NINE = (self.EIGHT[0] + pixel_space, self.ESC[1])
self.ZERO = (self.NINE[0] + pixel_space, self.ESC[1])
#
self.ALT = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'ALT.png'), region=OSK_LOCATION, grayscale=True)
self.CTRL = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'CTRL.png'), region=OSK_LOCATION, grayscale=True)
self.SHIFT = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'SHIFT.png'), region=OSK_LOCATION, grayscale=True)
self.CAPS = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'CAPS.png'), region=OSK_LOCATION, grayscale=True)
self.TAB = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'TAB.png'), region=OSK_LOCATION, grayscale=True)
self.ALT = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'ALT.png'), region=OSK_LOCATION, grayscale=True)
#
self.LEFT = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'LEFT.png'), region=OSK_LOCATION, grayscale=True)
self.RIGHT = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'RIGHT.png'), region=OSK_LOCATION, grayscale=True)
self.UP = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'UP.png'), region=OSK_LOCATION, grayscale=True)
self.DOWN = pyautogui.locateCenterOnScreen(os.path.join(osk_filepath, 'DOWN.png'), region=OSK_LOCATION, grayscale=True)
logging.info('Done matching')