@@ -59,6 +59,7 @@ def lookup(layer, key_number):
59
59
HEIGHT = 64
60
60
61
61
display = adafruit_displayio_sh1107 .SH1107 (display_bus , width = WIDTH , height = HEIGHT , rotation = 180 )
62
+ display .auto_refresh = False
62
63
63
64
font = bitmap_font .load_font ("/digit-16px.pcf" )
64
65
text_area = label .Label (font , text = " " , line_spacing = 0.95 )
@@ -82,31 +83,31 @@ class Calculator:
82
83
def __init__ (self ):
83
84
self ._number1 = N ("0" )
84
85
self ._number2 = None
85
- self .trail = []
86
+ self .trail = ["Ready." ]
86
87
self .entry = ""
87
88
self .op = None
88
89
self .keyboard = None
89
90
self .keyboard_layout = None
90
91
91
- def paste (text ):
92
+ def paste (self , text ):
92
93
if self .keyboard is None :
93
94
if usb_hid :
94
95
self .keyboard = Keyboard (usb_hid .devices )
95
- self .keyboard_layout = KeyboardLayoutUS (keyboard )
96
+ self .keyboard_layout = KeyboardLayoutUS (self . keyboard )
96
97
else :
97
98
return
98
99
99
100
if self .keyboard_layout is None :
100
101
self .add_trail (f"No USB" )
101
102
else :
102
103
text = str (text )
103
- keyboard_layout .write (text )
104
+ self . keyboard_layout .write (text )
104
105
105
106
self .add_trail (f"Pasted { text } " )
106
107
107
108
108
109
def add_trail (self , msg ):
109
- self .trail = self .trail [: 3 ] + [str (msg )]
110
+ self .trail = self .trail [- 3 : ] + [str (msg ). upper ( )]
110
111
111
112
@property
112
113
def number1 (self ):
@@ -140,9 +141,13 @@ def key_pressed(self, k):
140
141
if k == K_CL :
141
142
if self .entry :
142
143
self .entry = self .entry [:- 1 ]
144
+ elif self .op :
145
+ print ("clear op" )
146
+ self .op = None
143
147
elif self .number2 is None :
144
148
self .clear ()
145
149
else :
150
+ print ("clear entry - op = " , self .op )
146
151
self .clear_entry ()
147
152
148
153
if len (k ) == 1 and k in "0123456789" :
@@ -154,9 +159,9 @@ def key_pressed(self, k):
154
159
155
160
if k == K_PA :
156
161
if self .number2 is not None :
157
- paste (self .number2 )
162
+ self . paste (self .number2 )
158
163
else :
159
- paste (self .number1 )
164
+ self . paste (self .number1 )
160
165
161
166
if k == "=" :
162
167
self .do_binary_op (0 )
@@ -190,8 +195,6 @@ def do_binary_op(self, i):
190
195
self .clear_entry ()
191
196
192
197
def show (self ):
193
- display .auto_refresh = False
194
-
195
198
rows = ["" ] * 4
196
199
trail = self .trail
197
200
if len (trail ) > 0 :
@@ -203,10 +206,11 @@ def show(self):
203
206
204
207
entry_or_number = self .entry or self .number2
205
208
cursor = ' :' if (self .number2 is None or self .entry != "" ) else ""
206
- rows [- 1 ] = f"{ self .op or '' } { entry_or_number or '' } { cursor } "
209
+ op = self .op or ''
210
+ op = 'd' if op == '/' else op
211
+ rows [- 1 ] = f"{ op } { entry_or_number or '' } { cursor } "
207
212
for r in rows : print (r )
208
213
text_area .text = "\n " .join (rows )
209
- display .auto_refresh = True
210
214
211
215
km = keypad .KeyMatrix (row_pins = (board .A2 , board .A1 , board .A3 , board .A0 , board .D0 ), column_pins = (board .D25 , board .D11 , board .D12 , board .D24 ))
212
216
@@ -229,3 +233,6 @@ def show(self):
229
233
elif ev .released :
230
234
if key == K_FN :
231
235
layer = 0
236
+
237
+ else :
238
+ display .refresh ()
0 commit comments