by roundabout, Tuesday, 6 October 2026, 15:38:31 (1791301111), pushed by roundabout, Tuesday, 6 October 2026, 15:38:34 (1791301114)
Author identity: Vlad <vlad.muntoiu@gmail.com>
3dcb54067ed40cd4554820e257dd8fd053ae3cd7
main.py
@@ -349,6 +349,8 @@ class Kineboard(Gtk.Application):
self.depress_feedback = None
self.change_feedback = None
self.release_feedback = None
self.shift_feedback = None
self.unshift_feedback = None
self.xkb_context = xkb.Context()
self.revealer = None
self.switcher = None
@@ -402,6 +404,8 @@ class Kineboard(Gtk.Application):
self.depress_feedback = Lfb.Event.new("key-pressed")
self.change_feedback = Lfb.Event.new("key-changed")
self.release_feedback = Lfb.Event.new("key-released")
self.shift_feedback = Lfb.Event.new("button-pressed")
self.unshift_feedback = Lfb.Event.new("button-released")
self.display = Gdk.Display.get_default()
self.window = Gtk.Window(application=self, title="Demo", focus_on_click=False, focusable=False, can_focus=False)
Gtk4LayerShell.init_for_window(self.window)
@@ -459,13 +463,26 @@ class Kineboard(Gtk.Application):
controls.append(shift_button)
def shift(button: Gtk.ToggleButton):
if button.get_active():
if self.shift_feedback:
self.shift_feedback.trigger_feedback()
else:
if self.unshift_feedback:
self.unshift_feedback.trigger_feedback()
stack.set_visible_child_name(f"plane-{int(button.get_active())}")
shift_button.connect("toggled", shift)
space_bar = Gtk.Button(hexpand=True)
space_bar.update_property([Gtk.AccessibleProperty.LABEL], ["Space"])
space_bar.connect("clicked", lambda x: self.typed(x, " "))
def space(x):
self.typed(x, " ")
if self.unshift_feedback:
self.unshift_feedback.trigger_feedback()
space_bar.connect("clicked", space)
controls.append(space_bar)
backspace_button = Gtk.Button(child=Gtk.Image.new_from_icon_name("edit-clear-symbolic"))
@@ -583,6 +600,8 @@ class Kineboard(Gtk.Application):
if self.vk:
self.vk.key(clock, key, 1)
self.vk.key(clock, key, 0)
if self.unshift_feedback:
self.unshift_feedback.trigger_feedback()
def typed(self, button, characters):
for char in characters: