Merge pull request #1 from regicidalplutophage/after-ephemera/oled-improvement-revival
Improved text handling
This commit is contained in:
commit
7a84cdd0fb
@ -36,13 +36,14 @@ keyboard.extensions.append(rgb_ext)
|
|||||||
oled_ext = Oled(
|
oled_ext = Oled(
|
||||||
OledData(
|
OledData(
|
||||||
entries=[
|
entries=[
|
||||||
OledData.oled_text_entry(text='Kyria v1.4', x=0, y=0),
|
OledData.oled_text_entry(text='Kyria v1.4\nKB2040', line_spacing=0.75, inverted=True, x=0, y=0),
|
||||||
OledData.oled_text_entry(text='KB2040', x=0, y=10),
|
OledData.oled_text_entry(text='americ', x=128, y=0, x_anchor=1.0),
|
||||||
OledData.oled_text_entry(text='Layer: ', x=0, y=20),
|
OledData.oled_text_entry(text='anfootball', x=128, y=10, x_anchor=1.0),
|
||||||
OledData.oled_text_entry(text='BASE', x=40, y=20, layer=0),
|
OledData.oled_text_entry(text='Layer: ', x=0, y=32, y_anchor=1.0),
|
||||||
OledData.oled_text_entry(text='LOWER', x=40, y=20, layer=3),
|
OledData.oled_text_entry(text='BASE', x=40, y=32, y_anchor=1.0, layer=0),
|
||||||
OledData.oled_text_entry(text='RAISE', x=40, y=20, layer=4),
|
OledData.oled_text_entry(text='LOWER', x=40, y=32, y_anchor=1.0, layer=3),
|
||||||
OledData.oled_text_entry(text='ADJUST', x=40, y=20, layer=6),
|
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,
|
height=64,
|
||||||
|
@ -10,8 +10,6 @@ from kmk.extensions import Extension
|
|||||||
from kmk.handlers.stock import passthrough as handler_passthrough
|
from kmk.handlers.stock import passthrough as handler_passthrough
|
||||||
from kmk.keys import make_key
|
from kmk.keys import make_key
|
||||||
|
|
||||||
DISPLAY_OFFSET = 4 # Used to calculate a new zero level since SSD1306 is clipped.
|
|
||||||
|
|
||||||
|
|
||||||
class OledEntryType:
|
class OledEntryType:
|
||||||
TXT = 0
|
TXT = 0
|
||||||
@ -27,13 +25,18 @@ class OledData:
|
|||||||
self.data = entries
|
self.data = entries
|
||||||
|
|
||||||
@staticmethod
|
@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 {
|
return {
|
||||||
0: text,
|
0: text,
|
||||||
1: x,
|
1: x,
|
||||||
2: y,
|
2: y,
|
||||||
3: layer,
|
3: layer,
|
||||||
4: OledEntryType.TXT,
|
4: OledEntryType.TXT,
|
||||||
|
5: x_anchor,
|
||||||
|
6: y_anchor,
|
||||||
|
7: direction,
|
||||||
|
8: line_spacing,
|
||||||
|
9: inverted,
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -87,9 +90,13 @@ class Oled(Extension):
|
|||||||
label.Label(
|
label.Label(
|
||||||
terminalio.FONT,
|
terminalio.FONT,
|
||||||
text=view[0],
|
text=view[0],
|
||||||
color=0xFFFFFF,
|
color=0xFFFFFF if view[9] == False else 0x000000,
|
||||||
x=view[1],
|
background_color=0x000000 if view[9] == False else 0xFFFFFF,
|
||||||
y=view[2] + DISPLAY_OFFSET,
|
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:
|
elif view[4] == OledEntryType.IMG:
|
||||||
@ -98,7 +105,7 @@ class Oled(Extension):
|
|||||||
view[0],
|
view[0],
|
||||||
pixel_shader=view[0].pixel_shader,
|
pixel_shader=view[0].pixel_shader,
|
||||||
x=view[1],
|
x=view[1],
|
||||||
y=view[2] + DISPLAY_OFFSET,
|
y=view[2],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user