Merge pull request #1 from regicidalplutophage/after-ephemera/oled-improvement-revival

Improved text handling
This commit is contained in:
jk jensen 2023-02-28 06:37:41 -08:00 committed by GitHub
commit 7a84cdd0fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 14 deletions

View File

@ -36,13 +36,14 @@ keyboard.extensions.append(rgb_ext)
oled_ext = Oled(
OledData(
entries=[
OledData.oled_text_entry(text='Kyria v1.4', x=0, y=0),
OledData.oled_text_entry(text='KB2040', x=0, y=10),
OledData.oled_text_entry(text='Layer: ', x=0, y=20),
OledData.oled_text_entry(text='BASE', x=40, y=20, layer=0),
OledData.oled_text_entry(text='LOWER', x=40, y=20, layer=3),
OledData.oled_text_entry(text='RAISE', x=40, y=20, layer=4),
OledData.oled_text_entry(text='ADJUST', x=40, y=20, layer=6),
OledData.oled_text_entry(text='Kyria v1.4\nKB2040', line_spacing=0.75, inverted=True, x=0, y=0),
OledData.oled_text_entry(text='americ', x=128, y=0, x_anchor=1.0),
OledData.oled_text_entry(text='anfootball', x=128, y=10, x_anchor=1.0),
OledData.oled_text_entry(text='Layer: ', x=0, y=32, y_anchor=1.0),
OledData.oled_text_entry(text='BASE', x=40, y=32, y_anchor=1.0, layer=0),
OledData.oled_text_entry(text='LOWER', x=40, y=32, y_anchor=1.0, layer=3),
OledData.oled_text_entry(text='RAISE', x=40, y=32, y_anchor=1.0, layer=4),
OledData.oled_text_entry(text='ADJUST', x=40, y=32, y_anchor=1.0, layer=6),
]
),
height=64,

View File

@ -10,8 +10,6 @@ from kmk.extensions import Extension
from kmk.handlers.stock import passthrough as handler_passthrough
from kmk.keys import make_key
DISPLAY_OFFSET = 4 # Used to calculate a new zero level since SSD1306 is clipped.
class OledEntryType:
TXT = 0
@ -27,13 +25,18 @@ class OledData:
self.data = entries
@staticmethod
def oled_text_entry(x=0, y=0, text='', layer=None):
def oled_text_entry(text='', x=0, y=0, x_anchor=0.0, y_anchor=0.0, direction='LTR', line_spacing=0.75, inverted=False, layer=None):
return {
0: text,
1: x,
2: y,
3: layer,
4: OledEntryType.TXT,
5: x_anchor,
6: y_anchor,
7: direction,
8: line_spacing,
9: inverted,
}
@staticmethod
@ -87,9 +90,13 @@ class Oled(Extension):
label.Label(
terminalio.FONT,
text=view[0],
color=0xFFFFFF,
x=view[1],
y=view[2] + DISPLAY_OFFSET,
color=0xFFFFFF if view[9] == False else 0x000000,
background_color=0x000000 if view[9] == False else 0xFFFFFF,
anchor_point=(view[5],view[6]),
anchored_position=(view[1] if view[9] == False else view[1]+1,view[2]),
label_direction=view[7],
line_spacing=view[8],
padding_left=0 if view[9] == False else 1,
)
)
elif view[4] == OledEntryType.IMG:
@ -98,7 +105,7 @@ class Oled(Extension):
view[0],
pixel_shader=view[0].pixel_shader,
x=view[1],
y=view[2] + DISPLAY_OFFSET,
y=view[2],
)
)
gc.collect()