Skip to content

Commit 68cc651

Browse files
committed
foo catchup
1 parent 5f9b6d5 commit 68cc651

File tree

2 files changed

+209
-113
lines changed

2 files changed

+209
-113
lines changed

code.py

Lines changed: 113 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,113 @@
1-
2-
#from adafruit_hid.keyboard import Keyboard
3-
#from adafruit_hid.keycode import Keycode
4-
import Keys
5-
import Devices
6-
import keymap_simple as Keymap
7-
import time
8-
#import keymap_t9 as keymap
9-
#KMAP = keymap.KMAP
10-
#KEYS = keys.Keys()
11-
#SCROLL_ENCODER = Keymap.SCROLL_ENCODER
12-
#JOYSTICK_MOUSE = Keymap.JOYSTICK_MOUSE
13-
14-
# If a dual function key (layer if hold, key if tap), is held longer than this,
15-
# then it is treated as a hold (layer change), not a key tap.
16-
HOLD_TIME = .2
17-
LOOP_STEP = .05 # 5 ms
18-
19-
def readLoop():
20-
global HOLD_TIME
21-
global LOOP_STEP
22-
kmap = Keymap.KMAP
23-
keys = Keys.Keys()
24-
buttons = [Devices.Button(p, HOLD_TIME) for p in Keymap.PINS]
25-
scroll_encoder = Devices.Encoder(Keymap.SCROLL_ENCODER)
26-
joystick_mouse = Devices.Joystick(Keymap.JOYSTICK_MOUSE)
27-
queue = [None for b in buttons]
28-
layer = ['BASE', ]
29-
pending = False
30-
31-
while True:
32-
time.sleep(LOOP_STEP)
33-
for n, button in enumerate(buttons):
34-
keys.move_mouse()
35-
enc_state = scroll_encoder.getState()
36-
if enc_state is not None:
37-
print(enc_state)
38-
joy_state = joystick_mouse.getState()
39-
if joy_state != (0, 0):
40-
print(joy_state)
41-
42-
state = button.get_state()
43-
44-
# Set the button hold/tap functions
45-
if state == 'new press':
46-
if pending:
47-
if pending.hold in kmap.keys():
48-
layer.append(pending.hold)
49-
else:
50-
keys.press(pending.hold)
51-
pending.tap = False
52-
pending = False
53-
54-
current_layer = layer[-1]
55-
funcs = kmap[current_layer][n]
56-
if isinstance(funcs, str):
57-
funcs = (funcs, False)
58-
print(funcs, state)
59-
button.tap, button.hold = funcs
60-
61-
if 'continued' not in state:
62-
# FYI for button state transitions
63-
print(state, '- h:', button.hold, 't:', button.tap, button.pin)
64-
65-
# Handle each state (change)
66-
if state == 'new press':
67-
if button.hold:
68-
pending = button
69-
else:
70-
keys.press(button.tap)
71-
72-
elif state == 'continued press':
73-
pass
74-
75-
elif state == 'new hold':
76-
if pending == button:
77-
if button.hold in kmap.keys():
78-
layer.append(button.hold)
79-
else:
80-
keys.press(button.hold) # e.g. alt, shift, etc.
81-
button.tap = False
82-
pending = False
83-
84-
elif state == 'continued hold':
85-
pass
86-
87-
elif state == 'new release':
88-
if pending == button:
89-
pending = False
90-
button.hold = False
91-
keys.press(button.tap)
92-
93-
elif button.hold:
94-
print(button.hold, kmap.keys())
95-
if button.hold in kmap.keys():
96-
layer.remove(button.hold)
97-
else:
98-
keys.release(button.hold)
99-
button.tap = False
100-
button.hold = False
101-
102-
else:
103-
keys.release(button.tap)
104-
button.tap = False
105-
106-
else: # state == 'condinued_release'
107-
if button.tap:
108-
print('continued release = tap release:', button.tap)
109-
keys.release(button.tap)
110-
button.tap = False
111-
112-
113-
readLoop()
1+
2+
#from adafruit_hid.keyboard import Keyboard
3+
#from adafruit_hid.keycode import Keycode
4+
import Keys
5+
import Devices
6+
import keymap_simple as Keymap
7+
import time
8+
#import keymap_t9 as keymap
9+
#KMAP = keymap.KMAP
10+
#KEYS = keys.Keys()
11+
#SCROLL_ENCODER = Keymap.SCROLL_ENCODER
12+
#JOYSTICK_MOUSE = Keymap.JOYSTICK_MOUSE
13+
14+
# If a dual function key (layer if hold, key if tap), is held longer than this,
15+
# then it is treated as a hold (layer change), not a key tap.
16+
HOLD_TIME = .2
17+
LOOP_STEP = .05 # 5 ms
18+
19+
def readLoop():
20+
global HOLD_TIME
21+
global LOOP_STEP
22+
kmap = Keymap.KMAP
23+
keys = Keys.Keys()
24+
buttons = [Devices.Button(p, HOLD_TIME) for p in Keymap.PINS]
25+
scroll_encoder = Devices.Encoder(Keymap.SCROLL_ENCODER)
26+
joystick_mouse = Devices.Joystick(Keymap.JOYSTICK_MOUSE)
27+
queue = [None for b in buttons]
28+
layer = ['BASE', ]
29+
pending = False
30+
31+
while True:
32+
time.sleep(LOOP_STEP)
33+
for n, button in enumerate(buttons):
34+
keys.move_mouse()
35+
enc_state = scroll_encoder.getState()
36+
if enc_state is not None:
37+
print(enc_state)
38+
joy_state = joystick_mouse.getState()
39+
if joy_state != (0, 0):
40+
print(joy_state)
41+
42+
state = button.get_state()
43+
44+
# Set the button hold/tap functions
45+
if state == 'new press':
46+
if pending:
47+
if pending.hold in kmap.keys():
48+
layer.append(pending.hold)
49+
else:
50+
keys.press(pending.hold)
51+
pending.tap = False
52+
pending = False
53+
54+
current_layer = layer[-1]
55+
funcs = kmap[current_layer][n]
56+
if isinstance(funcs, str):
57+
funcs = (funcs, False)
58+
print(funcs, state)
59+
button.tap, button.hold = funcs
60+
61+
if 'continued' not in state:
62+
# FYI for button state transitions
63+
print(state, '- h:', button.hold, 't:', button.tap, button.pin)
64+
65+
# Handle each state (change)
66+
if state == 'new press':
67+
if button.hold:
68+
pending = button
69+
else:
70+
keys.press(button.tap)
71+
72+
elif state == 'continued press':
73+
pass
74+
75+
elif state == 'new hold':
76+
if pending == button:
77+
if button.hold in kmap.keys():
78+
layer.append(button.hold)
79+
else:
80+
keys.press(button.hold) # e.g. alt, shift, etc.
81+
button.tap = False
82+
pending = False
83+
84+
elif state == 'continued hold':
85+
pass
86+
87+
elif state == 'new release':
88+
if pending == button:
89+
pending = False
90+
button.hold = False
91+
keys.press(button.tap)
92+
93+
elif button.hold:
94+
print(button.hold, kmap.keys())
95+
if button.hold in kmap.keys():
96+
layer.remove(button.hold)
97+
else:
98+
keys.release(button.hold)
99+
button.tap = False
100+
button.hold = False
101+
102+
else:
103+
keys.release(button.tap)
104+
button.tap = False
105+
106+
else: # state == 'condinued_release'
107+
if button.tap:
108+
print('continued release = tap release:', button.tap)
109+
keys.release(button.tap)
110+
button.tap = False
111+
112+
113+
readLoop()

