@@ -59,6 +59,7 @@ def lookup(layer, key_number):
5959HEIGHT = 64
6060
6161display = adafruit_displayio_sh1107 .SH1107 (display_bus , width = WIDTH , height = HEIGHT , rotation = 180 )
62+ display .auto_refresh = False
6263
6364font = bitmap_font .load_font ("/digit-16px.pcf" )
6465text_area = label .Label (font , text = " " , line_spacing = 0.95 )
@@ -82,31 +83,31 @@ class Calculator:
8283 def __init__ (self ):
8384 self ._number1 = N ("0" )
8485 self ._number2 = None
85- self .trail = []
86+ self .trail = ["Ready." ]
8687 self .entry = ""
8788 self .op = None
8889 self .keyboard = None
8990 self .keyboard_layout = None
9091
91- def paste (text ):
92+ def paste (self , text ):
9293 if self .keyboard is None :
9394 if usb_hid :
9495 self .keyboard = Keyboard (usb_hid .devices )
95- self .keyboard_layout = KeyboardLayoutUS (keyboard )
96+ self .keyboard_layout = KeyboardLayoutUS (self . keyboard )
9697 else :
9798 return
9899
99100 if self .keyboard_layout is None :
100101 self .add_trail (f"No USB" )
101102 else :
102103 text = str (text )
103- keyboard_layout .write (text )
104+ self . keyboard_layout .write (text )
104105
105106 self .add_trail (f"Pasted { text } " )
106107
107108
108109 def add_trail (self , msg ):
109- self .trail = self .trail [: 3 ] + [str (msg )]
110+ self .trail = self .trail [- 3 : ] + [str (msg ). upper ( )]
110111
111112 @property
112113 def number1 (self ):
@@ -140,9 +141,13 @@ def key_pressed(self, k):
140141 if k == K_CL :
141142 if self .entry :
142143 self .entry = self .entry [:- 1 ]
144+ elif self .op :
145+ print ("clear op" )
146+ self .op = None
143147 elif self .number2 is None :
144148 self .clear ()
145149 else :
150+ print ("clear entry - op = " , self .op )
146151 self .clear_entry ()
147152
148153 if len (k ) == 1 and k in "0123456789" :
@@ -154,9 +159,9 @@ def key_pressed(self, k):
154159
155160 if k == K_PA :
156161 if self .number2 is not None :
157- paste (self .number2 )
162+ self . paste (self .number2 )
158163 else :
159- paste (self .number1 )
164+ self . paste (self .number1 )
160165
161166 if k == "=" :
162167 self .do_binary_op (0 )
@@ -190,8 +195,6 @@ def do_binary_op(self, i):
190195 self .clear_entry ()
191196
192197 def show (self ):
193- display .auto_refresh = False
194-
195198 rows = ["" ] * 4
196199 trail = self .trail
197200 if len (trail ) > 0 :
@@ -203,10 +206,11 @@ def show(self):
203206
204207 entry_or_number = self .entry or self .number2
205208 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 } "
207212 for r in rows : print (r )
208213 text_area .text = "\n " .join (rows )
209- display .auto_refresh = True
210214
211215km = keypad .KeyMatrix (row_pins = (board .A2 , board .A1 , board .A3 , board .A0 , board .D0 ), column_pins = (board .D25 , board .D11 , board .D12 , board .D24 ))
212216
@@ -229,3 +233,6 @@ def show(self):
229233 elif ev .released :
230234 if key == K_FN :
231235 layer = 0
236+
237+ else :
238+ display .refresh ()
0 commit comments