Skip to content

Commit 536ff67

Browse files
committed
add more rgb backlight modes
1 parent 59dc091 commit 536ff67

File tree

2 files changed

+87
-22
lines changed

2 files changed

+87
-22
lines changed

keyboard/model/backlight.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,6 @@ def handle_key(self, key, pressed):
3636

3737
def toggle(self):
3838
pass
39+
40+
def set_mode(self, mode):
41+
pass

keyboard/model/m60.py

Lines changed: 84 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# fmt: off
2-
31
import analogio
42
import microcontroller
53
from .is32fl3733 import IS31FL3733
@@ -15,7 +13,7 @@
1513
Matrix.COLS = (C1, C2, C3, C4, C5, C6, C7, C8)
1614
Matrix.ROW2COL = False
1715

18-
16+
# fmt: off
1917
# ESC 1 2 3 4 5 6 7 8 9 0 - = BACKSPACE
2018
# TAB Q W E R T Y U I O P [ ] |
2119
# CAPS A S D F G H J K L ; " ENTER
@@ -62,16 +60,36 @@ def battery_level():
6260
220,200, 184, 168, 152, 136, 120, 104, 88, 72, 56, 40, 24, 4,
6361
6, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 214,
6462
210, 180, 164, 148, 132, 116, 100, 84, 68, 52, 36, 10,
65-
2, 22, 42, 102, 162, 182, 202, 222, 123, 82
63+
2, 22, 42, 102, 162, 182, 202, 222,
64+
123, 82
6665
))
6766

6867
leds_y = bytearray((
6968
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7069
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
7170
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
7271
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
73-
64, 64, 64, 64, 64, 64, 64, 64, 64, 64
72+
64, 64, 64, 64, 64, 64, 64, 64,
73+
64, 64
74+
))
75+
76+
angle = bytearray((
77+
180, 178, 176, 173, 168, 160, 146, 128, 109, 96, 87, 82, 79, 76,
78+
69, 71, 72, 75, 79, 87, 109, 146, 168, 176, 180, 183, 184, 186,
79+
170, 170, 170, 170, 170, 170, 170, 64, 64, 64, 64, 64, 64,
80+
57, 54, 51, 46, 36, 9, 229, 213, 206, 202, 200, 198,
81+
203, 205, 209, 243, 40, 46, 50, 52,
82+
13, 225
83+
))
84+
85+
distance = bytearray((
86+
116, 101, 86, 71, 57, 45, 35, 32, 35, 45, 57, 71, 86, 108, 109, 89, 73,
87+
58, 43, 28, 17, 17, 28, 43, 58, 73, 89, 109, 106, 85, 69, 53, 37, 21, 5,
88+
11, 27, 43, 59, 75, 102, 99, 69, 54, 39, 25, 16, 20, 32, 46, 62, 77, 103,
89+
114, 95, 76, 33, 59, 76, 95, 114,
90+
33, 43
7491
))
92+
# fmt: on
7593

7694

7795
def hsv_to_rgb(h, s, v):
@@ -82,21 +100,28 @@ def hsv_to_rgb(h, s, v):
82100
q = (v * (65536 - s * f)) >> 16
83101
t = (v * (65536 - s * (256 - f))) >> 16
84102

85-
if i == 0: return (v, t, p)
86-
if i == 1: return (q, v, p)
87-
if i == 2: return (p, v, t)
88-
if i == 3: return (p, q, v)
89-
if i == 4: return (t, p, v)
103+
if i == 0:
104+
return (v, t, p)
105+
if i == 1:
106+
return (q, v, p)
107+
if i == 2:
108+
return (p, v, t)
109+
if i == 3:
110+
return (p, q, v)
111+
if i == 4:
112+
return (t, p, v)
90113
return (v, p, q)
91114

92-
115+
93116
def wheel(h):
94117
i = (h * 3) >> 8
95118
a = (h * 3) & 0xFF
96119
b = 255 - a
97120

98-
if i == 0: return (b, a, 0)
99-
if i == 1: return (0, b, a)
121+
if i == 0:
122+
return (b, a, 0)
123+
if i == 1:
124+
return (0, b, a)
100125

101126
return (a, 0, b)
102127

@@ -109,8 +134,10 @@ def wheel2(h, v):
109134
a = a * v // 255
110135
b = b * v // 255
111136

112-
if i == 0: return (b, a, 0)
113-
if i == 1: return (0, b, a)
137+
if i == 0:
138+
return (b, a, 0)
139+
if i == 1:
140+
return (0, b, a)
114141

115142
return (a, 0, b)
116143

@@ -127,7 +154,18 @@ def __init__(self):
127154
self.keys = {}
128155
self.n = 0
129156

130-
self.modes = (self.off, self.mono, self.gradient, self.spectrum, self.spectrum_x, self.spectrum_y, self.elapse)
157+
self.modes = (
158+
self.off,
159+
self.mono,
160+
self.gradient,
161+
self.spectrum,
162+
self.spectrum_x,
163+
self.spectrum_y,
164+
self.elapse,
165+
self.broadcast,
166+
self.blackhole,
167+
self.pinwheel,
168+
)
131169
self.mode = 6
132170
self.mode_function = self.modes[self.mode]
133171
self.dynamic = True
@@ -212,7 +250,7 @@ def spectrum_x(self):
212250
self.update()
213251
self.n = (n + 1) & 0xFF
214252
return True
215-
253+
216254
def spectrum_y(self):
217255
n = self.n
218256
for i in range(63):
@@ -221,11 +259,35 @@ def spectrum_y(self):
221259
self.update()
222260
self.n = (n + 1) & 0xFF
223261
return True
224-
262+
263+
def broadcast(self):
264+
n = self.n
265+
for i in range(63):
266+
self.pixel(i, *wheel((distance[i] - n) & 0xFF))
267+
self.update()
268+
self.n = (n + 2) & 0xFF
269+
return True
270+
271+
def blackhole(self):
272+
n = self.n
273+
for i in range(63):
274+
self.pixel(i, *wheel2((distance[i] + n) & 0xFF, distance[i] * 2 - 10))
275+
self.update()
276+
self.n = (n + 2) & 0xFF
277+
return True
278+
279+
def pinwheel(self):
280+
n = self.n
281+
for i in range(63):
282+
self.pixel(i, *wheel((angle[i] + n) & 0xFF))
283+
self.update()
284+
self.n = (n + 2) & 0xFF
285+
return True
286+
225287
def handle_key(self, key, pressed):
226288
if self.enabled and self.mode == 6:
227289
self.keys[key] = 255
228-
290+
229291
def elapse(self):
230292
if 0 == len(self.keys):
231293
return False
@@ -287,18 +349,18 @@ def next(self):
287349
if self.mode == 6:
288350
self.keys.clear()
289351
if self.mode >= 3:
290-
self.dynamic = True
352+
self.dynamic = True
291353
else:
292354
self.dynamic = False
293355
self.mode_function()
294356

295357
def set_mode(self, mode):
296-
self.mode = mode if mode < len(self.modes) else 0
358+
self.mode = mode if mode < len(self.modes) else 0
297359
self.mode_function = self.modes[self.mode]
298360
if self.mode == 6:
299361
self.keys.clear()
300362
if self.mode >= 3:
301-
self.dynamic = True
363+
self.dynamic = True
302364
else:
303365
self.dynamic = False
304366
self.mode_function()

0 commit comments

Comments
 (0)