code.py.1

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
2+
#from adafruit_hid.keyboard import Keyboard
3+
#from adafruit_hid.keycode import Keycode
4+
import Keys
5+
import Button
6+
import keymap_simple as keymap
7+
import time
8+
#import keymap_t9 as keymap
9+
KMAP = keymap.KMAP
10+
PINS = keymap.PINS
11+
KEYS = Keys.Keys()
12+
13+
# If a dual function key (layer if hold, key if tap), is held longer than this,
14+
# then it is treated as a hold (layer change), not a key tap.
15+
HOLD_TIME = .2
16+
LOOP_STEP = .05 # 5 ms
17+
18+
def readLoop():
19+
global PINS
20+
global KMAP
21+
global HOLD_TIME
22+
#kmap = getKeymap()
23+
#keys = Keys()
24+
buttons = [Button.Button(p, HOLD_TIME) for p in PINS]
25+
queue = [None for b in buttons]
26+
layer = ['BASE', ]
27+
pending = False
28+
29+
while True:
30+
time.sleep(0.05)
31+
for n, button in enumerate(buttons):
32+
state = button.get_state()
33+
current_layer = layer[-1]
34+
35+
# Set the button hold/tap functions
36+
if state == 'new press':
37+
funcs = KMAP[current_layer][n]
38+
if isinstance(funcs, str):
39+
funcs = (funcs, False)
40+
print(funcs, state)
41+
button.tap, button.hold = funcs
42+
43+
if 'continued' not in state:
44+
# FYI for button state transitions
45+
print(state, 'hold:', button.hold, 'tap:', button.tap, button.pin)
46+
47+
# Handle each state (change)
48+
if state == 'new press':
49+
if pending:
50+
KEYS.press(pending.hold)
51+
pending.tap = False
52+
pending = False
53+
54+
if button.hold:
55+
if button.hold in KMAP.keys():
56+
layer.append(button.hold)
57+
else:
58+
pending = button
59+
else:
60+
KEYS.press(button.tap)
61+
62+
elif state == 'continued press':
63+
pass
64+
65+
elif state == 'new hold':
66+
if pending == button:
67+
KEYS.press(button.hold) # e.g. alt, shift, etc.
68+
pending = False
69+
button.tap = False
70+
71+
elif state == 'continued hold':
72+
pass
73+
74+
elif state == 'new release':
75+
if button.hold:
76+
print(button.hold, KMAP.keys())
77+
if button.hold in KMAP.keys():
78+
layer.remove(button.hold)
79+
elif pending == button:
80+
pending = False
81+
KEYS.press(button.tap)
82+
else:
83+
KEYS.release(button.hold)
84+
button.tap = False
85+
button.hold = False
86+
else:
87+
KEYS.release(button.tap)
88+
button.tap = False
89+
90+
else: # state == 'condinued_release'
91+
if button.tap:
92+
KEYS.release(button.tap)
93+
button.tap = False
94+
95+
96+
readLoop()

0 commit comments

Comments
 (0)