Add support for changing OLED brightness.
This commit is contained in:
parent
6a427a2876
commit
58567b825c
@ -101,8 +101,8 @@ keyboard.keymap = [
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
KC.TRNS, KC.TRNS, KC.TRNS, KC.DF(0), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
|
KC.TRNS, KC.TRNS, KC.TRNS, KC.DF(0), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
|
||||||
KC.TRNS, KC.TRNS, KC.TRNS, KC.DF(1), KC.TRNS, KC.TRNS, KC.RGB_TOG, KC.RGB_SAI, KC.RGB_HUI, KC.RGB_VAI, KC.RGB_M_P, KC.TRNS,
|
KC.TRNS, KC.OLED_BRI, KC.TRNS, KC.DF(1), KC.TRNS, KC.TRNS, KC.RGB_TOG, KC.RGB_SAI, KC.RGB_HUI, KC.RGB_VAI, KC.RGB_M_P, KC.TRNS,
|
||||||
KC.TRNS, KC.TRNS, KC.TRNS, KC.DF(2), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.RGB_SAD, KC.RGB_HUD, KC.RGB_VAD, KC.RGB_M_P, KC.TRNS,
|
KC.TRNS, KC.OLED_BRD, KC.TRNS, KC.DF(2), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.RGB_SAD, KC.RGB_HUD, KC.RGB_VAD, KC.RGB_M_P, KC.TRNS,
|
||||||
KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
|
KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
|
@ -11,10 +11,12 @@ from kmk.extensions import Extension
|
|||||||
|
|
||||||
DISPLAY_OFFSET = 4 # Used to calculate a new zero level since SSD1306 is clipped.
|
DISPLAY_OFFSET = 4 # Used to calculate a new zero level since SSD1306 is clipped.
|
||||||
|
|
||||||
|
|
||||||
class OledEntryType:
|
class OledEntryType:
|
||||||
TXT = 0
|
TXT = 0
|
||||||
IMG = 1
|
IMG = 1
|
||||||
|
|
||||||
|
|
||||||
class OledData:
|
class OledData:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -44,6 +46,7 @@ class OledData:
|
|||||||
4: OledEntryType.IMG,
|
4: OledEntryType.IMG,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Oled(Extension):
|
class Oled(Extension):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -53,6 +56,7 @@ class Oled(Extension):
|
|||||||
flip: bool = False,
|
flip: bool = False,
|
||||||
device_address=0x3C,
|
device_address=0x3C,
|
||||||
brightness=0.8,
|
brightness=0.8,
|
||||||
|
brightness_step=0.1,
|
||||||
):
|
):
|
||||||
displayio.release_displays()
|
displayio.release_displays()
|
||||||
self.rotation = 180 if flip else 0
|
self.rotation = 180 if flip else 0
|
||||||
@ -62,13 +66,14 @@ class Oled(Extension):
|
|||||||
self._prevLayers = 0
|
self._prevLayers = 0
|
||||||
self._device_address = device_address
|
self._device_address = device_address
|
||||||
self._brightness = brightness
|
self._brightness = brightness
|
||||||
|
self._brightness_step = brightness_step
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
make_key(
|
make_key(
|
||||||
names=('OLED_BRI',), on_press=self._oled_bri, on_release=handler_passthrough
|
names=("OLED_BRI",), on_press=self._oled_bri, on_release=handler_passthrough
|
||||||
)
|
)
|
||||||
make_key(
|
make_key(
|
||||||
names=('OLED_BRD',), on_press=self._oled_brd, on_release=handler_passthrough
|
names=("OLED_BRD",), on_press=self._oled_brd, on_release=handler_passthrough
|
||||||
)
|
)
|
||||||
|
|
||||||
def render_oled(self, layer):
|
def render_oled(self, layer):
|
||||||
@ -77,17 +82,24 @@ class Oled(Extension):
|
|||||||
for view in self._views:
|
for view in self._views:
|
||||||
if view[3] == layer or view[3] == None:
|
if view[3] == layer or view[3] == None:
|
||||||
if view[4] == OledEntryType.TXT:
|
if view[4] == OledEntryType.TXT:
|
||||||
splash.append(label.Label(
|
splash.append(
|
||||||
|
label.Label(
|
||||||
terminalio.FONT,
|
terminalio.FONT,
|
||||||
text=view[0],
|
text=view[0],
|
||||||
color=0xFFFFFF,
|
color=0xFFFFFF,
|
||||||
x=view[1],
|
x=view[1],
|
||||||
y=view[2] + DISPLAY_OFFSET,
|
y=view[2] + DISPLAY_OFFSET,
|
||||||
))
|
)
|
||||||
|
)
|
||||||
elif view[4] == OledEntryType.IMG:
|
elif view[4] == OledEntryType.IMG:
|
||||||
splash.append(displayio.TileGrid(
|
splash.append(
|
||||||
view[0], pixel_shader=view[0].pixel_shader, x=view[1], y=view[2] + DISPLAY_OFFSET
|
displayio.TileGrid(
|
||||||
))
|
view[0],
|
||||||
|
pixel_shader=view[0].pixel_shader,
|
||||||
|
x=view[1],
|
||||||
|
y=view[2] + DISPLAY_OFFSET,
|
||||||
|
)
|
||||||
|
)
|
||||||
gc.collect()
|
gc.collect()
|
||||||
self._display.show(splash)
|
self._display.show(splash)
|
||||||
|
|
||||||
@ -130,17 +142,29 @@ class Oled(Extension):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def on_powersave_enable(self, sandbox):
|
def on_powersave_enable(self, sandbox):
|
||||||
self._display.brightness = self._display.brightness / 2 if self._display.brightness > 0.5 else 0.2
|
self._display.brightness = (
|
||||||
|
self._display.brightness / 2 if self._display.brightness > 0.5 else 0.2
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
def on_powersave_disable(self, sandbox):
|
def on_powersave_disable(self, sandbox):
|
||||||
self._display.brightness = self._brightness # Restore brightness to default or previous value
|
self._display.brightness = (
|
||||||
|
self._brightness
|
||||||
|
) # Restore brightness to default or previous value
|
||||||
return
|
return
|
||||||
|
|
||||||
def _oled_bri(self, *args, **kwargs):
|
def _oled_bri(self, *args, **kwargs):
|
||||||
self._display.brightness = self._display.brightness + 0.1 if self._display.brightness < 0.9 else 1.0
|
self._display.brightness = (
|
||||||
|
self._display.brightness + self._brightness_step
|
||||||
|
if self._display.brightness + self._brightness_step <= 1.0
|
||||||
|
else 1.0
|
||||||
|
)
|
||||||
self._brightness = self._display.brightness # Save current brightness
|
self._brightness = self._display.brightness # Save current brightness
|
||||||
|
|
||||||
def _oled_brd(self, *args, **kwargs):
|
def _oled_brd(self, *args, **kwargs):
|
||||||
self._display.brightness = self._display.brightness - 0.1 if self._display.brightness > 0.1 else 0.1
|
self._display.brightness = (
|
||||||
|
self._display.brightness - self._brightness_step
|
||||||
|
if self._display.brightness - self._brightness_step >= 0.1
|
||||||
|
else 0.1
|
||||||
|
)
|
||||||
self._brightness = self._display.brightness # Save current brightness
|
self._brightness = self._display.brightness # Save current brightness
|
||||||
|
Loading…
x
Reference in New Issue
Block a user