|
1 | 1 | from sys import stdin,stdout,implementation |
| 2 | +from os import getenv |
2 | 3 |
|
3 | 4 | import board |
4 | 5 | import displayio |
@@ -83,22 +84,29 @@ def __init__(self): |
83 | 84 |
|
84 | 85 | self._touched = False |
85 | 86 |
|
86 | | - self._row1Keys = [665,615,565,515,465,415,365,315,265,215,165,115,68,0] |
| 87 | + self._row1Keys = [665,615,565,515,465,415,365,315,265,215,165,115,68,-99999] |
87 | 88 | self._row1Letters = ['\x08','=','-','0','9','8','7','6','5','4','3','2','1','`'] |
88 | 89 | self._row1Uppers = ['\x08','+','_',')','(','*','&','^','%','$','#','@','!','~'] |
89 | | - self._row2Keys = [695,645,595,545,495,445,395,345,295,245,195,145,95,0] |
| 90 | + self._row2Keys = [695,645,595,545,495,445,395,345,295,245,195,145,95,-99999] |
90 | 91 | self._row2Letters = ['\\',']','[','p','o','i','u','y','t','r','e','w','q','\x09'] |
91 | 92 | self._row2Uppers = ['|','}','{'] |
92 | | - self._row3Keys = [650,600,550,500,450,400,350,300,250,200,150,100,0] |
| 93 | + self._row3Keys = [650,600,550,500,450,400,350,300,250,200,150,100,-99999] |
93 | 94 | self._row3Letters = ['\n',"'",';','l','k','j','h','g','f','d','s',"a",'C'] |
94 | 95 | self._row3Uppers = ['\n','"',':'] |
95 | | - self._row4Keys = [635,585,535,485,435,385,335,285,235,185,135,0] |
| 96 | + self._row4Keys = [635,585,535,485,435,385,335,285,235,185,135,-99999] |
96 | 97 | self._row4Letters = ['S','/','.',',','m','n','b','v','c','x','z','S'] |
97 | 98 | self._row4Uppers = ['S','?','>','<'] |
98 | | - self._row5Keys = [710,520,220,125,0] |
| 99 | + self._row5Keys = [710,520,220,125,-99999] |
99 | 100 | self._row5Letters = ['X','',' ','','\x1b'] |
100 | 101 |
|
101 | | - ts_calib = self.calibrate() |
| 102 | + ts_calib = getenv('PYDOS_TS_CALIB') |
| 103 | + try: |
| 104 | + ts_calib = eval(ts_calib) |
| 105 | + self._calibrated = True |
| 106 | + except: |
| 107 | + ts_calib = self.calibrate() |
| 108 | + if len(ts_calib) != 4: |
| 109 | + ts_calib = self.calibrate() |
102 | 110 | self._calibXfact = self._display.width/(ts_calib[2]-ts_calib[0]+1) |
103 | 111 | self._calibXadj = ts_calib[0] |
104 | 112 | self._calibYfact = self._display.height/(ts_calib[3]-ts_calib[1]+1) |
@@ -181,6 +189,27 @@ def calibrate(self): |
181 | 189 | largest_X += 5 |
182 | 190 | largest_Y += 5 |
183 | 191 |
|
| 192 | + envline = {} |
| 193 | + defaults = True |
| 194 | + try: |
| 195 | + envfile = open('/settings.toml') |
| 196 | + except: |
| 197 | + defaults = False |
| 198 | + |
| 199 | + if defaults: |
| 200 | + for line in envfile: |
| 201 | + try: |
| 202 | + envline[line.split('=')[0].strip()] = line.split('=')[1].strip() |
| 203 | + except: |
| 204 | + pass |
| 205 | + envfile.close() |
| 206 | + |
| 207 | + with open('/settings.toml','w') as envfile: |
| 208 | + for param in envline: |
| 209 | + if param != 'PYDOS_TS_CALIB': |
| 210 | + envfile.write(param+"="+envline.get(param,"")+"\n") |
| 211 | + envfile.write('PYDOS_TS_CALIB="(%s,%s,%s,%s)"'%(smallest_X,smallest_Y,largest_X,largest_Y)) |
| 212 | + |
184 | 213 | self._display.root_group=displayio.CIRCUITPYTHON_TERMINAL |
185 | 214 | self._calibrated = True |
186 | 215 | print("Screen Calibrated: (%s,%s) (%s,%s)" % (smallest_X,smallest_Y,largest_X,largest_Y)) |
|
0 commit comments