@@ -121,9 +121,11 @@ def __init__(self, keymap=(), pairs=(), verbose=True):
121
121
self .advertisement = ProvideServicesAdvertisement (ble_hid , self .battery )
122
122
self .advertisement .appearance = 961
123
123
self .ble = adafruit_ble .BLERadio ()
124
- self .change_bt (self .ble_id )
124
+ self .set_bt_id (self .ble_id )
125
125
self .ble_hid = HID (ble_hid .devices )
126
126
self .usb_hid = HID (usb_hid .devices )
127
+ if not usb_is_connected ():
128
+ self .change_bt (self .ble_id )
127
129
128
130
def update_connection (self ):
129
131
if usb_is_connected () and self .usb_status == 3 :
@@ -157,28 +159,24 @@ def check(self):
157
159
elif time .time () > self .adv_timeout :
158
160
self .stop_advertising ()
159
161
160
- leds = None
161
162
if usb_is_connected ():
162
163
if self .usb_status == 0 :
163
164
self .usb_status = 3
164
- elif self .usb_status == 3 :
165
- leds = self .usb_hid .leds
165
+ self .update_connection ()
166
166
elif self .usb_status > 0 :
167
167
self .usb_status = 0
168
- if not self .ble ._adapter .advertising :
168
+ self .update_connection ()
169
+ if not self .ble .connected and not self .ble ._adapter .advertising :
169
170
self .start_advertising ()
170
171
171
- if leds is None :
172
- leds = self .ble_hid .leds if self .ble .connected else 0
173
- if leds != self .leds :
174
- self .leds = leds
175
- self .backlight .set_hid_leds (leds )
176
- self .log ("keyboard leds {}" .format (bin (leds )))
177
- self .update_connection ()
172
+ if self .usb_status == 3 :
173
+ self .backlight .set_hid_leds (self .usb_hid .leds )
174
+ elif self .ble .connected :
175
+ self .backlight .set_hid_leds (self .ble_hid .leds )
178
176
179
177
# update battery level
180
178
if time .time () > self .battery_update_time :
181
- self .battery_update_time = time .time () + 360
179
+ self .battery_update_time = time .time () + 3600
182
180
self .battery .level = battery_level ()
183
181
184
182
def setup (self ):
@@ -290,7 +288,10 @@ def is_tapping_key(self, key):
290
288
291
289
return False
292
290
293
- def change_bt (self , n ):
291
+ def set_bt_id (self , n ):
292
+ if 0 > n or n > 9 :
293
+ n = 0
294
+
294
295
if self .ble .connected :
295
296
try :
296
297
self .ble_hid .release_all ()
@@ -301,9 +302,6 @@ def change_bt(self, n):
301
302
if self .ble ._adapter .advertising :
302
303
self .ble .stop_advertising ()
303
304
304
- if 0 > n or n > 9 :
305
- return
306
-
307
305
uid = self .uid [n : n + 6 ]
308
306
uid [- 1 ] = uid [- 1 ] | 0xC0
309
307
address = _bleio .Address (uid , _bleio .Address .RANDOM_STATIC )
@@ -320,9 +318,18 @@ def change_bt(self, n):
320
318
print (e )
321
319
self .log (self .ble ._adapter .address )
322
320
323
- self .start_advertising ()
321
+ def change_bt (self , n ):
322
+ if self .usb_status == 3 :
323
+ self .usb_status = 1
324
+ if n != self .ble_id :
325
+ self .set_bt_id (n )
326
+ self .start_advertising ()
327
+ elif not self .ble .connected and not self .ble ._adapter .advertising :
328
+ self .start_advertising ()
329
+ self .update_connection ()
324
330
325
331
def toggle_bt (self ):
332
+ bt_is_off = True
326
333
if self .ble .connected :
327
334
try :
328
335
self .ble_hid .release_all ()
@@ -334,6 +341,13 @@ def toggle_bt(self):
334
341
self .stop_advertising ()
335
342
else :
336
343
self .start_advertising ()
344
+ bt_is_off = False
345
+ if bt_is_off :
346
+ if self .usb_status == 1 :
347
+ self .usb_status = 3
348
+ else :
349
+ if self .usb_status == 3 :
350
+ self .usb_status = 1
337
351
self .update_connection ()
338
352
339
353
def toggle_usb (self ):
@@ -371,12 +385,7 @@ def press(self, *keycodes):
371
385
try :
372
386
if self .usb_status == 0x3 and usb_is_connected ():
373
387
self .usb_hid .press (* keycodes )
374
- return
375
- except Exception as e :
376
- print (e )
377
-
378
- try :
379
- if self .ble .connected :
388
+ elif self .ble .connected :
380
389
self .ble_hid .press (* keycodes )
381
390
elif not self .ble ._adapter .advertising :
382
391
self .start_advertising ()
@@ -387,12 +396,7 @@ def release(self, *keycodes):
387
396
try :
388
397
if self .usb_status == 0x3 and usb_is_connected ():
389
398
self .usb_hid .release (* keycodes )
390
- return
391
- except Exception as e :
392
- print (e )
393
-
394
- try :
395
- if self .ble .connected :
399
+ elif self .ble .connected :
396
400
self .ble_hid .release (* keycodes )
397
401
except Exception as e :
398
402
print (e )
@@ -401,12 +405,7 @@ def send_consumer(self, keycode):
401
405
try :
402
406
if self .usb_status == 0x3 and usb_is_connected ():
403
407
self .usb_hid .send_consumer (keycode )
404
- return
405
- except Exception as e :
406
- print (e )
407
-
408
- try :
409
- if self .ble .connected :
408
+ elif self .ble .connected :
410
409
self .ble_hid .send_consumer (keycode )
411
410
except Exception as e :
412
411
print (e )
0 commit comments