From 078d6e0cb09cfe2c81b726e6d6c85e6e8ff83972 Mon Sep 17 00:00:00 2001 From: Kaapra Date: Mon, 15 Jun 2026 09:42:42 -0400 Subject: [PATCH 01/10] Integrate Wooting analog-keyboard support into TachyPy - Add tachypy.feedback: keyboard-agnostic visual pressure-feedback engine, mixin, state machine, scale mapper, widget ABC, InteractiveFixationCross - Add tachypy.wooting facade: enriched WOOTING_ACQUISITION (base + mixin), re-exports, and ported visual demos (fixation, mini-bw) - Expose WOOTING_ACQUISITION at top level via lazy __getattr__ (extra-gated) - Add [wooting] extra + demo entry points; docs/wooting.rst + api autodoc - Port feedback tests to tachypy/tests/test_feedback.py Co-Authored-By: Claude Opus 4.8 --- docs/api.rst | 10 + docs/getting_started.rst | 3 + docs/gifs/wooting-mini-bw-experiment.gif | Bin 0 -> 39659 bytes docs/gifs/wooting-visual-fixation-demo.gif | Bin 0 -> 605955 bytes docs/index.rst | 1 + docs/wooting.rst | 151 ++++++ setup.py | 9 +- src/tachypy/__init__.py | 23 + src/tachypy/feedback/__init__.py | 29 + src/tachypy/feedback/engine.py | 138 +++++ src/tachypy/feedback/fixation.py | 379 +++++++++++++ src/tachypy/feedback/mapping.py | 76 +++ src/tachypy/feedback/mixin.py | 171 ++++++ src/tachypy/feedback/source.py | 38 ++ src/tachypy/feedback/state.py | 163 ++++++ src/tachypy/feedback/widgets.py | 32 ++ src/tachypy/wooting/__init__.py | 55 ++ src/tachypy/wooting/demos/__init__.py | 8 + .../wooting/demos/mini_bw_experiment.py | 140 +++++ .../wooting/demos/visual_fixation_demo.py | 489 +++++++++++++++++ tests/test_feedback.py | 502 ++++++++++++++++++ 21 files changed, 2415 insertions(+), 2 deletions(-) create mode 100644 docs/gifs/wooting-mini-bw-experiment.gif create mode 100644 docs/gifs/wooting-visual-fixation-demo.gif create mode 100644 docs/wooting.rst create mode 100644 src/tachypy/feedback/__init__.py create mode 100644 src/tachypy/feedback/engine.py create mode 100644 src/tachypy/feedback/fixation.py create mode 100644 src/tachypy/feedback/mapping.py create mode 100644 src/tachypy/feedback/mixin.py create mode 100644 src/tachypy/feedback/source.py create mode 100644 src/tachypy/feedback/state.py create mode 100644 src/tachypy/feedback/widgets.py create mode 100644 src/tachypy/wooting/__init__.py create mode 100644 src/tachypy/wooting/demos/__init__.py create mode 100644 src/tachypy/wooting/demos/mini_bw_experiment.py create mode 100644 src/tachypy/wooting/demos/visual_fixation_demo.py create mode 100644 tests/test_feedback.py diff --git a/docs/api.rst b/docs/api.rst index 7007a69..0dd48a6 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -34,3 +34,13 @@ Core modules .. automodule:: tachypy.psychophysics :members: + +Wooting pressure feedback +------------------------- + +Keyboard-agnostic visual feedback toolkit (see :doc:`wooting`). These modules +never import a keyboard package; they render feedback for any object satisfying +:class:`tachypy.feedback.PressureSource`. + +.. automodule:: tachypy.feedback + :members: diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 2cda276..e4afc56 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -28,6 +28,9 @@ Optional extras pip install -e ".[test]" # pytest, coverage, lint tooling pip install -e ".[text]" # Pillow text fallback pip install -e ".[audio_sd]" # sounddevice backend + pip install -e ".[wooting]" # Wooting analog-keyboard integration + +See :doc:`wooting` for the Wooting analog-keyboard integration. Minimal loop ------------ diff --git a/docs/gifs/wooting-mini-bw-experiment.gif b/docs/gifs/wooting-mini-bw-experiment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4682a79b914aae0a8c245adf600d2448bf067379 GIT binary patch literal 39659 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%0D{O1)6-?^>*4E+G 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 W_g4RLQGd_se;>)8&gu^fTK@ov={Q~h literal 0 HcmV?d00001 diff --git a/docs/gifs/wooting-visual-fixation-demo.gif b/docs/gifs/wooting-visual-fixation-demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..b892402f5179f249e61df335484f1787e98f3a30 GIT binary patch literal 605955 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

c$6_3hH9gCrvRm&QjGEmhe{(n*bb^!C;lLf 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Á}QdyY&t|ItZGB8B6TBnV`IRG;E? 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

H-)C3D{o#gX%mPwWsqU5 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%0DZe^vU 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 literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index d763a18..17f1975 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,6 +13,7 @@ abstractions for display/input, and helper utilities for experiment workflows. timing_validation text_rendering audio + wooting examples contributing diff --git a/docs/wooting.rst b/docs/wooting.rst new file mode 100644 index 0000000..026509f --- /dev/null +++ b/docs/wooting.rst @@ -0,0 +1,151 @@ +Wooting Analog Keyboards +======================== + +TachyPy integrates with **tachywooting**, a hardware toolbox for Wooting analog +keyboards (analog pressure acquisition, +hierarchical HDF5 logging, light-press / release readiness checks). The hardware +toolbox is usable on its own; this page documents only what becomes available +**inside TachyPy** once the integration is installed — chiefly on-screen visual +pressure feedback. For the full keyboard/logging reference, see tachywooting's own +documentation. + +Installation +------------ + +The integration ships as an optional extra. It pulls ``tachywooting`` and exposes +the keyboard through the top-level ``tachypy`` namespace: + +.. code-block:: bash + + pip install "tachypy[wooting]" + +(See `First-time setup`_ below for the one-time native/permissions step.) + +One import surface +------------------ + +The enriched ``WOOTING_ACQUISITION`` — the hardware acquisition class plus TachyPy +visual feedback — is available straight from the top-level package: + +.. code-block:: python + + from tachypy import WOOTING_ACQUISITION # keyboard + visual feedback + +You never import ``tachywooting`` directly. ``WOOTING_ACQUISITION`` is the only +keyboard symbol exposed at the top level (it is the common entry point and its +name is unambiguous). The rest of the keyboard surface — the helpers +(``convert_char_to_keycode``, ``load_trial``, ``load_session``, +``trial_to_dataframe``, ``visualize``, ``visualize_all_keys``) and the low-level +CFFI handles ``lib`` and ``ffi`` — lives under :mod:`tachypy.wooting`: + +.. code-block:: python + + from tachypy.wooting import visualize, load_trial, convert_char_to_keycode + +First-time setup +---------------- + +The first time you create a ``WOOTING_ACQUISITION``, TachyPy builds the native +interface automatically if it is missing (this needs only a C compiler, no admin +rights). The Wooting **SDK plugins and input permissions**, however, require a +one-time privileged step: + +.. code-block:: bash + + wooting-build-interface # installs SDK plugins + permissions (needs admin) + +If the keyboard is not detected, the error message tells you exactly to run this +command — you do not have to remember it. + +Basic keyboard use +------------------ + +The enriched class behaves exactly like the hardware acquisition class for +acquisition and logging: + +.. code-block:: python + + from tachypy import WOOTING_ACQUISITION + + acq = WOOTING_ACQUISITION(threshold=0.8) + acq.initialize_keyboard(verbose=True) + try: + # Instantaneous analog pressure (0.0–1.0) of one or more keys + print(acq.read_pressure("C")) + print(acq.read_pressures(["C", "Z"])) + + # Block until keys are held in the light-press range (no display needed) + acq.wait_keys_light_press(target_keys=["C", "Z"], quit_key="Q") + + # Record an analog trial and write it to an HDF5 shard + acq.setup_logging(name="tracking", path="logs", int_analog=2) + trial = acq.acquire_analog_values(target_keys=["C", "Z"]) + finally: + acq.uninitialize_keyboard() + +Visual pressure feedback +------------------------ + +``wait_light_press_visual`` shows an interactive fixation cross while waiting for +two keys to stay within the light-press interval for ``hold_seconds``. It needs a +TachyPy :class:`~tachypy.Screen`; pass a :class:`~tachypy.ResponseHandler` to allow +the participant to abort: + +.. code-block:: python + + from tachypy import Screen, ResponseHandler, FixationCross + from tachypy import WOOTING_ACQUISITION + + acq = WOOTING_ACQUISITION(threshold=0.8, min_pressure_start=0.33, max_pressure_start=0.66) + acq.initialize_keyboard() + + screen = Screen(fullscreen=False) + rh = ResponseHandler(screen=screen) + fixation = FixationCross(center=(screen.width // 2, screen.height // 2), + half_width=18, half_height=18, thickness=8, color=(0, 0, 0)) + + ready = acq.wait_light_press_visual( + target_keys=["c", "z"], + screen=screen, + response_handler=rh, + fixation_cross=fixation, # geometry + color copied automatically + show_pressure_text=True, + show_goal_markers=True, + ) + +The horizontal bar grows and shrinks with pressure, turns toward the target color +as the hold completes, and (optionally) shows live pressure values for keys that +fall outside the acceptable interval. + +.. image:: gifs/wooting-visual-fixation-demo.gif + :alt: Interactive fixation cross with real-time pressure feedback + :width: 100% + +Custom widgets (advanced) +------------------------- + +``wait_light_press_visual`` builds an +:class:`~tachypy.feedback.InteractiveFixationCross` by default. To render feedback +differently, subclass :class:`~tachypy.feedback.PressureFeedbackWidget` and pass it +via ``widget=``. The pressure state machine +(:class:`~tachypy.feedback.PressureFeedbackState`) and the pressure-to-scale mapper +(:class:`~tachypy.feedback.PressureScaleMapper`) are reusable building blocks. See +:doc:`api` for the full ``tachypy.feedback`` reference. + +These tools are keyboard-agnostic: any object exposing the +:class:`~tachypy.feedback.PressureSource` contract (``read_pressures`` plus the +light-press thresholds) can drive the same feedback loop. + +Console demos +------------- + +The integration installs two on-screen demos (they require a display): + +.. code-block:: bash + + tachypy-wooting-fixation-demo # gamified interactive fixation cross + tachypy-wooting-mini-bw # minimal black/white response experiment + +.. image:: gifs/wooting-mini-bw-experiment.gif + :alt: Minimal black/white response experiment + :width: 100% diff --git a/setup.py b/setup.py index 56ec5f1..8e4d32d 100644 --- a/setup.py +++ b/setup.py @@ -9,12 +9,15 @@ setup( name='tachypy', - version='0.1.15', + version='0.1.17', packages=find_packages(where='src'), package_dir={'': 'src'}, install_requires=requires, + extras_require={ + 'wooting': ['tachywooting>=0.2.0'], + }, python_requires='>=3.6', - author='Ian Charest and Frederic Gosselin', + author='Ian Charest, Mathias Salvas-Hebert and Frederic Gosselin', author_email='charest.ian@gmail.com', description='A package for timing-focused psychophysics using GLFW and OpenGL.', long_description=open('README.md').read(), @@ -33,6 +36,8 @@ entry_points={ 'console_scripts': [ 'tachypy-clock-demo=tachypy.examples.clock_timer_demo:main', + 'tachypy-wooting-fixation-demo=tachypy.wooting.demos.visual_fixation_demo:main', + 'tachypy-wooting-mini-bw=tachypy.wooting.demos.mini_bw_experiment:main', ], }, ) diff --git a/src/tachypy/__init__.py b/src/tachypy/__init__.py index fffe331..173e28c 100644 --- a/src/tachypy/__init__.py +++ b/src/tachypy/__init__.py @@ -40,6 +40,13 @@ "location_bubbles", "Audio", "QuestObject", + "PressureFeedbackWidget", + "InteractiveFixationCross", + "PressureFeedbackState", + "PressureFeedbackConfig", + "PressureScaleMapper", + "PressureSource", + "VisualPressureFeedbackMixin", ] @@ -81,6 +88,22 @@ "location_bubbles": ("tachypy.psychophysics", "location_bubbles"), "Audio": ("tachypy.audio", "Audio"), "QuestObject": ("tachypy.quest", "QuestObject"), + "PressureFeedbackWidget": ("tachypy.feedback", "PressureFeedbackWidget"), + "InteractiveFixationCross": ("tachypy.feedback", "InteractiveFixationCross"), + "PressureFeedbackState": ("tachypy.feedback", "PressureFeedbackState"), + "PressureFeedbackConfig": ("tachypy.feedback", "PressureFeedbackConfig"), + "PressureScaleMapper": ("tachypy.feedback", "PressureScaleMapper"), + "PressureSource": ("tachypy.feedback", "PressureSource"), + "VisualPressureFeedbackMixin": ("tachypy.feedback", "VisualPressureFeedbackMixin"), + # Wooting keyboard integration — convenience shortcut for the one distinctive, + # high-frequency entry point: `from tachypy import WOOTING_ACQUISITION`. + # Resolved lazily from the `tachypy.wooting` facade, which requires the + # `tachypy[wooting]` extra (a clear ImportError is raised otherwise). Kept out + # of `__all__` so tachypy core stays keyboard-agnostic and doc builds / `import *` + # never pull in tachywooting. Generic helpers (visualize, load_trial, lib, ffi, …) + # are intentionally NOT aliased here — they live under `tachypy.wooting` to keep + # the top-level namespace unambiguous and collision-free for future devices. + "WOOTING_ACQUISITION": ("tachypy.wooting", "WOOTING_ACQUISITION"), } diff --git a/src/tachypy/feedback/__init__.py b/src/tachypy/feedback/__init__.py new file mode 100644 index 0000000..f510d7f --- /dev/null +++ b/src/tachypy/feedback/__init__.py @@ -0,0 +1,29 @@ +"""Visual pressure-feedback toolkit for analog keyboards. + +This subpackage is keyboard-agnostic: it renders feedback for any object that +satisfies :class:`PressureSource` (it never imports a keyboard package). Most +users do not import from here directly — they call ``wait_light_press_visual`` +on an acquisition class enriched with :class:`VisualPressureFeedbackMixin` +(see :mod:`tachypy.wooting`). The building blocks below are exposed for power +users who want custom widgets or to drive the loop manually. +""" +from .engine import DEFAULT_EXIT_KEYS, run_light_press_visual +from .fixation import InteractiveFixationCross +from .mapping import PressureScaleMapper +from .mixin import VisualPressureFeedbackMixin +from .source import PressureSource +from .state import PressureFeedbackConfig, PressureFeedbackState, PressureStatus +from .widgets import PressureFeedbackWidget + +__all__ = [ + "DEFAULT_EXIT_KEYS", + "InteractiveFixationCross", + "PressureFeedbackConfig", + "PressureFeedbackState", + "PressureFeedbackWidget", + "PressureScaleMapper", + "PressureSource", + "PressureStatus", + "VisualPressureFeedbackMixin", + "run_light_press_visual", +] diff --git a/src/tachypy/feedback/engine.py b/src/tachypy/feedback/engine.py new file mode 100644 index 0000000..8aa3e31 --- /dev/null +++ b/src/tachypy/feedback/engine.py @@ -0,0 +1,138 @@ +"""Keyboard-agnostic visual pressure-feedback loop. + +This module owns the render loop only. It never imports any keyboard package: +pressures are supplied through a ``read_pair`` callable, and timing can be +delegated to an injected ``wait_until`` (the keyboard's precise sleep) or falls +back to a portable default. +""" +from __future__ import annotations + +import time +from typing import Callable, Sequence + +from .state import PressureFeedbackState +from .widgets import PressureFeedbackWidget + +DEFAULT_EXIT_KEYS: tuple[str, ...] = ("escape", "esc", "enter", "return", "space", "q") + +_TICK_INTERVAL = 1.0 / 1000.0 # 1000 Hz polling + + +def _exit_requested(response_handler, exit_keys: set[str]) -> bool: + """Return True when the user requested an exit through a response handler. + + Works with any TachyPy ``ResponseHandler``-like object (duck-typed): it may + expose ``get_events``, ``should_quit`` and ``get_key_presses``. + """ + if response_handler is None: + return False + if hasattr(response_handler, "get_events"): + response_handler.get_events() + if hasattr(response_handler, "should_quit") and response_handler.should_quit(): + return True + if not hasattr(response_handler, "get_key_presses"): + return False + for event in response_handler.get_key_presses(): + if event.get("type") == "keydown" and str(event.get("key", "")).lower() in exit_keys: + return True + return False + + +def _default_wait_until(next_t: float) -> None: + remaining = next_t - time.perf_counter() + if remaining > 0: + time.sleep(remaining) + + +def run_light_press_visual( + *, + read_pair: Callable[[], tuple[float, float]], + state: PressureFeedbackState, + widget: PressureFeedbackWidget, + screen, + response_handler=None, + exit_keys: Sequence[str] = DEFAULT_EXIT_KEYS, + overlay_drawables: Sequence[object] | None = None, + background_color=(128, 128, 128), + timeout_seconds: float | None = None, + wait_until: Callable[[float], None] | None = None, + verbose: bool = False, +) -> bool: + """Run the visual light-press feedback loop until ready or aborted. + + Parameters + ---------- + read_pair : callable + Zero-argument callable returning ``(left_pressure, right_pressure)``. + state : PressureFeedbackState + Feedback state machine to drive each frame. + widget : PressureFeedbackWidget + Widget updated and drawn each frame. + screen : object + TachyPy ``Screen``-like object. Must expose ``flip()``; if it exposes + ``fill(color)``, the screen is cleared with ``background_color``. + response_handler : object, optional + ``ResponseHandler``-like object. Exit and quit requests return ``False``. + exit_keys : sequence of str + Keys that abort the wait when ``response_handler`` is active. + overlay_drawables : sequence, optional + Objects with ``.draw()`` called each frame after the widget. + background_color : tuple or callable + RGB color (or callable returning one) used to clear the screen. + timeout_seconds : float, optional + Maximum wait time. Raises ``TimeoutError`` if exceeded. + wait_until : callable, optional + ``wait_until(next_t)`` used to pace the loop. Defaults to a portable + sleep; pass a keyboard's precise tick for tighter timing. + verbose : bool, default=False + Reserved for future logging hooks. + + Returns + ------- + bool + ``True`` when both keys were held in range for the hold duration. + ``False`` when the user exits via ``response_handler``. + """ + if not hasattr(screen, "flip"): + raise AttributeError("screen must expose flip()") + wait_until = _default_wait_until if wait_until is None else wait_until + + exit_key_set = {str(key).lower() for key in exit_keys} + if response_handler is not None and hasattr(response_handler, "keys_to_listen"): + response_handler.keys_to_listen = sorted(exit_key_set) + if hasattr(response_handler, "_probed_keys"): + response_handler._probed_keys.update(exit_key_set) + + next_t = time.perf_counter() + deadline = None if timeout_seconds is None else next_t + timeout_seconds + + while True: + now = time.perf_counter() + if deadline is not None and now >= deadline: + raise TimeoutError("run_light_press_visual: timeout exceeded") + if _exit_requested(response_handler, exit_key_set): + return False + + frame_background_color = background_color() if callable(background_color) else background_color + if hasattr(screen, "fill"): + screen.fill(frame_background_color) + + left, right = read_pair() + state.update(left_pressure=float(left), right_pressure=float(right), now=now) + + widget.update(state) + widget.draw() + if overlay_drawables: + for drawable in overlay_drawables: + drawable.draw() + + screen.flip() + + if state.is_ready: + return True + + next_t += _TICK_INTERVAL + now2 = time.perf_counter() + if next_t < (now2 - 0.10): + next_t = now2 + _TICK_INTERVAL + wait_until(next_t) diff --git a/src/tachypy/feedback/fixation.py b/src/tachypy/feedback/fixation.py new file mode 100644 index 0000000..d11437f --- /dev/null +++ b/src/tachypy/feedback/fixation.py @@ -0,0 +1,379 @@ +from __future__ import annotations + +from .state import PressureFeedbackState +from .widgets import PressureFeedbackWidget + + +class InteractiveFixationCross(PressureFeedbackWidget): + def __init__( + self, + # Required TachyPy context + screen, + # Manual fixation-cross geometry + center=None, + half_width: float = 8.0, + half_height: float = 8.0, + thickness: float = 1.0, + # Visual colors + initial_color=(100, 100, 100), + target_color=(0, 0, 0), + vertical_color=None, + background_color=(128, 128, 128), + # Optional objects used to simplify setup + fixation_cross=None, + acquisition=None, + # Optional goal markers (thin vertical ticks at ±half_width) + show_goal_markers: bool | float = False, + # Optional real-time pressure text + show_pressure_text: bool = False, + left_pressure_label: str = "", + right_pressure_label: str = "", + pressure_text_color=None, + pressure_text_font_size: int | None = None, + pressure_text_width: float | None = None, + pressure_text_height: float | None = None, + pressure_text_gap: float = 10.0, + pressure_text_decimals: int = 2, + pressure_text_font_name: str | None = None, + ): + """ + Create an interactive TachyPy fixation cross for visual pressure feedback. + + This widget can be configured manually, or it can reuse values from + existing objects to reduce duplicated setup in experiments. + + Values taken from `screen` + -------------------------- + `screen` is required because TachyPy drawing needs an active screen. + If `center` is not provided and no `fixation_cross` is provided, the + widget centers itself from `screen.width` / `screen.height` (or `w` / `h` + if those names are used by the screen object). + + Values taken from `fixation_cross` + ---------------------------------- + Pass an existing TachyPy `FixationCross` when you already created one + for the experiment and want this widget to match it. The widget copies: + + - `center` -> widget center + - `half_width` -> horizontal half-size + - `half_height` -> vertical half-size + - `thickness` -> line thickness + - `color` -> `target_color` + + These copied values override the constructor defaults. Manual values are + used only when the existing fixation cross does not expose the matching + attribute. + + Values taken from `acquisition` + ------------------------------- + Pass a keyboard acquisition instance when the widget should be tied to + the same object that owns the pressure configuration. The widget stores: + + - `min_pressure_start` + - `max_pressure_start` + - `threshold` + - `hold_seconds` + + These values are kept on the widget for inspection and consistency with + `wait_light_press_visual()`. The actual real-time pressure state is + still provided through `update(state)`. + + Pressure text + ------------- + If `show_pressure_text=True`, TachyPy `Text` objects are shown above the + cross only for keys currently outside the acceptable pressure interval. + Text size and box dimensions scale from the fixation cross size unless + `pressure_text_font_size`, `pressure_text_width`, or + `pressure_text_height` are provided explicitly. + """ + if fixation_cross is not None: + center = self._as_tuple(getattr(fixation_cross, "center", center)) + half_width = getattr(fixation_cross, "half_width", half_width) + half_height = getattr(fixation_cross, "half_height", half_height) + thickness = getattr(fixation_cross, "thickness", thickness) + target_color = getattr(fixation_cross, "color", target_color) + + initial_color = self._as_rgb_color(initial_color, "initial_color") + target_color = self._as_rgb_color(target_color, "target_color") + background_color = self._as_rgb_color(background_color, "background_color") + vertical_color = target_color if vertical_color is None else self._as_rgb_color(vertical_color, "vertical_color") + pressure_text_color = ( + None if pressure_text_color is None else self._as_rgb_color(pressure_text_color, "pressure_text_color") + ) + + if initial_color == background_color: + raise ValueError("initial_color must differ from background_color") + if half_width <= 0 or half_height <= 0 or thickness <= 0: + raise ValueError("half_width, half_height, and thickness must be positive") + + # OpenGL drawing primitives are imported lazily so the feedback package + # (and its pure-logic classes) stays importable in headless environments. + from tachypy import Line + if show_pressure_text: + from tachypy import Text + else: + Text = None + + self._set_tachypy_context(screen=screen, line_cls=Line, text_cls=Text) + self._set_acquisition_context(acquisition) + self._set_geometry(center=center, half_width=half_width, half_height=half_height, thickness=thickness) + self._set_colors( + initial_color=initial_color, + target_color=target_color, + vertical_color=vertical_color, + background_color=background_color, + ) + self._set_pressure_text( + show_pressure_text=show_pressure_text, + left_pressure_label=left_pressure_label, + right_pressure_label=right_pressure_label, + pressure_text_color=pressure_text_color, + pressure_text_font_size=pressure_text_font_size, + pressure_text_width=pressure_text_width, + pressure_text_height=pressure_text_height, + pressure_text_gap=pressure_text_gap, + pressure_text_decimals=pressure_text_decimals, + pressure_text_font_name=pressure_text_font_name, + ) + self.show_goal_markers = bool(show_goal_markers) + self._reset_runtime_state() + + def _set_tachypy_context(self, screen, line_cls, text_cls) -> None: + self.screen = screen + self._line_cls = line_cls + self._text_cls = text_cls + + def _set_acquisition_context(self, acquisition) -> None: + self.acquisition = acquisition + self.min_pressure_start = getattr(acquisition, "min_pressure_start", None) + self.max_pressure_start = getattr(acquisition, "max_pressure_start", None) + self.threshold = getattr(acquisition, "threshold", None) + self.hold_seconds = getattr(acquisition, "hold_seconds", None) + + def _set_geometry(self, center, half_width: float, half_height: float, thickness: float) -> None: + self.center = center + self.half_width = float(half_width) + self.half_height = float(half_height) + self.thickness = float(thickness) + + def _set_colors(self, initial_color, target_color, vertical_color, background_color) -> None: + self.initial_color = initial_color + self.target_color = target_color + self.vertical_color = vertical_color + self.background_color = background_color + + def _set_pressure_text( + self, + show_pressure_text: bool, + left_pressure_label: str, + right_pressure_label: str, + pressure_text_color, + pressure_text_font_size: int | None, + pressure_text_width: float | None, + pressure_text_height: float | None, + pressure_text_gap: float, + pressure_text_decimals: int, + pressure_text_font_name: str | None = None, + ) -> None: + self.show_pressure_text = bool(show_pressure_text) + self.left_pressure_label = str(left_pressure_label) + self.right_pressure_label = str(right_pressure_label) + self.pressure_text_color = tuple(pressure_text_color or self.target_color) + self.pressure_text_font_size = int(pressure_text_font_size or self._auto_text_font_size()) + self.pressure_text_width = float(pressure_text_width or self._auto_text_width()) + self.pressure_text_height = float(pressure_text_height or self._auto_text_height()) + self.pressure_text_gap = float(pressure_text_gap) + self.pressure_text_decimals = int(pressure_text_decimals) + self.pressure_text_font_name = pressure_text_font_name + + def _reset_runtime_state(self) -> None: + self.left_pressure = 0.0 + self.right_pressure = 0.0 + self.left_status = "too_weak" + self.right_status = "too_weak" + self.left_scale = 1.0 + self.right_scale = 1.0 + self.color = self.initial_color + self._left_line = None + self._right_line = None + self._vertical_line = None + self._left_marker = None + self._right_marker = None + self._left_text = None + self._right_text = None + + def update(self, state: PressureFeedbackState) -> None: + """Update the widget from a pressure feedback state. + + Parameters + ---------- + state : PressureFeedbackState + Latest pressure feedback state. The widget copies pressure values, + statuses, scales, and hold progress from this object. + + Returns + ------- + None + The widget state is updated in place. + """ + self.left_pressure = state.left_pressure + self.right_pressure = state.right_pressure + self.left_status = state.left_status + self.right_status = state.right_status + self.left_scale = state.left_scale + self.right_scale = state.right_scale + self.color = self._lerp_color(self.initial_color, self.target_color, state.hold_progress) + + def draw(self) -> None: + """Draw the interactive fixation cross and optional pressure text. + + Notes + ----- + The vertical line is always drawn. A horizontal side with scale ``0`` is + hidden, which corresponds to no detected pressure on that side. + """ + center_x, center_y = self._center() + left_x = center_x - self.half_width * self.left_scale + right_x = center_x + self.half_width * self.right_scale + top_y = center_y + self.half_height + bottom_y = center_y - self.half_height + + if self.show_goal_markers: + self._draw_goal_markers(center_x, center_y) + if self.left_scale > 0.0: + self._draw_line("_left_line", (left_x, center_y), (center_x, center_y), self.color) + if self.right_scale > 0.0: + self._draw_line("_right_line", (center_x, center_y), (right_x, center_y), self.color) + self._draw_line( + "_vertical_line", + (center_x, bottom_y), + (center_x, top_y), + self.vertical_color or self.color, + ) + if self.show_pressure_text and (self.left_status != "ideal" or self.right_status != "ideal"): + self._draw_pressure_text(center_x, top_y) + + def _center(self): + if self.center is not None: + return self.center + width = getattr(self.screen, "width", getattr(self.screen, "w", 0)) + height = getattr(self.screen, "height", getattr(self.screen, "h", 0)) + return width / 2, height / 2 + + def _draw_line(self, attr_name: str, start, end, color, thickness: float | None = None) -> None: + t = self.thickness if thickness is None else thickness + line = getattr(self, attr_name) + if line is None: + line = self._line_cls(start_point=start, end_point=end, thickness=t, color=color) + setattr(self, attr_name, line) + else: + line.set_start_point(start) + line.set_end_point(end) + line.set_color(color) + line.set_thickness(t) + line.draw() + + def _draw_goal_markers(self, center_x: float, center_y: float) -> None: + SIZE_FACTOR = 0.33 + marker_width = max(1.0, self.thickness * SIZE_FACTOR) + left_marker_x = center_x - self.half_width + right_marker_x = center_x + self.half_width + self._draw_line( + "_left_marker", + (left_marker_x - marker_width, center_y), + (left_marker_x, center_y), + self.target_color, + thickness=self.thickness, + ) + self._draw_line( + "_right_marker", + (right_marker_x, center_y), + (right_marker_x + marker_width, center_y), + self.target_color, + thickness=self.thickness, + ) + + def _draw_pressure_text(self, center_x: float, top_y: float) -> None: + text_y1 = top_y + self.pressure_text_gap + text_y2 = text_y1 + self.pressure_text_height + left_rect = ( + center_x - self.half_width - self.pressure_text_width, + text_y1, + center_x - self.half_width, + text_y2, + ) + right_rect = ( + center_x + self.half_width, + text_y1, + center_x + self.half_width + self.pressure_text_width, + text_y2, + ) + + if self.left_status != "ideal": + left_text = self._format_pressure(self.left_pressure_label, self.left_pressure) + self._left_text = self._draw_text(self._left_text, left_text, left_rect) + if self.right_status != "ideal": + right_text = self._format_pressure(self.right_pressure_label, self.right_pressure) + self._right_text = self._draw_text(self._right_text, right_text, right_rect) + + def _draw_text(self, text_obj, text: str, dest_rect): + if text_obj is None: + kwargs = { + "text": text, + "font_size": self.pressure_text_font_size, + "color": self.pressure_text_color, + "dest_rect": dest_rect, + } + if self.pressure_text_font_name is not None: + kwargs["font_name"] = self.pressure_text_font_name + text_obj = self._text_cls(**kwargs) + else: + text_obj.set_dest_rect(dest_rect) + if text_obj.text != text: + text_obj.set_text(text) + text_obj.draw() + return text_obj + + def _format_pressure(self, label: str, pressure: float) -> str: + prefix = f"{label}: " if label else "" + return f"{prefix}{pressure:.{self.pressure_text_decimals}f}" + + def _screen_min(self) -> float: + width = float(getattr(self.screen, "width", getattr(self.screen, "w", 1024))) + height = float(getattr(self.screen, "height", getattr(self.screen, "h", 768))) + return min(width, height) + + def _auto_text_font_size(self) -> int: + return max(12, int(round(self._screen_min() * 0.012))) + + def _auto_text_width(self) -> float: + return max(48.0, self._screen_min() * 0.055) + + def _auto_text_height(self) -> float: + return max(20.0, self.pressure_text_font_size * 1.5) + + @staticmethod + def _lerp_color(start, end, progress: float): + progress = max(0.0, min(1.0, float(progress))) + return tuple( + int(round(float(s) + (float(e) - float(s)) * progress)) + for s, e in zip(start, end) + ) + + @staticmethod + def _as_tuple(value): + if value is None: + return None + return tuple(float(item) for item in value) + + @staticmethod + def _as_rgb_color(value, name: str): + try: + color = tuple(int(round(float(channel))) for channel in value) + except TypeError as exc: + raise ValueError(f"{name} must be an RGB sequence") from exc + if len(color) != 3: + raise ValueError(f"{name} must contain exactly 3 RGB channels") + if any(channel < 0 or channel > 255 for channel in color): + raise ValueError(f"{name} RGB channels must be between 0 and 255") + return color diff --git a/src/tachypy/feedback/mapping.py b/src/tachypy/feedback/mapping.py new file mode 100644 index 0000000..46b9900 --- /dev/null +++ b/src/tachypy/feedback/mapping.py @@ -0,0 +1,76 @@ +from __future__ import annotations + +from dataclasses import dataclass + + +@dataclass(frozen=True) +class PressureScaleMapper: + """Map analog pressure values to visual scale factors. + + Parameters + ---------- + min_scale : float, default=0.25 + Scale used for the weakest non-zero pressure. + normal_scale : float, default=1.0 + Scale used when pressure is inside the accepted range. + max_scale : float, default=2.0 + Maximum scale used for strong over-pressure. + + Notes + ----- + A pressure value of exactly ``0.0`` maps to ``0.0`` so the corresponding + horizontal line segment can be hidden entirely. + """ + + min_scale: float = 0.25 + normal_scale: float = 1.0 + max_scale: float = 2.0 + + def __post_init__(self) -> None: + if not (0 < self.min_scale <= self.normal_scale <= self.max_scale): + raise ValueError("Require 0 < min_scale <= normal_scale <= max_scale") + + def map( + self, + pressure: float, + min_pressure_start: float, + max_pressure_start: float, + ) -> float: + """Return the visual scale for one pressure value. + + Parameters + ---------- + pressure : float + Analog pressure in the ``[0, 1]`` range. + min_pressure_start : float + Lower bound of the accepted light-press range. + max_pressure_start : float + Upper bound of the accepted light-press range. + + Returns + ------- + float + Visual scale factor. Returns ``0.0`` when ``pressure`` is exactly + zero, ``normal_scale`` inside the accepted interval, and a clamped + continuous scale outside it. + """ + pressure = max(0.0, min(1.0, float(pressure))) + if pressure == 0.0: + return 0.0 + + if pressure < min_pressure_start: + if min_pressure_start <= 0: + return self.normal_scale + ratio = pressure / min_pressure_start + return self._clamp(self.min_scale + ratio * (self.normal_scale - self.min_scale)) + + if pressure <= max_pressure_start: + return self.normal_scale + + if max_pressure_start >= 1.0: + return self.max_scale + ratio = (pressure - max_pressure_start) / (1.0 - max_pressure_start) + return self._clamp(self.normal_scale + ratio * (self.max_scale - self.normal_scale)) + + def _clamp(self, value: float) -> float: + return max(self.min_scale, min(self.max_scale, float(value))) diff --git a/src/tachypy/feedback/mixin.py b/src/tachypy/feedback/mixin.py new file mode 100644 index 0000000..05e93b2 --- /dev/null +++ b/src/tachypy/feedback/mixin.py @@ -0,0 +1,171 @@ +"""Mixin that grafts visual pressure feedback onto any pressure source. + +Any acquisition class that satisfies :class:`~tachypy.feedback.source.PressureSource` +(reads pressures, exposes the light-press thresholds) becomes able to show +visual feedback simply by mixing this in:: + + class WOOTING_ACQUISITION(BaseWooting, VisualPressureFeedbackMixin): + ... + +The visual logic lives once, in :mod:`tachypy.feedback.engine`. This mixin only +wires the keyboard's pressure reading and config into that engine and builds the +default widget. +""" +from __future__ import annotations + +from typing import Any, Sequence + +from .engine import DEFAULT_EXIT_KEYS, run_light_press_visual +from .fixation import InteractiveFixationCross +from .state import PressureFeedbackConfig, PressureFeedbackState + + +class VisualPressureFeedbackMixin: + """Adds :meth:`wait_light_press_visual` to a :class:`PressureSource`.""" + + def wait_light_press_visual( + self, + target_keys: Sequence[str | int], + screen, + response_handler=None, + fixation_cross=None, + overlay_drawables: Sequence[object] | None = None, + # ── timing ────────────────────────────────────────────────────────── + hold_seconds: float | None = None, + timeout_seconds: float | None = None, + # ── appearance ────────────────────────────────────────────────────── + background_color: tuple[int, int, int] = (128, 128, 128), + initial_color: tuple[int, int, int] | None = None, + show_pressure_text: bool | None = None, + show_goal_markers: bool | None = None, + # ── behaviour ─────────────────────────────────────────────────────── + exit_keys: Sequence[str] = DEFAULT_EXIT_KEYS, + # ── others ────────────────────────────────────────────────────────── + widget: Any | None = None, + verbose: bool = False, + ) -> bool: + """ + Wait for two keys to stay in the light-press range while showing visual feedback. + + Parameters + ---------- + target_keys : sequence of str or int + Exactly two keys. The first controls the left side of the widget, + the second the right side. + screen : TachyPy Screen object + Must expose ``flip()``. If it exposes ``fill(color)``, the screen is + cleared with ``background_color`` each frame. + response_handler : TachyPy ResponseHandler, optional + When provided, quit requests and ``exit_keys`` presses return ``False``. + fixation_cross : TachyPy FixationCross, optional + Existing fixation cross whose geometry and color are copied by the + auto-created widget. Invalid with ``widget``. + overlay_drawables : sequence, optional + Objects with a ``.draw()`` method called each frame after the widget. + hold_seconds : float, optional + Required continuous hold duration. Defaults to ``self.hold_seconds``. + timeout_seconds : float, optional + Maximum wait time. Raises ``TimeoutError`` if exceeded. + background_color : tuple[int, int, int], default=(128, 128, 128) + RGB color used to clear the screen each frame. + initial_color : tuple[int, int, int], optional + Starting color of the horizontal bar. Defaults to ``(100, 100, 100)``. + Invalid with ``widget``. + show_pressure_text : bool, optional + Show real-time pressure values above the cross for out-of-range keys. + Defaults to ``False``. Invalid with ``widget``. + show_goal_markers : bool, optional + Show thin ticks at the target positions. Defaults to ``False``. + Invalid with ``widget``. + exit_keys : sequence of str + Keys that abort the wait when ``response_handler`` is active. + widget : PressureFeedbackWidget, optional + Full custom widget override. When provided, ``fixation_cross``, + ``initial_color``, ``show_pressure_text`` and ``show_goal_markers`` + are invalid. + verbose : bool, default=False + Reserved for future logging hooks. + + Returns + ------- + bool + ``True`` when both keys were held in range for ``hold_seconds``. + ``False`` when the user exits via ``response_handler``. + + Raises + ------ + ValueError + Invalid arguments or incompatible parameter combinations. + TimeoutError + ``timeout_seconds`` exceeded before readiness. + + Examples + -------- + >>> acq.wait_light_press_visual(target_keys=["c", "z"], screen=screen) + + >>> acq.wait_light_press_visual( + ... target_keys=["c", "z"], screen=screen, + ... response_handler=rh, fixation_cross=fixation, + ... ) + """ + if not getattr(self, "initialized", False): + raise ValueError('Keyboard must be initialized through "initialize_keyboard()".') + if timeout_seconds is not None and timeout_seconds <= 0: + raise ValueError("timeout_seconds must be > 0 if provided") + + target_keys = list(target_keys) + if len(target_keys) != 2: + raise ValueError("wait_light_press_visual requires exactly two target keys") + + if widget is not None: + conflicting = [ + name for name, value in ( + ("fixation_cross", fixation_cross), + ("initial_color", initial_color), + ("show_pressure_text", show_pressure_text), + ("show_goal_markers", show_goal_markers), + ) + if value is not None + ] + if conflicting: + raise ValueError( + "Do not pass auto-widget configuration arguments when `widget` is provided: " + f"{', '.join(conflicting)}. Configure the widget directly instead." + ) + + config = PressureFeedbackConfig.from_source(self, hold_seconds=hold_seconds) + if config.hold_seconds <= 0: + raise ValueError("hold_seconds must be > 0") + + if widget is None: + widget = InteractiveFixationCross( + screen=screen, + fixation_cross=fixation_cross, + background_color=background_color, + initial_color=(100, 100, 100) if initial_color is None else initial_color, + acquisition=self, + show_pressure_text=False if show_pressure_text is None else show_pressure_text, + show_goal_markers=False if show_goal_markers is None else show_goal_markers, + ) + + state = PressureFeedbackState(config) + + left_key, right_key = str(target_keys[0]), str(target_keys[1]) + + def _read_pair() -> tuple[float, float]: + pressures = self.read_pressures(target_keys) + return pressures[left_key], pressures[right_key] + + return run_light_press_visual( + read_pair=_read_pair, + state=state, + widget=widget, + screen=screen, + response_handler=response_handler, + exit_keys=exit_keys, + overlay_drawables=overlay_drawables, + background_color=background_color, + timeout_seconds=timeout_seconds, + wait_until=getattr(self, "_wait_until_next_tick", None), + verbose=verbose, + ) diff --git a/src/tachypy/feedback/source.py b/src/tachypy/feedback/source.py new file mode 100644 index 0000000..ebb30b5 --- /dev/null +++ b/src/tachypy/feedback/source.py @@ -0,0 +1,38 @@ +"""Structural contract for objects that provide analog key pressure. + +The feedback engine is keyboard-agnostic: it only needs a way to read pressures +and the light-press thresholds. Any object satisfying :class:`PressureSource` +(for example ``tachywooting.WOOTING_ACQUISITION``) can drive the visual feedback, +without TachyPy ever importing the keyboard package. +""" +from __future__ import annotations + +from typing import Dict, Protocol, Sequence, Union, runtime_checkable + + +@runtime_checkable +class PressureSource(Protocol): + """Minimal interface a keyboard must expose to drive visual feedback. + + Attributes + ---------- + min_pressure_start, max_pressure_start : float + Bounds of the accepted light-press interval. + threshold : float + Response threshold of the acquisition task. + hold_seconds : float + Default continuous-hold duration for readiness checks. + + Methods + ------- + read_pressures(keys) + Return current analog pressures (``[0, 1]``) for the given keys, + as a mapping keyed by ``str(key)`` preserving input order. + """ + + min_pressure_start: float + max_pressure_start: float + threshold: float + hold_seconds: float + + def read_pressures(self, keys: Sequence[Union[str, int]]) -> Dict[str, float]: ... diff --git a/src/tachypy/feedback/state.py b/src/tachypy/feedback/state.py new file mode 100644 index 0000000..f100299 --- /dev/null +++ b/src/tachypy/feedback/state.py @@ -0,0 +1,163 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Literal + +from .mapping import PressureScaleMapper + +PressureStatus = Literal["too_weak", "ideal", "too_strong"] + + +@dataclass(frozen=True) +class PressureFeedbackConfig: + """Configuration for pressure-readiness feedback. + + Parameters + ---------- + min_pressure_start : float, default=0.01 + Lower bound for the accepted light-press interval. + max_pressure_start : float, default=0.35 + Upper bound for the accepted light-press interval. + threshold : float, default=0.8 + Response threshold used by the acquisition task. Must be greater than + ``max_pressure_start``. + hold_seconds : float, default=0.30 + Duration for which both pressures must remain inside the accepted + interval before readiness is reached. + mapper : PressureScaleMapper, optional + Object used to convert pressure values to visual scale factors. + """ + + min_pressure_start: float = 0.01 + max_pressure_start: float = 0.35 + threshold: float = 0.8 + hold_seconds: float = 0.30 + mapper: PressureScaleMapper = field(default_factory=PressureScaleMapper) + + def __post_init__(self) -> None: + if not (0 <= self.min_pressure_start < self.max_pressure_start < self.threshold <= 1): + raise ValueError("Require 0 <= min_pressure_start < max_pressure_start < threshold <= 1") + if self.hold_seconds <= 0: + raise ValueError("hold_seconds must be positive") + + @classmethod + def from_source(cls, source, *, hold_seconds: float | None = None, **overrides): + """Build a config from a :class:`~tachypy.feedback.PressureSource`. + + Parameters + ---------- + source : PressureSource + Object exposing ``min_pressure_start``, ``max_pressure_start``, + ``threshold`` and ``hold_seconds`` (e.g. a keyboard acquisition). + hold_seconds : float, optional + Override the source's ``hold_seconds``. + **overrides + Any other field to override (``mapper``, thresholds, ...). + + Returns + ------- + PressureFeedbackConfig + """ + values = dict( + min_pressure_start=source.min_pressure_start, + max_pressure_start=source.max_pressure_start, + threshold=source.threshold, + hold_seconds=source.hold_seconds if hold_seconds is None else hold_seconds, + ) + values.update(overrides) + return cls(**values) + + +@dataclass +class PressureFeedbackState: + """State machine for real-time pressure feedback. + + Parameters + ---------- + config : PressureFeedbackConfig + Feedback thresholds, hold duration, and pressure-to-scale mapper. + + Attributes + ---------- + left_pressure, right_pressure : float + Most recent pressure values. + left_scale, right_scale : float + Current visual scale values for the left and right horizontal segments. + left_status, right_status : {"too_weak", "ideal", "too_strong"} + Pressure classification for each side. + hold_progress : float + Fraction of the hold duration completed, clamped to ``[0, 1]``. + elapsed_hold_time : float + Seconds spent continuously inside the accepted interval. + is_ready : bool + ``True`` once both pressures have remained ideal for ``hold_seconds``. + + Notes + ----- + This class contains no OpenGL or drawing code. It is pure logic and can be + unit-tested independently. + """ + + config: PressureFeedbackConfig + left_pressure: float = 0.0 + right_pressure: float = 0.0 + left_scale: float = 1.0 + right_scale: float = 1.0 + left_status: PressureStatus = "too_weak" + right_status: PressureStatus = "too_weak" + hold_progress: float = 0.0 + elapsed_hold_time: float = 0.0 + is_ready: bool = False + _hold_started_at: float | None = None + + def update(self, left_pressure: float, right_pressure: float, now: float) -> None: + """Update pressure status, scale, hold timer, and readiness. + + Parameters + ---------- + left_pressure : float + Current pressure for the left monitored key. + right_pressure : float + Current pressure for the right monitored key. + now : float + Current monotonic timestamp, usually from ``time.perf_counter()``. + + Returns + ------- + None + The object is updated in place. + """ + self.left_pressure = float(left_pressure) + self.right_pressure = float(right_pressure) + self.left_status = self._status(self.left_pressure) + self.right_status = self._status(self.right_pressure) + self.left_scale = self.config.mapper.map( + self.left_pressure, + self.config.min_pressure_start, + self.config.max_pressure_start, + ) + self.right_scale = self.config.mapper.map( + self.right_pressure, + self.config.min_pressure_start, + self.config.max_pressure_start, + ) + + if self.left_status == "ideal" and self.right_status == "ideal": + if self._hold_started_at is None: + self._hold_started_at = float(now) + self.elapsed_hold_time = max(0.0, float(now) - self._hold_started_at) + self.hold_progress = min(1.0, self.elapsed_hold_time / self.config.hold_seconds) + self.is_ready = self.hold_progress >= 1.0 + return + + self._hold_started_at = None + self.elapsed_hold_time = 0.0 + self.hold_progress = 0.0 + self.is_ready = False + + def _status(self, pressure: float) -> PressureStatus: + if pressure < self.config.min_pressure_start: + return "too_weak" + if pressure > self.config.max_pressure_start: + return "too_strong" + return "ideal" diff --git a/src/tachypy/feedback/widgets.py b/src/tachypy/feedback/widgets.py new file mode 100644 index 0000000..c76b7b0 --- /dev/null +++ b/src/tachypy/feedback/widgets.py @@ -0,0 +1,32 @@ +from __future__ import annotations + +from abc import ABC, abstractmethod + +from .state import PressureFeedbackState + + +class PressureFeedbackWidget(ABC): + """Abstract drawing interface for pressure feedback widgets. + + Notes + ----- + Widgets consume a :class:`PressureFeedbackState` and render it using a + specific backend. The feedback engine only depends on this interface, so + new visual backends can be added without changing the loop logic. + """ + + @abstractmethod + def update(self, state: PressureFeedbackState) -> None: + """Receive the latest pressure feedback state. + + Parameters + ---------- + state : PressureFeedbackState + Current pressure, scale, status, hold progress, and readiness state. + """ + raise NotImplementedError + + @abstractmethod + def draw(self) -> None: + """Draw the widget using its rendering backend.""" + raise NotImplementedError diff --git a/src/tachypy/wooting/__init__.py b/src/tachypy/wooting/__init__.py new file mode 100644 index 0000000..27b205f --- /dev/null +++ b/src/tachypy/wooting/__init__.py @@ -0,0 +1,55 @@ +"""TachyPy ↔ Wooting integration (requires ``pip install tachypy[wooting]``). + +This module is the single import surface for using a Wooting analog keyboard +*inside* TachyPy experiments. It re-exports tachywooting's public API and adds an +enriched :class:`WOOTING_ACQUISITION` that gains TachyPy visual feedback +(``wait_light_press_visual``) on top of the hardware acquisition class. + +TachyPy core never imports this module, so ``pip install tachypy`` stays usable +without a keyboard. Importing this module without tachywooting installed raises a +clear, actionable error. +""" +from __future__ import annotations + +try: + import tachywooting as _tachywooting +except ImportError as exc: # pragma: no cover - exercised via packaging + raise ImportError( + "The Wooting integration requires the 'tachywooting' package.\n" + "Install it with:\n\n pip install 'tachypy[wooting]'\n" + ) from exc + +from tachypy.feedback import VisualPressureFeedbackMixin + +# Re-export the keyboard's public API so experiments need only one import. +from tachywooting import ( # noqa: F401 + convert_char_to_keycode, + ffi, + lib, + load_session, + load_trial, + trial_to_dataframe, +) +from tachywooting.visualize import visualize, visualize_all_keys # noqa: F401 + + +class WOOTING_ACQUISITION(_tachywooting.WOOTING_ACQUISITION, VisualPressureFeedbackMixin): + """Wooting acquisition enriched with TachyPy visual feedback. + + Identical to :class:`tachywooting.WOOTING_ACQUISITION` (acquisition, logging, + readiness checks) plus :meth:`~tachypy.feedback.VisualPressureFeedbackMixin.wait_light_press_visual` + for on-screen pressure feedback. + """ + + +__all__ = [ + "WOOTING_ACQUISITION", + "convert_char_to_keycode", + "ffi", + "lib", + "load_session", + "load_trial", + "trial_to_dataframe", + "visualize", + "visualize_all_keys", +] diff --git a/src/tachypy/wooting/demos/__init__.py b/src/tachypy/wooting/demos/__init__.py new file mode 100644 index 0000000..ccb4412 --- /dev/null +++ b/src/tachypy/wooting/demos/__init__.py @@ -0,0 +1,8 @@ +"""Visual TachyPy demos for the Wooting keyboard integration. + +These demos require ``pip install tachypy[wooting]`` (they draw on screen and read +analog pressures). Console entry points: + +- ``tachypy-wooting-fixation-demo`` → :func:`visual_fixation_demo.main` +- ``tachypy-wooting-mini-bw`` → :func:`mini_bw_experiment.main` +""" diff --git a/src/tachypy/wooting/demos/mini_bw_experiment.py b/src/tachypy/wooting/demos/mini_bw_experiment.py new file mode 100644 index 0000000..e6e6e7e --- /dev/null +++ b/src/tachypy/wooting/demos/mini_bw_experiment.py @@ -0,0 +1,140 @@ +from __future__ import annotations + +import os +import random +import time + +import numpy as np + +try: + from tachypy import FixationCross, ResponseHandler, Screen, Text, Texture + from tachypy import WOOTING_ACQUISITION +except ImportError as exc: # pragma: no cover + raise SystemExit( + "This demo requires the Wooting integration: pip install 'tachypy[wooting]'" + ) from exc + +N_TRIALS = 20 +YES_KEY = "z" # white response +NO_KEY = "c" # black response +WARN_STREAK = 2 # flag after this many consecutive removals +QUIT_KEYS = {"escape", "esc", "enter", "return", "space", "q"} +BG = (128, 128, 128) + + +def main() -> int: + acq = WOOTING_ACQUISITION(threshold=0.80, light_press_hold_seconds=1, min_pressure_start = 0.33, max_pressure_start = 0.66) + acq.initialize_keyboard() + + screen = None + try: + screen = Screen(fullscreen=False) + screen.hide_mouse() + rh = ResponseHandler(screen=screen) + rh.keys_to_listen = sorted(QUIT_KEYS) + + w, h = screen.width, screen.height + margin = 16 + readiness_fixation = FixationCross( + center=(w // 2, h // 2), + half_width=18, + half_height=18, + thickness=8, + color=(0, 0, 0), + ) + + white_tex = Texture(np.ones((256, 256, 3), dtype=np.uint8) * 255) + black_tex = Texture(np.zeros((256, 256, 3), dtype=np.uint8)) + + label = Text(text=".", font_size=28, color=(0, 0, 0), + dest_rect=(0, margin, w, margin + 44)) + score = Text(text="Score: —", font_size=24, color=(0, 0, 0), + dest_rect=(w - 240, margin + 50, w - margin, margin + 122)) + + yes_code, no_code = acq._to_keycodes([YES_KEY, NO_KEY]) + + # --- instructions screen --- + instructions = Text( + text=( + "Welcome!\n \n" + "A black or white image will appear.\n" + f"Press {YES_KEY.upper()} if it is white, {NO_KEY.upper()} if it is black.\n \n" + f"Before each trial, rest your fingers lightly on {YES_KEY.upper()} and {NO_KEY.upper()}.\n" + f"The trial starts as soon as the pressure is stable for {acq.hold_seconds} second(s).\n" + "After your response, lift your fingers completely off the keys.\n \n" + f"Press {YES_KEY.upper()} to begin." + ), + font_size=26, + color=(0, 0, 0), + dest_rect=(int(w * 0.1), int(h * 0.15), int(w * 0.9), int(h * 0.85)), + ) + screen.fill(BG) + instructions.draw() + screen.flip() + acq.wait_keys_light_press(target_keys=[YES_KEY], quit_key=NO_KEY) + + correct = clean = 0 + + for trial in range(1, N_TRIALS + 1): + is_white = bool(random.getrandbits(1)) + + if not acq.wait_light_press_visual( + screen=screen, + target_keys=[YES_KEY, NO_KEY], + response_handler=rh, + exit_keys=QUIT_KEYS, + fixation_cross=readiness_fixation, + show_pressure_text=True, + show_goal_markers=True, + ): + break + + screen.fill(BG) + (white_tex if is_white else black_tex).draw( + (w // 2 - 128, h // 2 - 128, w // 2 + 128, h // 2 + 128) + ) + label.set_text(f"Trial {trial}/{N_TRIALS} | {YES_KEY.upper()} = white {NO_KEY.upper()} = black") + label.draw() + score.draw() + screen.flip() + + hier = acq.acquire_analog_values(target_keys=[YES_KEY, NO_KEY]) + response = acq.get_response_key(hier, target_keys=[YES_KEY, NO_KEY]) + + is_correct = response == (yes_code if is_white else no_code) + had_removal = acq.last_trial_had_removal + correct += int(is_correct) + clean += int(not had_removal) + score.set_text(f"Correct: {correct / trial * 100:.0f}%\nClean: {clean / trial * 100:.0f}%") + + feedback = "Correct!" if is_correct else "Incorrect" + if acq.reached_consecutive_removal_limit(WARN_STREAK): + feedback += f" [finger removal ×{acq.current_removal_streak}]" + elif had_removal: + feedback += " [finger removal]" + + screen.fill(BG) + label.set_text(feedback) + label.draw() + score.draw() + screen.flip() + time.sleep(0.25) + + if acq.wait_keys_released( + target_keys=[YES_KEY, NO_KEY], + response_handler=rh, + exit_keys=QUIT_KEYS, + ) is None: + break + + print(f"Done — {correct}/{acq.total_trials} correct, {acq.removal_trials} removal trials") + return 0 + + finally: + acq.uninitialize_keyboard() + if screen is not None and hasattr(screen, "close"): + screen.close() + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/tachypy/wooting/demos/visual_fixation_demo.py b/src/tachypy/wooting/demos/visual_fixation_demo.py new file mode 100644 index 0000000..43d453f --- /dev/null +++ b/src/tachypy/wooting/demos/visual_fixation_demo.py @@ -0,0 +1,489 @@ +from __future__ import annotations + +import argparse +import time + + +BACKGROUND_COLOR = (128, 128, 128) +HIT_BACKGROUND_COLOR = (120, 190, 120) +INITIAL_HORIZONTAL_COLOR = (80, 80, 80) +CROSS_COLOR = (0, 0, 0) +QUIT_KEYS = {"escape", "esc", "enter", "return", "space", "q"} +RUN_KEY = "x" +RUN_DURATION = 15.0 +WINDOWED_WIDTH = 1502 +WINDOWED_HEIGHT = 750 +FIX_CROSS_LINE = 8 +FIX_CROSS_HALF = 14 # run cross arm half-length (pixels) +FIX_CROSS_IDLE_LINE = 12 +FIX_CROSS_IDLE_HALF = 24 # idle cross arm half-length (pixels) + + +def _build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + description="TachyPy demo for the interactive Wooting fixation cross.", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + parser.add_argument("--screen-number", type=int, default=0) + parser.add_argument("--refresh-rate", type=int, default=240) + parser.add_argument("--fullscreen", action="store_true", help="Use TachyPy fullscreen mode. By default the demo opens in a 1502x750 window.") + parser.add_argument("--left-key", default="z") + parser.add_argument("--right-key", default="c") + parser.add_argument("--hold-seconds", type=float, default=1.00) + parser.add_argument("--min-pressure", type=float, default=0.33) + parser.add_argument("--max-pressure", type=float, default=0.66) + parser.add_argument("--threshold", type=float, default=0.80) + + parser.add_argument("--half-width", type=float, default=FIX_CROSS_IDLE_HALF) + parser.add_argument("--half-height", type=float, default=FIX_CROSS_IDLE_HALF) + parser.add_argument("--thickness", type=float, default=FIX_CROSS_IDLE_LINE) + parser.add_argument("--run-half-width", type=float, default=FIX_CROSS_HALF) + parser.add_argument("--run-half-height", type=float, default=FIX_CROSS_HALF) + parser.add_argument("--run-thickness", type=float, default=FIX_CROSS_LINE) + return parser + + +class _ExitKeyTracker: + """Wraps a ResponseHandler to record which exit key triggered the last exit.""" + + def __init__(self, rh) -> None: + self._rh = rh + self.last_key: str | None = None + self._seen_event_count = 0 + + def get_events(self) -> None: + if hasattr(self._rh, "get_events"): + self._rh.get_events() + + def should_quit(self) -> bool: + return bool(getattr(self._rh, "should_quit", lambda: False)()) + + def get_key_presses(self) -> list: + all_events = self._rh.get_key_presses() if hasattr(self._rh, "get_key_presses") else [] + new_events = all_events[self._seen_event_count:] + self._seen_event_count = len(all_events) + for e in new_events: + if e.get("type") == "keydown": + self.last_key = str(e.get("key", "")).lower() + return all_events + + def clear_events(self) -> None: + if hasattr(self._rh, "clear_events"): + self._rh.clear_events() + self._seen_event_count = 0 + self.last_key = None + + @property + def keys_to_listen(self): + return self._rh.keys_to_listen + + @keys_to_listen.setter + def keys_to_listen(self, value) -> None: + self._rh.keys_to_listen = value + if value is not None: + if hasattr(self._rh, "_probed_keys"): + self._rh._probed_keys.update(value) + if getattr(self._rh, "backend", None) == "glfw": + screen = getattr(self._rh, "screen", None) + if screen is not None and hasattr(screen, "track_keys"): + screen.track_keys(value) + + +class GamifiedFixationWidget: + """Heads-up display wrapper for the visual fixation demo. + + Parameters + ---------- + screen : object + TachyPy ``Screen``-like object used for sizing HUD rectangles. + fixation_widget : object + Widget that draws the interactive fixation cross in idle mode (bigger). + run_fixation_widget : object + Widget that draws the interactive fixation cross during a run (smaller). + text_cls : type + TachyPy ``Text`` class or compatible replacement. + started_at : float + ``time.perf_counter()`` timestamp used as the timer origin. + hold_seconds : float + Hold duration used to compute theoretical hit rate and efficiency. + """ + + def __init__( + self, + screen, + fixation_widget, + run_fixation_widget, + text_cls, + started_at: float, + hold_seconds: float, + font_name: str = "Helvetica", + compact_layout: bool = False, + ): + self.screen = screen + self.fixation_widget = fixation_widget + self.run_fixation_widget = run_fixation_widget + self.text_cls = text_cls + self.started_at = float(started_at) + self.hold_seconds = float(hold_seconds) + self.font_name = font_name + self.compact_layout = bool(compact_layout) + self.hits = 0 + self.flash_until = 0.0 + # Run state + self._run_active = False + self._run_start_time = 0.0 + self._run_duration = RUN_DURATION + self._run_start_hits = 0 + # Best score + self._has_best = False + self.best_hits = 0 + self.best_efficiency = 0.0 + # Text objects + self._timer_text = None + self._hits_text = None + self._efficiency_text = None + self._controls_text = None + self._best_label_text = None + self._best_value_text = None + + @property + def _active_cross(self): + return self.run_fixation_widget if self._run_active else self.fixation_widget + + # ── run lifecycle ──────────────────────────────────────────────────────── + + def start_run(self, duration: float = RUN_DURATION) -> None: + self._run_active = True + self._run_start_time = time.perf_counter() + self._run_duration = float(duration) + self._run_start_hits = self.hits + + def end_run(self) -> None: + if not self._run_active: + return + self._run_active = False + run_hits = self._run_hits() + run_eff = self._run_efficiency_percent() + if not self._has_best or run_hits > self.best_hits or (run_hits == self.best_hits and run_eff > self.best_efficiency): + self.best_hits = run_hits + self.best_efficiency = run_eff + self._has_best = True + + def _run_elapsed(self) -> float: + return min(self._run_duration, time.perf_counter() - self._run_start_time) + + def _run_remaining(self) -> float: + return max(0.0, self._run_duration - (time.perf_counter() - self._run_start_time)) + + def _run_hits(self) -> int: + return self.hits - self._run_start_hits + + def _run_efficiency_percent(self) -> float: + elapsed = self._run_elapsed() + if elapsed <= 0 or self.hold_seconds <= 0: + return 0.0 + theoretical = elapsed / self.hold_seconds + return min(999.9, max(0.0, (self._run_hits() / theoretical) * 100.0)) + + # ── widget protocol ────────────────────────────────────────────────────── + + def update(self, state) -> None: + self._active_cross.update(state) + + def draw(self) -> None: + self._active_cross.draw() + self._draw_hud() + + def register_hit(self) -> None: + self.hits += 1 + self.flash_until = time.perf_counter() + 0.30 + + def background_color(self): + if time.perf_counter() < self.flash_until: + return HIT_BACKGROUND_COLOR + return BACKGROUND_COLOR + + # ── HUD ───────────────────────────────────────────────────────────────── + + def _draw_hud(self) -> None: + width, height = self._screen_size() + margin = max(16, int(min(width, height) * 0.025)) + font_size = max(16, int(min(width, height) * 0.026)) + small_font_size = max(14, int(font_size * 0.78)) + + if self.compact_layout: + font_size = max(22, int(min(width, height) * 0.032)) + small_font_size = max(16, int(font_size * 0.76)) + hud_y = margin + line_h = font_size * 2.1 + timer_w = 260 + hits_w = 220 + efficiency_w = 330 + timer_rect = self._rect_centered(width / 2, hud_y + line_h / 2, timer_w, line_h) + hits_rect = self._rect(margin, hud_y, hits_w, line_h) + efficiency_rect = self._rect(width - margin - efficiency_w, hud_y, efficiency_w, line_h) + else: + timer_rect = self._rect_centered(width / 2, margin + font_size, 220, font_size * 1.8) + hits_rect = self._rect(margin, margin, 180, font_size * 1.8) + efficiency_rect = self._rect(width - margin - 220, margin, 220, font_size * 1.8) + + if self._run_active: + remaining = self._run_remaining() + self._timer_text = self._draw_text(self._timer_text, f"RUN {remaining:04.1f}s", timer_rect, font_size) + self._hits_text = self._draw_text(self._hits_text, f"Hits {self._run_hits()}", hits_rect, font_size) + self._efficiency_text = self._draw_text(self._efficiency_text, f"Efficiency {self._run_efficiency_percent():05.1f}%", efficiency_rect, font_size) + else: + elapsed = max(0.0, time.perf_counter() - self.started_at) + if self.compact_layout: + controls_rect = self._rect_centered(width / 2, height - margin - small_font_size * 2.6, 220, small_font_size * 4.0) + else: + controls_rect = self._rect(width - margin - 180, height - margin - small_font_size * 5, 180, small_font_size * 5) + self._timer_text = self._draw_text(self._timer_text, f"Time {elapsed:05.1f}s", timer_rect, font_size) + self._hits_text = self._draw_text(self._hits_text, f"Hits {self.hits}", hits_rect, font_size) + self._efficiency_text = self._draw_text(self._efficiency_text, f"Efficiency {self._efficiency_percent(elapsed):05.1f}%", efficiency_rect, font_size) + self._controls_text = self._draw_text(self._controls_text, f"{RUN_KEY.upper()}: run\nEsc: quit", controls_rect, small_font_size) + + if self._has_best: + label_h = small_font_size * 1.6 + value_h = font_size * 2.0 + if self.compact_layout: + label_rect = self._rect(margin, height - margin - label_h - value_h, 360, label_h) + value_rect = self._rect(margin, height - margin - value_h, 360, value_h) + else: + label_rect = self._rect(margin, height - margin - label_h - value_h, 300, label_h) + value_rect = self._rect(margin, height - margin - value_h, 300, value_h) + self._best_label_text = self._draw_text(self._best_label_text, "BEST SCORE", label_rect, small_font_size, color=(70, 70, 70)) + self._best_value_text = self._draw_text(self._best_value_text, f"{self.best_hits} hits {self.best_efficiency:.1f}%", value_rect, font_size) + + def _efficiency_percent(self, elapsed: float) -> float: + if elapsed <= 0 or self.hold_seconds <= 0: + return 0.0 + theoretical_hits = elapsed / self.hold_seconds + if theoretical_hits <= 0: + return 0.0 + return min(999.9, max(0.0, (self.hits / theoretical_hits) * 100.0)) + + def _draw_text(self, text_obj, text: str, dest_rect, font_size: int, color=None): + dest_rect = self._snap_rect(self._clamp_rect(dest_rect)) + draw_color = color if color is not None else CROSS_COLOR + if text_obj is None: + text_obj = self.text_cls( + text=text, + font_size=font_size, + color=draw_color, + dest_rect=dest_rect, + font_name=self.font_name, + ) + else: + text_obj.set_dest_rect(dest_rect) + if text_obj.text != text: + text_obj.set_text(text) + text_obj.draw() + return text_obj + + def _screen_size(self): + return ( + float(getattr(self.screen, "width", getattr(self.screen, "w", 1024))), + float(getattr(self.screen, "height", getattr(self.screen, "h", 768))), + ) + + def _rect(self, x, y, width, height): + return (float(x), float(y), float(x + width), float(y + height)) + + def _rect_centered(self, center_x, center_y, width, height): + return self._rect(center_x - width / 2, center_y - height / 2, width, height) + + def _clamp_rect(self, rect): + screen_width, screen_height = self._screen_size() + x1, y1, x2, y2 = rect + width = min(max(1.0, x2 - x1), screen_width) + height = min(max(1.0, y2 - y1), screen_height) + x1 = min(max(0.0, x1), screen_width - width) + y1 = min(max(0.0, y1), screen_height - height) + return (x1, y1, x1 + width, y1 + height) + + @staticmethod + def _snap_rect(rect): + x1, y1, x2, y2 = rect + return (round(x1), round(y1), round(x2), round(y2)) + + +def _draw_countdown(screen, widget, text_cls, background_color_fn, font_name: str) -> None: + """Show a 3-2-1 countdown in the center of the screen.""" + width = float(getattr(screen, "width", getattr(screen, "w", 1024))) + height = float(getattr(screen, "height", getattr(screen, "h", 768))) + font_size = max(80, int(min(width, height) * 0.14)) + box = min(width, height) * 0.22 + center_rect = (width / 2 - box / 2, height / 2 - box / 2, width / 2 + box / 2, height / 2 + box / 2) + + countdown_text = None + for count in range(3, 0, -1): + deadline = time.perf_counter() + 1.0 + label = str(count) + while time.perf_counter() < deadline: + screen.fill(background_color_fn()) + widget.draw() + if countdown_text is None: + countdown_text = text_cls( + text=label, + font_size=font_size, + color=(220, 220, 220), + dest_rect=center_rect, + font_name=font_name, + ) + elif countdown_text.text != label: + countdown_text.set_text(label) + countdown_text.draw() + screen.flip() + + +def main() -> int: + args = _build_parser().parse_args() + + try: + from tachypy import ResponseHandler, Screen, Text + from tachypy.feedback import InteractiveFixationCross + from tachypy import WOOTING_ACQUISITION + except ImportError as exc: + raise SystemExit( + "This demo requires the Wooting integration: pip install 'tachypy[wooting]'" + ) from exc + + acq = WOOTING_ACQUISITION( + threshold=args.threshold, + min_pressure_start=args.min_pressure, + max_pressure_start=args.max_pressure, + light_press_hold_seconds=args.hold_seconds, + backend="auto", + timing_mode="hybrid", + ) + acq.initialize_keyboard(verbose=True) + + screen = None + try: + screen = Screen( + screen_number=args.screen_number, + width=None if args.fullscreen else WINDOWED_WIDTH, + height=None if args.fullscreen else WINDOWED_HEIGHT, + fullscreen=args.fullscreen, + desired_refresh_rate=args.refresh_rate, + ) + if hasattr(screen, "hide_mouse"): + screen.hide_mouse() + + response_handler = ResponseHandler(screen=screen) + key_tracker = _ExitKeyTracker(response_handler) + + center = (screen.width // 2, screen.height // 2) + shared_cross_kwargs = dict( + screen=screen, + acquisition=acq, + center=center, + background_color=BACKGROUND_COLOR, + initial_color=INITIAL_HORIZONTAL_COLOR, + target_color=CROSS_COLOR, + vertical_color=CROSS_COLOR, + show_pressure_text=True, + show_goal_markers=True, + pressure_text_font_name="Helvetica", + ) + + idle_cross = InteractiveFixationCross( + half_width=args.half_width, + half_height=args.half_height, + thickness=args.thickness, + **shared_cross_kwargs, + ) + run_cross = InteractiveFixationCross( + half_width=args.run_half_width, + half_height=args.run_half_height, + thickness=args.run_thickness, + **shared_cross_kwargs, + ) + + widget = GamifiedFixationWidget( + screen=screen, + fixation_widget=idle_cross, + run_fixation_widget=run_cross, + text_cls=Text, + started_at=time.perf_counter(), + hold_seconds=args.hold_seconds, + font_name="Helvetica", + compact_layout=not args.fullscreen, + ) + + def draw_release_frame() -> None: + screen.fill(widget.background_color()) + widget.draw() + screen.flip() + + print("Press Escape, Enter, Space, or q to quit.") + print(f"Use {args.left_key!r} for left and {args.right_key!r} for right.") + print(f"Press {RUN_KEY!r} to start a {RUN_DURATION:.0f}s run.") + + while True: + in_run = widget._run_active + current_exit_keys = QUIT_KEYS if in_run else (QUIT_KEYS | {RUN_KEY}) + timeout = max(0.01, widget._run_remaining()) if in_run else None + key_tracker.last_key = None + + try: + ready = acq.wait_light_press_visual( + screen=screen, + target_keys=[args.left_key, args.right_key], + widget=widget, + background_color=widget.background_color, + response_handler=key_tracker, + exit_keys=current_exit_keys, + timeout_seconds=timeout, + ) + except TimeoutError: + widget.end_run() + key_tracker.clear_events() + continue + + if not ready: + if in_run: + widget.end_run() + key_tracker.clear_events() + continue + if key_tracker.last_key == RUN_KEY: + _draw_countdown(screen, widget, Text, widget.background_color, "Helvetica") + widget.start_run(RUN_DURATION) + continue + print(f"Final hits: {widget.hits}") + return 0 + + widget.register_hit() + + release_timeout = max(0.01, widget._run_remaining()) if widget._run_active else None + try: + released_at = acq.wait_keys_released( + target_keys=[args.left_key, args.right_key], + hold_seconds=0.01, + response_handler=key_tracker, + exit_keys=QUIT_KEYS, + on_tick=draw_release_frame, + timeout_seconds=release_timeout, + ) + except TimeoutError: + widget.end_run() + key_tracker.clear_events() + continue + + if released_at is None: + if widget._run_active: + widget.end_run() + print(f"Final hits: {widget.hits}") + return 0 + + return 0 + + finally: + acq.uninitialize_keyboard() + if screen is not None and hasattr(screen, "close"): + screen.close() + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_feedback.py b/tests/test_feedback.py new file mode 100644 index 0000000..4937a83 --- /dev/null +++ b/tests/test_feedback.py @@ -0,0 +1,502 @@ +import sys +import types + +import pytest + +from tachypy.feedback import ( + InteractiveFixationCross, + PressureFeedbackConfig, + PressureFeedbackState, + PressureScaleMapper, + VisualPressureFeedbackMixin, +) + + +def test_pressure_scale_mapper(): + mapper = PressureScaleMapper(min_scale=0.25, normal_scale=1.0, max_scale=2.0) + + assert mapper.map(0.0, 0.1, 0.4) == 0.0 + assert mapper.map(0.001, 0.1, 0.4) > 0.25 + assert mapper.map(0.1, 0.1, 0.4) == 1.0 + assert mapper.map(0.3, 0.1, 0.4) == 1.0 + assert mapper.map(1.0, 0.1, 0.4) == 2.0 + + +def test_pressure_feedback_state_hold_timer(): + state = PressureFeedbackState( + PressureFeedbackConfig( + min_pressure_start=0.1, + max_pressure_start=0.4, + threshold=0.8, + hold_seconds=0.5, + ) + ) + + state.update(0.2, 0.2, now=1.0) + assert state.hold_progress == 0.0 + assert not state.is_ready + + state.update(0.2, 0.2, now=1.25) + assert state.hold_progress == 0.5 + assert not state.is_ready + + state.update(0.2, 0.2, now=1.5) + assert state.hold_progress == 1.0 + assert state.is_ready + + +def test_pressure_feedback_state_resets_when_out_of_range(): + state = PressureFeedbackState( + PressureFeedbackConfig( + min_pressure_start=0.1, + max_pressure_start=0.4, + threshold=0.8, + hold_seconds=0.5, + ) + ) + + state.update(0.2, 0.2, now=1.0) + state.update(0.2, 0.5, now=1.25) + + assert state.right_status == "too_strong" + assert state.hold_progress == 0.0 + assert not state.is_ready + + +def test_widget_updates_and_draws_lines(monkeypatch): + class FakeScreen: + width = 100 + height = 80 + + class FakeLine: + created = [] + + def __init__(self, start_point, end_point, thickness, color): + self.start_point = start_point + self.end_point = end_point + self.thickness = thickness + self.color = color + self.draw_count = 0 + self.created.append(self) + + def set_start_point(self, start_point): + self.start_point = start_point + + def set_end_point(self, end_point): + self.end_point = end_point + + def set_thickness(self, thickness): + self.thickness = thickness + + def set_color(self, color): + self.color = color + + def draw(self): + self.draw_count += 1 + + screen = FakeScreen() + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine)) + widget = InteractiveFixationCross( + screen=screen, + half_width=10, + half_height=5, + initial_color=(100, 100, 100), + target_color=(0, 0, 0), + background_color=(255, 255, 255), + ) + state = PressureFeedbackState( + PressureFeedbackConfig( + min_pressure_start=0.1, + max_pressure_start=0.4, + threshold=0.8, + hold_seconds=0.5, + ) + ) + state.update(0.0, 1.0, now=1.0) + + widget.update(state) + widget.draw() + + assert widget.left_scale == 0.0 + assert widget.right_scale == 2.0 + assert len(FakeLine.created) == 2 + assert all(line.draw_count == 1 for line in FakeLine.created) + + +def test_widget_rejects_invisible_initial_color(): + with pytest.raises(ValueError, match="initial_color"): + InteractiveFixationCross( + screen=object(), + initial_color=(128, 128, 128), + background_color=(128, 128, 128), + ) + + +def test_widget_can_copy_existing_fixation_cross(monkeypatch): + class FakeLine: + def __init__(self, start_point, end_point, thickness, color): + pass + + fixation = types.SimpleNamespace( + center=(12, 34), + half_width=7, + half_height=9, + thickness=3, + color=(10, 20, 30), + ) + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine)) + + widget = InteractiveFixationCross( + screen=object(), + fixation_cross=fixation, + initial_color=(100, 100, 100), + background_color=(128, 128, 128), + ) + + assert widget.center == (12.0, 34.0) + assert widget.half_width == 7.0 + assert widget.half_height == 9.0 + assert widget.thickness == 3.0 + assert widget.target_color == (10, 20, 30) + + +@pytest.mark.parametrize("thickness", [3, 4, 5, 6]) +def test_goal_markers_touch_ideal_pressure_bar_edges(monkeypatch, thickness): + class FakeLine: + created = [] + + def __init__(self, start_point, end_point, thickness, color): + self.start_point = start_point + self.end_point = end_point + self.thickness = thickness + self.color = color + self.created.append(self) + + def set_start_point(self, start_point): + self.start_point = start_point + + def set_end_point(self, end_point): + self.end_point = end_point + + def set_thickness(self, thickness): + self.thickness = thickness + + def set_color(self, color): + self.color = color + + def draw(self): + pass + + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine)) + widget = InteractiveFixationCross( + screen=object(), + center=(50, 40), + half_width=10, + half_height=5, + thickness=thickness, + show_goal_markers=True, + ) + state = PressureFeedbackState( + PressureFeedbackConfig( + min_pressure_start=0.1, + max_pressure_start=0.4, + threshold=0.8, + hold_seconds=0.5, + ) + ) + state.update(0.2, 0.2, now=1.0) + + widget.update(state) + widget.draw() + + assert widget.left_scale == 1.0 + assert widget.right_scale == 1.0 + expected_marker_width = max(1.0, widget.thickness * 0.33) + left_edge_x = widget._left_line.start_point[0] + right_edge_x = widget._right_line.end_point[0] + center_y = widget._left_line.start_point[1] + assert widget._left_marker.start_point == (left_edge_x - expected_marker_width, center_y) + assert widget._left_marker.end_point == (left_edge_x, center_y) + assert widget._right_marker.start_point == (right_edge_x, center_y) + assert widget._right_marker.end_point == (right_edge_x + expected_marker_width, center_y) + assert widget._left_marker.thickness == widget.thickness + assert widget._right_marker.thickness == widget.thickness + assert widget._left_marker.thickness == widget._left_line.thickness + assert widget._right_marker.thickness == widget._right_line.thickness + assert FakeLine.created == [ + widget._left_marker, + widget._right_marker, + widget._left_line, + widget._right_line, + widget._vertical_line, + ] + + +def test_widget_accepts_acquisition_settings(monkeypatch): + class FakeLine: + def __init__(self, start_point, end_point, thickness, color): + pass + + acquisition = types.SimpleNamespace( + min_pressure_start=0.33, + max_pressure_start=0.66, + threshold=0.8, + hold_seconds=0.3, + ) + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine)) + + widget = InteractiveFixationCross( + screen=object(), + acquisition=acquisition, + initial_color=(100, 100, 100), + background_color=(128, 128, 128), + ) + + assert widget.acquisition is acquisition + assert widget.min_pressure_start == 0.33 + assert widget.max_pressure_start == 0.66 + assert widget.threshold == 0.8 + assert widget.hold_seconds == 0.3 + + +def test_widget_lerps_any_rgb_channels(): + assert InteractiveFixationCross._lerp_color((10, 200, 30), (110, 20, 230), 0.0) == (10, 200, 30) + assert InteractiveFixationCross._lerp_color((10, 200, 30), (110, 20, 230), 0.5) == (60, 110, 130) + assert InteractiveFixationCross._lerp_color((10, 200, 30), (110, 20, 230), 1.0) == (110, 20, 230) + assert InteractiveFixationCross._lerp_color((0, 0, 255), (255, 128, 0), 2.0) == (255, 128, 0) + assert InteractiveFixationCross._lerp_color((0, 0, 255), (255, 128, 0), -1.0) == (0, 0, 255) + + +def test_widget_draws_pressure_text(monkeypatch): + class FakeScreen: + width = 100 + height = 80 + + class FakeLine: + def __init__(self, start_point, end_point, thickness, color): + pass + + def draw(self): + pass + + class FakeText: + created = [] + + def __init__(self, text, font_size, color, dest_rect): + self.text = text + self.font_size = font_size + self.color = color + self.dest_rect = dest_rect + self.draw_count = 0 + self.created.append(self) + + def set_text(self, text): + self.text = text + + def set_dest_rect(self, dest_rect): + self.dest_rect = dest_rect + + def draw(self): + self.draw_count += 1 + + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine, Text=FakeText)) + widget = InteractiveFixationCross( + screen=FakeScreen(), + center=(50, 40), + half_width=10, + half_height=5, + show_pressure_text=True, + left_pressure_label="C", + right_pressure_label="Z", + pressure_text_width=40, + pressure_text_height=20, + pressure_text_gap=6, + ) + state = PressureFeedbackState( + PressureFeedbackConfig( + min_pressure_start=0.1, + max_pressure_start=0.4, + threshold=0.8, + ) + ) + state.update(0.0, 1.0, now=1.0) + + widget.update(state) + widget.draw() + + assert [text.text for text in FakeText.created] == ["C: 0.00", "Z: 1.00"] + assert FakeText.created[0].dest_rect == (0.0, 51.0, 40.0, 71.0) + assert FakeText.created[1].dest_rect == (60.0, 51.0, 100.0, 71.0) + assert all(text.draw_count == 1 for text in FakeText.created) + + +def test_widget_hides_pressure_text_when_pressure_is_ideal(monkeypatch): + class FakeScreen: + width = 100 + height = 80 + + class FakeLine: + def __init__(self, start_point, end_point, thickness, color): + pass + + def draw(self): + pass + + class FakeText: + created = [] + + def __init__(self, text, font_size, color, dest_rect): + self.created.append(self) + + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine, Text=FakeText)) + widget = InteractiveFixationCross( + screen=FakeScreen(), + center=(50, 40), + half_width=10, + half_height=5, + show_pressure_text=True, + ) + state = PressureFeedbackState( + PressureFeedbackConfig( + min_pressure_start=0.1, + max_pressure_start=0.4, + threshold=0.8, + ) + ) + state.update(0.2, 0.3, now=1.0) + + widget.update(state) + widget.draw() + + assert FakeText.created == [] + + +def _make_fake_acq(reader, hold_seconds=0.001): + """Build a minimal PressureSource-like object enriched with the visual mixin.""" + + class _FakeAcq(VisualPressureFeedbackMixin): + initialized = True + min_pressure_start = 0.33 + max_pressure_start = 0.66 + threshold = 0.8 + + def read_pressures(self, keys): + return reader(keys) + + acq = _FakeAcq() + acq.hold_seconds = hold_seconds + return acq + + +def test_visual_wait_does_not_show_pressure_text_by_default(monkeypatch): + class FakeScreen: + width = 100 + height = 80 + + def fill(self, color): + pass + + def flip(self): + pass + + class FakeLine: + def __init__(self, start_point, end_point, thickness, color): + pass + + def set_start_point(self, value): + pass + + def set_end_point(self, value): + pass + + def set_thickness(self, value): + pass + + def set_color(self, value): + pass + + def draw(self): + pass + + class FakeText: + created = [] + + def __init__(self, text, font_size, color, dest_rect): + self.text = text + self.created.append(self) + + def set_dest_rect(self, dest_rect): + pass + + def set_text(self, text): + self.text = text + + def draw(self): + pass + + monkeypatch.setitem(sys.modules, "tachypy", types.SimpleNamespace(Line=FakeLine, Text=FakeText)) + + reads = {"count": 0} + + def reader(keys): + reads["count"] += 1 + if reads["count"] == 1: + return {"c": 0.0, "z": 1.0} + return {"c": 0.5, "z": 0.5} + + acq = _make_fake_acq(reader) + + assert acq.wait_light_press_visual(screen=FakeScreen(), target_keys=["c", "z"]) + assert FakeText.created == [] + + +def test_visual_wait_rejects_auto_widget_args_when_widget_is_provided(): + class FakeScreen: + def fill(self, color): + pass + + def flip(self): + pass + + class FakeWidget: + def update(self, state): + pass + + def draw(self): + pass + + acq = _make_fake_acq(lambda keys: {str(k): 0.5 for k in keys}) + + with pytest.raises(ValueError, match="fixation_cross"): + acq.wait_light_press_visual( + screen=FakeScreen(), + target_keys=["c", "z"], + widget=FakeWidget(), + fixation_cross=object(), + ) + + +def test_visual_wait_rejects_non_drawable_overlay(): + class FakeScreen: + def fill(self, color): + pass + + def flip(self): + pass + + class FakeWidget: + def update(self, state): + pass + + def draw(self): + pass + + acq = _make_fake_acq(lambda keys: {str(k): 0.5 for k in keys}) + + with pytest.raises(AttributeError, match="draw"): + acq.wait_light_press_visual( + screen=FakeScreen(), + target_keys=["c", "z"], + widget=FakeWidget(), + overlay_drawables=[object()], + ) From bbf591fee22d45adf1324f3db45a8de6c75d4562 Mon Sep 17 00:00:00 2001 From: Kaapra Date: Mon, 15 Jun 2026 13:46:50 -0400 Subject: [PATCH 02/10] Integrate TachyWooting into TachyPy with native analog feedback support * Add first-class TachyWooting integration in the TachyPy package. * Expose `WOOTING_ACQUISITION` through TachyPy for a simpler user-facing API. * Enable natural analog keyboard workflows directly from TachyPy. * Add visual pressure feedback for light-press and readiness phases. * Refactor the pressure feedback system and remove the unused `PressureSource` interface. * Improve `PressureFeedbackWidget` with better pressure text, geometry, and interactive fixation cross handling. * Integrate Wooting acquisition with the TachyPy visual feedback system. * Keep Wooting support as an optional dependency so TachyPy core remains lightweight. * Update documentation, demos, and tests for the new integration. * Add tests for pressure feedback rendering and pressure state management. --- README.md | 20 + docs/wooting.rst | 191 ++++++++- setup.cfg | 14 +- setup.py | 1 + src/tachypy/__init__.py | 4 +- src/tachypy/feedback/__init__.py | 29 +- src/tachypy/feedback/engine.py | 138 ------- src/tachypy/feedback/fixation.py | 379 ----------------- src/tachypy/feedback/mapping.py | 76 ---- src/tachypy/feedback/{state.py => model.py} | 113 +++-- src/tachypy/feedback/{mixin.py => runner.py} | 158 ++++++- src/tachypy/feedback/source.py | 38 -- src/tachypy/feedback/widgets.py | 385 +++++++++++++++++- src/tachypy/wooting/__init__.py | 6 +- ..._feedback.py => test_pressure_keyboard.py} | 67 ++- 15 files changed, 899 insertions(+), 720 deletions(-) delete mode 100644 src/tachypy/feedback/engine.py delete mode 100644 src/tachypy/feedback/fixation.py delete mode 100644 src/tachypy/feedback/mapping.py rename src/tachypy/feedback/{state.py => model.py} (56%) rename src/tachypy/feedback/{mixin.py => runner.py} (55%) delete mode 100644 src/tachypy/feedback/source.py rename tests/{test_feedback.py => test_pressure_keyboard.py} (86%) diff --git a/README.md b/README.md index f8cbb2b..78cefdb 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,8 @@ software timestamps alone. - `GLSystemText` (backward-compatible explicit name for `Text`). - Psychophysics helpers (`make_gabor`, gratings, normalization, dithering). - Audio playback utility (`Audio`) backed by `tachyaudio`. +- Optional Wooting analog-keyboard integration (`tachypy[wooting]`): on-screen + pressure feedback and `WOOTING_ACQUISITION` straight from `tachypy`. - Test suite for core logic and regressions. ## Installation @@ -80,9 +82,26 @@ Optional extras: ```bash pip install -e ".[test]" # pytest pip install -e ".[text]" # Pillow text fallback +pip install -e ".[wooting]" # Wooting analog-keyboard integration # Audio support (tachyaudio) is included in the base install ``` +### Wooting analog-keyboard integration + +`pip install "tachypy[wooting]"` adds support for Wooting analog keyboards +(pressure acquisition, logging, and on-screen visual feedback): + +```python +from tachypy import Screen, WOOTING_ACQUISITION + +acq = WOOTING_ACQUISITION(threshold=0.8) +acq.initialize_keyboard() +acq.wait_light_press_visual(target_keys=["c", "z"], screen=Screen(fullscreen=False)) +``` + +See the [Wooting docs page](https://tachypy.readthedocs.io/en/latest/wooting.html) +for details. + ### Audio dependency TachyPy audio now uses `tachyaudio>=0.2.0b1`. TachyPy no longer depends on @@ -198,6 +217,7 @@ Expanded docs live in `/docs` and include: - backend behavior and input routing - text rendering options - audio backend guidance +- Wooting analog-keyboard integration - examples and contribution workflow Hosted docs (Read the Docs): https://tachypy.readthedocs.io/ diff --git a/docs/wooting.rst b/docs/wooting.rst index 026509f..4063fa0 100644 --- a/docs/wooting.rst +++ b/docs/wooting.rst @@ -1,12 +1,12 @@ Wooting Analog Keyboards ======================== -TachyPy integrates with **tachywooting**, a hardware toolbox for Wooting analog +TachyPy integrates with **TachyWooting**, a hardware toolbox for Wooting analog keyboards (analog pressure acquisition, hierarchical HDF5 logging, light-press / release readiness checks). The hardware toolbox is usable on its own; this page documents only what becomes available **inside TachyPy** once the integration is installed — chiefly on-screen visual -pressure feedback. For the full keyboard/logging reference, see tachywooting's own +pressure feedback. For the full keyboard/logging reference, see TachyWooting's own documentation. Installation @@ -42,6 +42,29 @@ CFFI handles ``lib`` and ``ffi`` — lives under :mod:`tachypy.wooting`: from tachypy.wooting import visualize, load_trial, convert_char_to_keycode +How the enrichment works +------------------------ + +``WOOTING_ACQUISITION`` is enriched in ``tachypy/wooting/__init__.py``: it is a +thin subclass that combines TachyWooting's hardware acquisition class with +:class:`~tachypy.feedback.VisualPressureFeedbackMixin`. The mixin is what adds the +``wait_light_press_visual`` method — nothing else changes: + +.. code-block:: python + + from tachywooting import WOOTING_ACQUISITION as _BaseAcquisition + from tachypy.feedback import VisualPressureFeedbackMixin + + class WOOTING_ACQUISITION(_BaseAcquisition, VisualPressureFeedbackMixin): + """Hardware acquisition + logging (base) + TachyPy visual feedback (mixin).""" + +This keeps the hardware package (TachyWooting) completely free of TachyPy — the +visual method is grafted on here, on TachyPy's side. Because the mixin only relies +on the :class:`~tachypy.feedback.PressureSource` contract (reading pressures plus +the light-press thresholds), the very same pattern enriches any future analog +keyboard: subclass its base acquisition class and mix in +``VisualPressureFeedbackMixin``. + First-time setup ---------------- @@ -86,10 +109,26 @@ acquisition and logging: Visual pressure feedback ------------------------ +.. note:: + + **Why this matters.** The whole point of an analog keyboard is to record the + *continuous pressure trajectory* of a response, not just a binary press — and + that only works if the participant's fingers are already resting on the keys + when the trial begins. Requiring a stable light press before each trial: + + - **guarantees the fingers are on the keys**, so the full movement is captured + from its earliest, lowest-pressure samples; + - **guides them to the right resting pressure** — high enough that softer + presses still fall inside the trackable range, yet low enough to leave + headroom for the fuller press that follows. + + The on-screen feedback turns this abstract requirement into something the + participant can simply *aim for*. + ``wait_light_press_visual`` shows an interactive fixation cross while waiting for two keys to stay within the light-press interval for ``hold_seconds``. It needs a -TachyPy :class:`~tachypy.Screen`; pass a :class:`~tachypy.ResponseHandler` to allow -the participant to abort: +TachyPy :class:`~tachypy.Screen`; pass a :class:`~tachypy.ResponseHandler` to let +the participant quit early: .. code-block:: python @@ -121,16 +160,152 @@ fall outside the acceptable interval. :alt: Interactive fixation cross with real-time pressure feedback :width: 100% +Logging and a full experiment loop +---------------------------------- + +Acquisition trials are logged to **HDF5**. Logging is opt-in and follows a simple +lifecycle: + +#. ``setup_logging(name, path, int_analog)`` enables logging. ``int_analog=2`` + stores analog pressure in ``[0, 1]``; ``int_analog=1`` stores integer values + in ``[0, 255]``. +#. Every :meth:`acquire_analog_values` call writes **one trial shard** to a + staging directory, so a crash mid-experiment never loses completed trials. +#. ``uninitialize_keyboard()`` merges all shards into the final ``.hdf5`` + and releases the SDK. **Always call it at the end** (a ``try/finally`` is the + safest pattern). + +Each ``values`` dataset stores three columns — ``position``, ``time_from_onset`` +and ``time_abs`` — under a per-trial, per-key hierarchy:: + + /trials/0001/keys/0004/values + +Beyond the three columns, **each trial also carries metadata** as HDF5 group +attributes, surfaced under the ``"_attrs"`` key by :func:`load_trial`: + +.. list-table:: + :header-rows: 1 + :widths: 24 12 64 + + * - Attribute + - Type + - Meaning + * - ``backend`` + - str + - Readout backend used for the trial (``"read_analog"`` or ``"read_full_buffer"``). + * - ``threshold`` + - float + - Actuation threshold (0–1) that defined the response on this trial. + * - ``threshold_time`` + - float + - Seconds from ``trial_start_ns`` (onset) to the threshold crossing. + * - ``threshold_key`` + - int + - HID keycode of the key that crossed the threshold first. + * - ``trial_start_perf_ns`` + - int + - Onset reference timestamp (``perf_counter_ns``) used to compute ``time_from_onset``. + * - ``trial_start_clock`` + - str + - Clock the onset was supplied on (``"perf"`` or ``"mono"``). + +The threshold-related attributes (``threshold_time``, ``threshold_key``) are +absent when the threshold was never reached during the trial. + +A minimal but complete experiment that ties the lifecycle together: + +.. code-block:: python + + from tachypy import FixationCross, ResponseHandler, Screen, WOOTING_ACQUISITION + from tachypy.wooting import convert_char_to_keycode + + YES, NO = "z", "c" + + acq = WOOTING_ACQUISITION(threshold=0.8, min_pressure_start=0.33, max_pressure_start=0.66) + acq.initialize_keyboard() # builds the native interface on first use + acq.setup_logging(name="participant_01", path="logs", int_analog=2) + + screen = Screen(fullscreen=False) + rh = ResponseHandler(screen=screen) + fixation = FixationCross(center=(screen.width // 2, screen.height // 2), + half_width=18, half_height=18, thickness=8, color=(0, 0, 0)) + + try: + for trial in range(1, 21): + # 1) readiness: wait for both fingers to rest lightly on the keys + if not acq.wait_light_press_visual([YES, NO], screen=screen, + response_handler=rh, fixation_cross=fixation): + break # participant pressed a quit key (Esc, etc.) + + # 2) present your stimulus, then time-lock the trial to the flip + screen.fill((128, 128, 128)) + # ... draw your stimulus here ... + onset = screen.flip() # flip() returns the post-swap timestamp = onset + + # 3) acquire the response trajectory (writes one HDF5 shard) + hier = acq.acquire_analog_values([YES, NO], trial_start_ns=onset, trial_start_clock="mono") + response = acq.get_response_key(hier, [YES, NO]) + print(f"trial {trial}: response = {convert_char_to_keycode([response])[0]}") + + finally: + acq.uninitialize_keyboard() # merges shards -> logs/participant_01.hdf5 + screen.close() + +The trial is time-locked through the flip: ``screen.flip()`` returns the post-swap +timestamp on TachyPy's monotonic clock, which is passed straight to +``acquire_analog_values`` as ``trial_start_ns`` with ``trial_start_clock="mono"``. +Every sample's ``time_from_onset`` is then measured from that exact onset. + +Reading the log back afterwards needs no keyboard: + +.. code-block:: python + + from tachypy.wooting import load_session, load_trial, trial_to_dataframe + + session = load_session("logs/participant_01.hdf5") # every trial + trial = load_trial("logs/participant_01.hdf5", 1) # one trial + df = trial_to_dataframe(trial) # tidy pandas DataFrame + + trial["0006"]["position"] # per-key trajectory (keycode "0006") + trial["_attrs"]["threshold_time"] # trial metadata (see the table above) + +Detecting finger removal +------------------------ + +For the trajectory to be meaningful, the participant must keep their fingers on +the keys *throughout* the trial. Lifting a finger mid-response breaks the +continuous signal the analog keyboard is meant to capture — it is the in-trial +counterpart to the pre-trial readiness check above. After each +:meth:`acquire_analog_values`, the acquisition object reports whether a removal +occurred, so you can warn the participant before it becomes a habit: + +.. code-block:: python + + acq.acquire_analog_values([YES, NO], trial_start_ns=onset) + + if acq.reached_consecutive_removal_limit(2): + # show your own on-screen message (e.g. a TachyPy Text) + warn(f"Keep your fingers on the keys — lifted {acq.current_removal_streak} trials in a row.") + elif acq.last_trial_had_removal: + warn("Try to keep your fingers resting on the keys.") + +Related counters let you monitor data quality across the whole session: +``last_trial_had_removal``, ``current_removal_streak``, +``reached_consecutive_removal_limit(n)``, ``removal_trials``, and +``removal_trial_proportion`` (the fraction of trials with at least one removal). +Logging these alongside your responses makes it easy to flag or exclude +compromised trials during analysis. + Custom widgets (advanced) ------------------------- ``wait_light_press_visual`` builds an :class:`~tachypy.feedback.InteractiveFixationCross` by default. To render feedback differently, subclass :class:`~tachypy.feedback.PressureFeedbackWidget` and pass it -via ``widget=``. The pressure state machine -(:class:`~tachypy.feedback.PressureFeedbackState`) and the pressure-to-scale mapper -(:class:`~tachypy.feedback.PressureScaleMapper`) are reusable building blocks. See -:doc:`api` for the full ``tachypy.feedback`` reference. +via ``widget=``. The settings (:class:`~tachypy.feedback.PressureFeedbackConfig`, +which also computes the pressure-to-scale mapping via ``scale_for()``) and the +pressure state machine (:class:`~tachypy.feedback.PressureFeedbackState`) are +reusable building blocks. See :doc:`api` for the full ``tachypy.feedback`` reference. These tools are keyboard-agnostic: any object exposing the :class:`~tachypy.feedback.PressureSource` contract (``read_pressures`` plus the diff --git a/setup.cfg b/setup.cfg index df3dc73..0a0b05f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [metadata] name = tachypy version = 0.1.17 -author = Ian Charest and Frederic Gosselin +author = Ian Charest, Mathias Salvas-Hebert and Frederic Gosselin author_email = charest.ian@gmail.com description = A package for psychophysics in Python, using GLFW and OpenGL. long_description = file: README.md @@ -41,18 +41,14 @@ test = pytest>=7.0 pytest-cov>=5.0 ruff>=0.6 -glfw = - glfw>=2.7 -audio = -text = - Pillow>=10.0 -system_text = - freetype-py>=2.4 - uharfbuzz>=0.39 +wooting = + tachywooting>=0.2.0 [options.entry_points] console_scripts = tachypy-clock-demo = tachypy.examples.clock_timer_demo:main + tachypy-wooting-fixation-demo = tachypy.wooting.demos.visual_fixation_demo:main + tachypy-wooting-mini-bw = tachypy.wooting.demos.mini_bw_experiment:main [tool:pytest] addopts = -q diff --git a/setup.py b/setup.py index 2eaee82..b083237 100644 --- a/setup.py +++ b/setup.py @@ -14,6 +14,7 @@ package_dir={'': 'src'}, install_requires=requires, extras_require={ + 'test': ['pytest>=7.0', 'pytest-cov>=5.0', 'ruff>=0.6'], 'wooting': ['tachywooting>=0.2.0'], }, python_requires='>=3.10', diff --git a/src/tachypy/__init__.py b/src/tachypy/__init__.py index 173e28c..858f0e5 100644 --- a/src/tachypy/__init__.py +++ b/src/tachypy/__init__.py @@ -44,7 +44,6 @@ "InteractiveFixationCross", "PressureFeedbackState", "PressureFeedbackConfig", - "PressureScaleMapper", "PressureSource", "VisualPressureFeedbackMixin", ] @@ -92,7 +91,6 @@ "InteractiveFixationCross": ("tachypy.feedback", "InteractiveFixationCross"), "PressureFeedbackState": ("tachypy.feedback", "PressureFeedbackState"), "PressureFeedbackConfig": ("tachypy.feedback", "PressureFeedbackConfig"), - "PressureScaleMapper": ("tachypy.feedback", "PressureScaleMapper"), "PressureSource": ("tachypy.feedback", "PressureSource"), "VisualPressureFeedbackMixin": ("tachypy.feedback", "VisualPressureFeedbackMixin"), # Wooting keyboard integration — convenience shortcut for the one distinctive, @@ -100,7 +98,7 @@ # Resolved lazily from the `tachypy.wooting` facade, which requires the # `tachypy[wooting]` extra (a clear ImportError is raised otherwise). Kept out # of `__all__` so tachypy core stays keyboard-agnostic and doc builds / `import *` - # never pull in tachywooting. Generic helpers (visualize, load_trial, lib, ffi, …) + # never pull in TachyWooting. Generic helpers (visualize, load_trial, lib, ffi, …) # are intentionally NOT aliased here — they live under `tachypy.wooting` to keep # the top-level namespace unambiguous and collision-free for future devices. "WOOTING_ACQUISITION": ("tachypy.wooting", "WOOTING_ACQUISITION"), diff --git a/src/tachypy/feedback/__init__.py b/src/tachypy/feedback/__init__.py index f510d7f..f804b4b 100644 --- a/src/tachypy/feedback/__init__.py +++ b/src/tachypy/feedback/__init__.py @@ -1,19 +1,24 @@ """Visual pressure-feedback toolkit for analog keyboards. -This subpackage is keyboard-agnostic: it renders feedback for any object that -satisfies :class:`PressureSource` (it never imports a keyboard package). Most -users do not import from here directly — they call ``wait_light_press_visual`` -on an acquisition class enriched with :class:`VisualPressureFeedbackMixin` +Keyboard-agnostic: it renders feedback for any object satisfying +:class:`PressureSource` and never imports a keyboard package. Most users do not +import from here directly — they call ``wait_light_press_visual`` on an +acquisition class enriched with :class:`VisualPressureFeedbackMixin` (see :mod:`tachypy.wooting`). The building blocks below are exposed for power users who want custom widgets or to drive the loop manually. + +Layout +------ +- ``model`` — pure logic: ``PressureSource``, ``PressureFeedbackConfig`` + (thresholds, hold, and scaling), and ``PressureFeedbackState`` (no OpenGL). +- ``widgets`` — rendering: ``PressureFeedbackWidget`` (ABC) and the default + ``InteractiveFixationCross``. +- ``runner`` — the agnostic loop (``run_light_press_visual``) and the + user-facing ``VisualPressureFeedbackMixin``. """ -from .engine import DEFAULT_EXIT_KEYS, run_light_press_visual -from .fixation import InteractiveFixationCross -from .mapping import PressureScaleMapper -from .mixin import VisualPressureFeedbackMixin -from .source import PressureSource -from .state import PressureFeedbackConfig, PressureFeedbackState, PressureStatus -from .widgets import PressureFeedbackWidget +from .model import PressureFeedbackConfig, PressureFeedbackState, PressureSource +from .runner import DEFAULT_EXIT_KEYS, VisualPressureFeedbackMixin, run_light_press_visual +from .widgets import InteractiveFixationCross, PressureFeedbackWidget __all__ = [ "DEFAULT_EXIT_KEYS", @@ -21,9 +26,7 @@ "PressureFeedbackConfig", "PressureFeedbackState", "PressureFeedbackWidget", - "PressureScaleMapper", "PressureSource", - "PressureStatus", "VisualPressureFeedbackMixin", "run_light_press_visual", ] diff --git a/src/tachypy/feedback/engine.py b/src/tachypy/feedback/engine.py deleted file mode 100644 index 8aa3e31..0000000 --- a/src/tachypy/feedback/engine.py +++ /dev/null @@ -1,138 +0,0 @@ -"""Keyboard-agnostic visual pressure-feedback loop. - -This module owns the render loop only. It never imports any keyboard package: -pressures are supplied through a ``read_pair`` callable, and timing can be -delegated to an injected ``wait_until`` (the keyboard's precise sleep) or falls -back to a portable default. -""" -from __future__ import annotations - -import time -from typing import Callable, Sequence - -from .state import PressureFeedbackState -from .widgets import PressureFeedbackWidget - -DEFAULT_EXIT_KEYS: tuple[str, ...] = ("escape", "esc", "enter", "return", "space", "q") - -_TICK_INTERVAL = 1.0 / 1000.0 # 1000 Hz polling - - -def _exit_requested(response_handler, exit_keys: set[str]) -> bool: - """Return True when the user requested an exit through a response handler. - - Works with any TachyPy ``ResponseHandler``-like object (duck-typed): it may - expose ``get_events``, ``should_quit`` and ``get_key_presses``. - """ - if response_handler is None: - return False - if hasattr(response_handler, "get_events"): - response_handler.get_events() - if hasattr(response_handler, "should_quit") and response_handler.should_quit(): - return True - if not hasattr(response_handler, "get_key_presses"): - return False - for event in response_handler.get_key_presses(): - if event.get("type") == "keydown" and str(event.get("key", "")).lower() in exit_keys: - return True - return False - - -def _default_wait_until(next_t: float) -> None: - remaining = next_t - time.perf_counter() - if remaining > 0: - time.sleep(remaining) - - -def run_light_press_visual( - *, - read_pair: Callable[[], tuple[float, float]], - state: PressureFeedbackState, - widget: PressureFeedbackWidget, - screen, - response_handler=None, - exit_keys: Sequence[str] = DEFAULT_EXIT_KEYS, - overlay_drawables: Sequence[object] | None = None, - background_color=(128, 128, 128), - timeout_seconds: float | None = None, - wait_until: Callable[[float], None] | None = None, - verbose: bool = False, -) -> bool: - """Run the visual light-press feedback loop until ready or aborted. - - Parameters - ---------- - read_pair : callable - Zero-argument callable returning ``(left_pressure, right_pressure)``. - state : PressureFeedbackState - Feedback state machine to drive each frame. - widget : PressureFeedbackWidget - Widget updated and drawn each frame. - screen : object - TachyPy ``Screen``-like object. Must expose ``flip()``; if it exposes - ``fill(color)``, the screen is cleared with ``background_color``. - response_handler : object, optional - ``ResponseHandler``-like object. Exit and quit requests return ``False``. - exit_keys : sequence of str - Keys that abort the wait when ``response_handler`` is active. - overlay_drawables : sequence, optional - Objects with ``.draw()`` called each frame after the widget. - background_color : tuple or callable - RGB color (or callable returning one) used to clear the screen. - timeout_seconds : float, optional - Maximum wait time. Raises ``TimeoutError`` if exceeded. - wait_until : callable, optional - ``wait_until(next_t)`` used to pace the loop. Defaults to a portable - sleep; pass a keyboard's precise tick for tighter timing. - verbose : bool, default=False - Reserved for future logging hooks. - - Returns - ------- - bool - ``True`` when both keys were held in range for the hold duration. - ``False`` when the user exits via ``response_handler``. - """ - if not hasattr(screen, "flip"): - raise AttributeError("screen must expose flip()") - wait_until = _default_wait_until if wait_until is None else wait_until - - exit_key_set = {str(key).lower() for key in exit_keys} - if response_handler is not None and hasattr(response_handler, "keys_to_listen"): - response_handler.keys_to_listen = sorted(exit_key_set) - if hasattr(response_handler, "_probed_keys"): - response_handler._probed_keys.update(exit_key_set) - - next_t = time.perf_counter() - deadline = None if timeout_seconds is None else next_t + timeout_seconds - - while True: - now = time.perf_counter() - if deadline is not None and now >= deadline: - raise TimeoutError("run_light_press_visual: timeout exceeded") - if _exit_requested(response_handler, exit_key_set): - return False - - frame_background_color = background_color() if callable(background_color) else background_color - if hasattr(screen, "fill"): - screen.fill(frame_background_color) - - left, right = read_pair() - state.update(left_pressure=float(left), right_pressure=float(right), now=now) - - widget.update(state) - widget.draw() - if overlay_drawables: - for drawable in overlay_drawables: - drawable.draw() - - screen.flip() - - if state.is_ready: - return True - - next_t += _TICK_INTERVAL - now2 = time.perf_counter() - if next_t < (now2 - 0.10): - next_t = now2 + _TICK_INTERVAL - wait_until(next_t) diff --git a/src/tachypy/feedback/fixation.py b/src/tachypy/feedback/fixation.py deleted file mode 100644 index d11437f..0000000 --- a/src/tachypy/feedback/fixation.py +++ /dev/null @@ -1,379 +0,0 @@ -from __future__ import annotations - -from .state import PressureFeedbackState -from .widgets import PressureFeedbackWidget - - -class InteractiveFixationCross(PressureFeedbackWidget): - def __init__( - self, - # Required TachyPy context - screen, - # Manual fixation-cross geometry - center=None, - half_width: float = 8.0, - half_height: float = 8.0, - thickness: float = 1.0, - # Visual colors - initial_color=(100, 100, 100), - target_color=(0, 0, 0), - vertical_color=None, - background_color=(128, 128, 128), - # Optional objects used to simplify setup - fixation_cross=None, - acquisition=None, - # Optional goal markers (thin vertical ticks at ±half_width) - show_goal_markers: bool | float = False, - # Optional real-time pressure text - show_pressure_text: bool = False, - left_pressure_label: str = "", - right_pressure_label: str = "", - pressure_text_color=None, - pressure_text_font_size: int | None = None, - pressure_text_width: float | None = None, - pressure_text_height: float | None = None, - pressure_text_gap: float = 10.0, - pressure_text_decimals: int = 2, - pressure_text_font_name: str | None = None, - ): - """ - Create an interactive TachyPy fixation cross for visual pressure feedback. - - This widget can be configured manually, or it can reuse values from - existing objects to reduce duplicated setup in experiments. - - Values taken from `screen` - -------------------------- - `screen` is required because TachyPy drawing needs an active screen. - If `center` is not provided and no `fixation_cross` is provided, the - widget centers itself from `screen.width` / `screen.height` (or `w` / `h` - if those names are used by the screen object). - - Values taken from `fixation_cross` - ---------------------------------- - Pass an existing TachyPy `FixationCross` when you already created one - for the experiment and want this widget to match it. The widget copies: - - - `center` -> widget center - - `half_width` -> horizontal half-size - - `half_height` -> vertical half-size - - `thickness` -> line thickness - - `color` -> `target_color` - - These copied values override the constructor defaults. Manual values are - used only when the existing fixation cross does not expose the matching - attribute. - - Values taken from `acquisition` - ------------------------------- - Pass a keyboard acquisition instance when the widget should be tied to - the same object that owns the pressure configuration. The widget stores: - - - `min_pressure_start` - - `max_pressure_start` - - `threshold` - - `hold_seconds` - - These values are kept on the widget for inspection and consistency with - `wait_light_press_visual()`. The actual real-time pressure state is - still provided through `update(state)`. - - Pressure text - ------------- - If `show_pressure_text=True`, TachyPy `Text` objects are shown above the - cross only for keys currently outside the acceptable pressure interval. - Text size and box dimensions scale from the fixation cross size unless - `pressure_text_font_size`, `pressure_text_width`, or - `pressure_text_height` are provided explicitly. - """ - if fixation_cross is not None: - center = self._as_tuple(getattr(fixation_cross, "center", center)) - half_width = getattr(fixation_cross, "half_width", half_width) - half_height = getattr(fixation_cross, "half_height", half_height) - thickness = getattr(fixation_cross, "thickness", thickness) - target_color = getattr(fixation_cross, "color", target_color) - - initial_color = self._as_rgb_color(initial_color, "initial_color") - target_color = self._as_rgb_color(target_color, "target_color") - background_color = self._as_rgb_color(background_color, "background_color") - vertical_color = target_color if vertical_color is None else self._as_rgb_color(vertical_color, "vertical_color") - pressure_text_color = ( - None if pressure_text_color is None else self._as_rgb_color(pressure_text_color, "pressure_text_color") - ) - - if initial_color == background_color: - raise ValueError("initial_color must differ from background_color") - if half_width <= 0 or half_height <= 0 or thickness <= 0: - raise ValueError("half_width, half_height, and thickness must be positive") - - # OpenGL drawing primitives are imported lazily so the feedback package - # (and its pure-logic classes) stays importable in headless environments. - from tachypy import Line - if show_pressure_text: - from tachypy import Text - else: - Text = None - - self._set_tachypy_context(screen=screen, line_cls=Line, text_cls=Text) - self._set_acquisition_context(acquisition) - self._set_geometry(center=center, half_width=half_width, half_height=half_height, thickness=thickness) - self._set_colors( - initial_color=initial_color, - target_color=target_color, - vertical_color=vertical_color, - background_color=background_color, - ) - self._set_pressure_text( - show_pressure_text=show_pressure_text, - left_pressure_label=left_pressure_label, - right_pressure_label=right_pressure_label, - pressure_text_color=pressure_text_color, - pressure_text_font_size=pressure_text_font_size, - pressure_text_width=pressure_text_width, - pressure_text_height=pressure_text_height, - pressure_text_gap=pressure_text_gap, - pressure_text_decimals=pressure_text_decimals, - pressure_text_font_name=pressure_text_font_name, - ) - self.show_goal_markers = bool(show_goal_markers) - self._reset_runtime_state() - - def _set_tachypy_context(self, screen, line_cls, text_cls) -> None: - self.screen = screen - self._line_cls = line_cls - self._text_cls = text_cls - - def _set_acquisition_context(self, acquisition) -> None: - self.acquisition = acquisition - self.min_pressure_start = getattr(acquisition, "min_pressure_start", None) - self.max_pressure_start = getattr(acquisition, "max_pressure_start", None) - self.threshold = getattr(acquisition, "threshold", None) - self.hold_seconds = getattr(acquisition, "hold_seconds", None) - - def _set_geometry(self, center, half_width: float, half_height: float, thickness: float) -> None: - self.center = center - self.half_width = float(half_width) - self.half_height = float(half_height) - self.thickness = float(thickness) - - def _set_colors(self, initial_color, target_color, vertical_color, background_color) -> None: - self.initial_color = initial_color - self.target_color = target_color - self.vertical_color = vertical_color - self.background_color = background_color - - def _set_pressure_text( - self, - show_pressure_text: bool, - left_pressure_label: str, - right_pressure_label: str, - pressure_text_color, - pressure_text_font_size: int | None, - pressure_text_width: float | None, - pressure_text_height: float | None, - pressure_text_gap: float, - pressure_text_decimals: int, - pressure_text_font_name: str | None = None, - ) -> None: - self.show_pressure_text = bool(show_pressure_text) - self.left_pressure_label = str(left_pressure_label) - self.right_pressure_label = str(right_pressure_label) - self.pressure_text_color = tuple(pressure_text_color or self.target_color) - self.pressure_text_font_size = int(pressure_text_font_size or self._auto_text_font_size()) - self.pressure_text_width = float(pressure_text_width or self._auto_text_width()) - self.pressure_text_height = float(pressure_text_height or self._auto_text_height()) - self.pressure_text_gap = float(pressure_text_gap) - self.pressure_text_decimals = int(pressure_text_decimals) - self.pressure_text_font_name = pressure_text_font_name - - def _reset_runtime_state(self) -> None: - self.left_pressure = 0.0 - self.right_pressure = 0.0 - self.left_status = "too_weak" - self.right_status = "too_weak" - self.left_scale = 1.0 - self.right_scale = 1.0 - self.color = self.initial_color - self._left_line = None - self._right_line = None - self._vertical_line = None - self._left_marker = None - self._right_marker = None - self._left_text = None - self._right_text = None - - def update(self, state: PressureFeedbackState) -> None: - """Update the widget from a pressure feedback state. - - Parameters - ---------- - state : PressureFeedbackState - Latest pressure feedback state. The widget copies pressure values, - statuses, scales, and hold progress from this object. - - Returns - ------- - None - The widget state is updated in place. - """ - self.left_pressure = state.left_pressure - self.right_pressure = state.right_pressure - self.left_status = state.left_status - self.right_status = state.right_status - self.left_scale = state.left_scale - self.right_scale = state.right_scale - self.color = self._lerp_color(self.initial_color, self.target_color, state.hold_progress) - - def draw(self) -> None: - """Draw the interactive fixation cross and optional pressure text. - - Notes - ----- - The vertical line is always drawn. A horizontal side with scale ``0`` is - hidden, which corresponds to no detected pressure on that side. - """ - center_x, center_y = self._center() - left_x = center_x - self.half_width * self.left_scale - right_x = center_x + self.half_width * self.right_scale - top_y = center_y + self.half_height - bottom_y = center_y - self.half_height - - if self.show_goal_markers: - self._draw_goal_markers(center_x, center_y) - if self.left_scale > 0.0: - self._draw_line("_left_line", (left_x, center_y), (center_x, center_y), self.color) - if self.right_scale > 0.0: - self._draw_line("_right_line", (center_x, center_y), (right_x, center_y), self.color) - self._draw_line( - "_vertical_line", - (center_x, bottom_y), - (center_x, top_y), - self.vertical_color or self.color, - ) - if self.show_pressure_text and (self.left_status != "ideal" or self.right_status != "ideal"): - self._draw_pressure_text(center_x, top_y) - - def _center(self): - if self.center is not None: - return self.center - width = getattr(self.screen, "width", getattr(self.screen, "w", 0)) - height = getattr(self.screen, "height", getattr(self.screen, "h", 0)) - return width / 2, height / 2 - - def _draw_line(self, attr_name: str, start, end, color, thickness: float | None = None) -> None: - t = self.thickness if thickness is None else thickness - line = getattr(self, attr_name) - if line is None: - line = self._line_cls(start_point=start, end_point=end, thickness=t, color=color) - setattr(self, attr_name, line) - else: - line.set_start_point(start) - line.set_end_point(end) - line.set_color(color) - line.set_thickness(t) - line.draw() - - def _draw_goal_markers(self, center_x: float, center_y: float) -> None: - SIZE_FACTOR = 0.33 - marker_width = max(1.0, self.thickness * SIZE_FACTOR) - left_marker_x = center_x - self.half_width - right_marker_x = center_x + self.half_width - self._draw_line( - "_left_marker", - (left_marker_x - marker_width, center_y), - (left_marker_x, center_y), - self.target_color, - thickness=self.thickness, - ) - self._draw_line( - "_right_marker", - (right_marker_x, center_y), - (right_marker_x + marker_width, center_y), - self.target_color, - thickness=self.thickness, - ) - - def _draw_pressure_text(self, center_x: float, top_y: float) -> None: - text_y1 = top_y + self.pressure_text_gap - text_y2 = text_y1 + self.pressure_text_height - left_rect = ( - center_x - self.half_width - self.pressure_text_width, - text_y1, - center_x - self.half_width, - text_y2, - ) - right_rect = ( - center_x + self.half_width, - text_y1, - center_x + self.half_width + self.pressure_text_width, - text_y2, - ) - - if self.left_status != "ideal": - left_text = self._format_pressure(self.left_pressure_label, self.left_pressure) - self._left_text = self._draw_text(self._left_text, left_text, left_rect) - if self.right_status != "ideal": - right_text = self._format_pressure(self.right_pressure_label, self.right_pressure) - self._right_text = self._draw_text(self._right_text, right_text, right_rect) - - def _draw_text(self, text_obj, text: str, dest_rect): - if text_obj is None: - kwargs = { - "text": text, - "font_size": self.pressure_text_font_size, - "color": self.pressure_text_color, - "dest_rect": dest_rect, - } - if self.pressure_text_font_name is not None: - kwargs["font_name"] = self.pressure_text_font_name - text_obj = self._text_cls(**kwargs) - else: - text_obj.set_dest_rect(dest_rect) - if text_obj.text != text: - text_obj.set_text(text) - text_obj.draw() - return text_obj - - def _format_pressure(self, label: str, pressure: float) -> str: - prefix = f"{label}: " if label else "" - return f"{prefix}{pressure:.{self.pressure_text_decimals}f}" - - def _screen_min(self) -> float: - width = float(getattr(self.screen, "width", getattr(self.screen, "w", 1024))) - height = float(getattr(self.screen, "height", getattr(self.screen, "h", 768))) - return min(width, height) - - def _auto_text_font_size(self) -> int: - return max(12, int(round(self._screen_min() * 0.012))) - - def _auto_text_width(self) -> float: - return max(48.0, self._screen_min() * 0.055) - - def _auto_text_height(self) -> float: - return max(20.0, self.pressure_text_font_size * 1.5) - - @staticmethod - def _lerp_color(start, end, progress: float): - progress = max(0.0, min(1.0, float(progress))) - return tuple( - int(round(float(s) + (float(e) - float(s)) * progress)) - for s, e in zip(start, end) - ) - - @staticmethod - def _as_tuple(value): - if value is None: - return None - return tuple(float(item) for item in value) - - @staticmethod - def _as_rgb_color(value, name: str): - try: - color = tuple(int(round(float(channel))) for channel in value) - except TypeError as exc: - raise ValueError(f"{name} must be an RGB sequence") from exc - if len(color) != 3: - raise ValueError(f"{name} must contain exactly 3 RGB channels") - if any(channel < 0 or channel > 255 for channel in color): - raise ValueError(f"{name} RGB channels must be between 0 and 255") - return color diff --git a/src/tachypy/feedback/mapping.py b/src/tachypy/feedback/mapping.py deleted file mode 100644 index 46b9900..0000000 --- a/src/tachypy/feedback/mapping.py +++ /dev/null @@ -1,76 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass - - -@dataclass(frozen=True) -class PressureScaleMapper: - """Map analog pressure values to visual scale factors. - - Parameters - ---------- - min_scale : float, default=0.25 - Scale used for the weakest non-zero pressure. - normal_scale : float, default=1.0 - Scale used when pressure is inside the accepted range. - max_scale : float, default=2.0 - Maximum scale used for strong over-pressure. - - Notes - ----- - A pressure value of exactly ``0.0`` maps to ``0.0`` so the corresponding - horizontal line segment can be hidden entirely. - """ - - min_scale: float = 0.25 - normal_scale: float = 1.0 - max_scale: float = 2.0 - - def __post_init__(self) -> None: - if not (0 < self.min_scale <= self.normal_scale <= self.max_scale): - raise ValueError("Require 0 < min_scale <= normal_scale <= max_scale") - - def map( - self, - pressure: float, - min_pressure_start: float, - max_pressure_start: float, - ) -> float: - """Return the visual scale for one pressure value. - - Parameters - ---------- - pressure : float - Analog pressure in the ``[0, 1]`` range. - min_pressure_start : float - Lower bound of the accepted light-press range. - max_pressure_start : float - Upper bound of the accepted light-press range. - - Returns - ------- - float - Visual scale factor. Returns ``0.0`` when ``pressure`` is exactly - zero, ``normal_scale`` inside the accepted interval, and a clamped - continuous scale outside it. - """ - pressure = max(0.0, min(1.0, float(pressure))) - if pressure == 0.0: - return 0.0 - - if pressure < min_pressure_start: - if min_pressure_start <= 0: - return self.normal_scale - ratio = pressure / min_pressure_start - return self._clamp(self.min_scale + ratio * (self.normal_scale - self.min_scale)) - - if pressure <= max_pressure_start: - return self.normal_scale - - if max_pressure_start >= 1.0: - return self.max_scale - ratio = (pressure - max_pressure_start) / (1.0 - max_pressure_start) - return self._clamp(self.normal_scale + ratio * (self.max_scale - self.normal_scale)) - - def _clamp(self, value: float) -> float: - return max(self.min_scale, min(self.max_scale, float(value))) diff --git a/src/tachypy/feedback/state.py b/src/tachypy/feedback/model.py similarity index 56% rename from src/tachypy/feedback/state.py rename to src/tachypy/feedback/model.py index f100299..f1fbf2d 100644 --- a/src/tachypy/feedback/state.py +++ b/src/tachypy/feedback/model.py @@ -1,16 +1,53 @@ -from __future__ import annotations +"""Pure pressure-feedback model: source contract, settings, and state machine. -from dataclasses import dataclass, field -from typing import Literal +This module contains no OpenGL or drawing code, so it stays importable in +headless environments and is unit-testable on its own. +""" +from __future__ import annotations -from .mapping import PressureScaleMapper +from dataclasses import dataclass +from typing import Dict, Literal, Protocol, Sequence, Union, runtime_checkable +# Internal classification of a single key's pressure relative to the interval. PressureStatus = Literal["too_weak", "ideal", "too_strong"] +@runtime_checkable +class PressureSource(Protocol): + """Minimal interface a keyboard must expose to drive visual feedback. + + The feedback engine is keyboard-agnostic: it only needs a way to read + pressures and the light-press thresholds. Any object satisfying this + protocol (for example ``tachywooting.WOOTING_ACQUISITION``) can drive the + visual feedback, without TachyPy ever importing the keyboard package. + + Attributes + ---------- + min_pressure_start, max_pressure_start : float + Bounds of the accepted light-press interval. + threshold : float + Response threshold of the acquisition task. + hold_seconds : float + Default continuous-hold duration for readiness checks. + + Methods + ------- + read_pressures(keys) + Return current analog pressures (``[0, 1]``) for the given keys, + as a mapping keyed by ``str(key)`` preserving input order. + """ + + min_pressure_start: float + max_pressure_start: float + threshold: float + hold_seconds: float + + def read_pressures(self, keys: Sequence[Union[str, int]]) -> Dict[str, float]: ... + + @dataclass(frozen=True) class PressureFeedbackConfig: - """Configuration for pressure-readiness feedback. + """Settings for pressure-readiness feedback: thresholds, hold, and scaling. Parameters ---------- @@ -22,27 +59,32 @@ class PressureFeedbackConfig: Response threshold used by the acquisition task. Must be greater than ``max_pressure_start``. hold_seconds : float, default=0.30 - Duration for which both pressures must remain inside the accepted - interval before readiness is reached. - mapper : PressureScaleMapper, optional - Object used to convert pressure values to visual scale factors. + Duration both pressures must remain inside the accepted interval before + readiness is reached. + min_scale, normal_scale, max_scale : float + Visual scale factors for the weakest non-zero pressure, the in-range + pressure, and strong over-pressure (used by :meth:`scale_for`). """ min_pressure_start: float = 0.01 max_pressure_start: float = 0.35 threshold: float = 0.8 hold_seconds: float = 0.30 - mapper: PressureScaleMapper = field(default_factory=PressureScaleMapper) + min_scale: float = 0.25 + normal_scale: float = 1.0 + max_scale: float = 2.0 def __post_init__(self) -> None: if not (0 <= self.min_pressure_start < self.max_pressure_start < self.threshold <= 1): raise ValueError("Require 0 <= min_pressure_start < max_pressure_start < threshold <= 1") if self.hold_seconds <= 0: raise ValueError("hold_seconds must be positive") + if not (0 < self.min_scale <= self.normal_scale <= self.max_scale): + raise ValueError("Require 0 < min_scale <= normal_scale <= max_scale") @classmethod def from_source(cls, source, *, hold_seconds: float | None = None, **overrides): - """Build a config from a :class:`~tachypy.feedback.PressureSource`. + """Build a config from a :class:`PressureSource`. Parameters ---------- @@ -52,7 +94,7 @@ def from_source(cls, source, *, hold_seconds: float | None = None, **overrides): hold_seconds : float, optional Override the source's ``hold_seconds``. **overrides - Any other field to override (``mapper``, thresholds, ...). + Any other field to override (scale factors, thresholds, ...). Returns ------- @@ -67,6 +109,34 @@ def from_source(cls, source, *, hold_seconds: float | None = None, **overrides): values.update(overrides) return cls(**values) + def scale_for(self, pressure: float) -> float: + """Return the visual scale factor for one pressure value. + + Returns ``0.0`` when ``pressure`` is exactly zero, ``normal_scale`` + inside the accepted interval, and a clamped continuous scale outside it. + """ + pressure = max(0.0, min(1.0, float(pressure))) + if pressure == 0.0: + return 0.0 + + low, high = self.min_pressure_start, self.max_pressure_start + if pressure < low: + if low <= 0: + return self.normal_scale + ratio = pressure / low + return self._clamp_scale(self.min_scale + ratio * (self.normal_scale - self.min_scale)) + + if pressure <= high: + return self.normal_scale + + if high >= 1.0: + return self.max_scale + ratio = (pressure - high) / (1.0 - high) + return self._clamp_scale(self.normal_scale + ratio * (self.max_scale - self.normal_scale)) + + def _clamp_scale(self, value: float) -> float: + return max(self.min_scale, min(self.max_scale, float(value))) + @dataclass class PressureFeedbackState: @@ -75,7 +145,7 @@ class PressureFeedbackState: Parameters ---------- config : PressureFeedbackConfig - Feedback thresholds, hold duration, and pressure-to-scale mapper. + Feedback thresholds, hold duration, and scale factors. Attributes ---------- @@ -91,11 +161,6 @@ class PressureFeedbackState: Seconds spent continuously inside the accepted interval. is_ready : bool ``True`` once both pressures have remained ideal for ``hold_seconds``. - - Notes - ----- - This class contains no OpenGL or drawing code. It is pure logic and can be - unit-tested independently. """ config: PressureFeedbackConfig @@ -131,16 +196,8 @@ def update(self, left_pressure: float, right_pressure: float, now: float) -> Non self.right_pressure = float(right_pressure) self.left_status = self._status(self.left_pressure) self.right_status = self._status(self.right_pressure) - self.left_scale = self.config.mapper.map( - self.left_pressure, - self.config.min_pressure_start, - self.config.max_pressure_start, - ) - self.right_scale = self.config.mapper.map( - self.right_pressure, - self.config.min_pressure_start, - self.config.max_pressure_start, - ) + self.left_scale = self.config.scale_for(self.left_pressure) + self.right_scale = self.config.scale_for(self.right_pressure) if self.left_status == "ideal" and self.right_status == "ideal": if self._hold_started_at is None: diff --git a/src/tachypy/feedback/mixin.py b/src/tachypy/feedback/runner.py similarity index 55% rename from src/tachypy/feedback/mixin.py rename to src/tachypy/feedback/runner.py index 05e93b2..9d23b5d 100644 --- a/src/tachypy/feedback/mixin.py +++ b/src/tachypy/feedback/runner.py @@ -1,27 +1,155 @@ -"""Mixin that grafts visual pressure feedback onto any pressure source. +"""Visual pressure-feedback loop and the user-facing mixin. -Any acquisition class that satisfies :class:`~tachypy.feedback.source.PressureSource` -(reads pressures, exposes the light-press thresholds) becomes able to show -visual feedback simply by mixing this in:: +``run_light_press_visual`` is the keyboard-agnostic render loop: it never imports +any keyboard package — pressures are supplied through a ``read_pair`` callable and +timing can be delegated to an injected ``wait_until``. - class WOOTING_ACQUISITION(BaseWooting, VisualPressureFeedbackMixin): - ... - -The visual logic lives once, in :mod:`tachypy.feedback.engine`. This mixin only -wires the keyboard's pressure reading and config into that engine and builds the -default widget. +``VisualPressureFeedbackMixin`` grafts ``wait_light_press_visual`` onto any object +satisfying :class:`~tachypy.feedback.model.PressureSource`; it wires the keyboard's +pressure reading and thresholds into the loop and builds the default widget. """ from __future__ import annotations -from typing import Any, Sequence +import time +from typing import Any, Callable, Sequence + +from .model import PressureFeedbackConfig, PressureFeedbackState +from .widgets import InteractiveFixationCross, PressureFeedbackWidget + +DEFAULT_EXIT_KEYS: tuple[str, ...] = ("escape", "esc", "enter", "return", "space", "q") + +_TICK_INTERVAL = 1.0 / 1000.0 # 1000 Hz polling + + +def _exit_requested(response_handler, exit_keys: set[str]) -> bool: + """Return True when the user requested an exit through a response handler. + + Works with any TachyPy ``ResponseHandler``-like object (duck-typed): it may + expose ``get_events``, ``should_quit`` and ``get_key_presses``. + """ + if response_handler is None: + return False + if hasattr(response_handler, "get_events"): + response_handler.get_events() + if hasattr(response_handler, "should_quit") and response_handler.should_quit(): + return True + if not hasattr(response_handler, "get_key_presses"): + return False + for event in response_handler.get_key_presses(): + if event.get("type") == "keydown" and str(event.get("key", "")).lower() in exit_keys: + return True + return False + + +def _default_wait_until(next_t: float) -> None: + remaining = next_t - time.perf_counter() + if remaining > 0: + time.sleep(remaining) + + +def run_light_press_visual( + *, + read_pair: Callable[[], tuple[float, float]], + state: PressureFeedbackState, + widget: PressureFeedbackWidget, + screen, + response_handler=None, + exit_keys: Sequence[str] = DEFAULT_EXIT_KEYS, + overlay_drawables: Sequence[object] | None = None, + background_color=(128, 128, 128), + timeout_seconds: float | None = None, + wait_until: Callable[[float], None] | None = None, + verbose: bool = False, +) -> bool: + """Run the visual light-press feedback loop until ready or aborted. + + Parameters + ---------- + read_pair : callable + Zero-argument callable returning ``(left_pressure, right_pressure)``. + state : PressureFeedbackState + Feedback state machine to drive each frame. + widget : PressureFeedbackWidget + Widget updated and drawn each frame. + screen : object + TachyPy ``Screen``-like object. Must expose ``flip()``; if it exposes + ``fill(color)``, the screen is cleared with ``background_color``. + response_handler : object, optional + ``ResponseHandler``-like object. Exit and quit requests return ``False``. + exit_keys : sequence of str + Keys that abort the wait when ``response_handler`` is active. + overlay_drawables : sequence, optional + Objects with ``.draw()`` called each frame after the widget. + background_color : tuple or callable + RGB color (or callable returning one) used to clear the screen. + timeout_seconds : float, optional + Maximum wait time. Raises ``TimeoutError`` if exceeded. + wait_until : callable, optional + ``wait_until(next_t)`` used to pace the loop. Defaults to a portable + sleep; pass a keyboard's precise tick for tighter timing. + verbose : bool, default=False + Reserved for future logging hooks. -from .engine import DEFAULT_EXIT_KEYS, run_light_press_visual -from .fixation import InteractiveFixationCross -from .state import PressureFeedbackConfig, PressureFeedbackState + Returns + ------- + bool + ``True`` when both keys were held in range for the hold duration. + ``False`` when the user exits via ``response_handler``. + """ + if not hasattr(screen, "flip"): + raise AttributeError("screen must expose flip()") + wait_until = _default_wait_until if wait_until is None else wait_until + + exit_key_set = {str(key).lower() for key in exit_keys} + if response_handler is not None and hasattr(response_handler, "keys_to_listen"): + response_handler.keys_to_listen = sorted(exit_key_set) + if hasattr(response_handler, "_probed_keys"): + response_handler._probed_keys.update(exit_key_set) + + next_t = time.perf_counter() + deadline = None if timeout_seconds is None else next_t + timeout_seconds + + while True: + now = time.perf_counter() + if deadline is not None and now >= deadline: + raise TimeoutError("run_light_press_visual: timeout exceeded") + if _exit_requested(response_handler, exit_key_set): + return False + + frame_background_color = background_color() if callable(background_color) else background_color + if hasattr(screen, "fill"): + screen.fill(frame_background_color) + + left, right = read_pair() + state.update(left_pressure=float(left), right_pressure=float(right), now=now) + + widget.update(state) + widget.draw() + if overlay_drawables: + for drawable in overlay_drawables: + drawable.draw() + + screen.flip() + + if state.is_ready: + return True + + next_t += _TICK_INTERVAL + now2 = time.perf_counter() + if next_t < (now2 - 0.10): + next_t = now2 + _TICK_INTERVAL + wait_until(next_t) class VisualPressureFeedbackMixin: - """Adds :meth:`wait_light_press_visual` to a :class:`PressureSource`.""" + """Adds :meth:`wait_light_press_visual` to a :class:`PressureSource`. + + Any acquisition class that satisfies the ``PressureSource`` contract becomes + able to show visual feedback simply by mixing this in:: + + class WOOTING_ACQUISITION(BaseWooting, VisualPressureFeedbackMixin): + ... + """ def wait_light_press_visual( self, diff --git a/src/tachypy/feedback/source.py b/src/tachypy/feedback/source.py deleted file mode 100644 index ebb30b5..0000000 --- a/src/tachypy/feedback/source.py +++ /dev/null @@ -1,38 +0,0 @@ -"""Structural contract for objects that provide analog key pressure. - -The feedback engine is keyboard-agnostic: it only needs a way to read pressures -and the light-press thresholds. Any object satisfying :class:`PressureSource` -(for example ``tachywooting.WOOTING_ACQUISITION``) can drive the visual feedback, -without TachyPy ever importing the keyboard package. -""" -from __future__ import annotations - -from typing import Dict, Protocol, Sequence, Union, runtime_checkable - - -@runtime_checkable -class PressureSource(Protocol): - """Minimal interface a keyboard must expose to drive visual feedback. - - Attributes - ---------- - min_pressure_start, max_pressure_start : float - Bounds of the accepted light-press interval. - threshold : float - Response threshold of the acquisition task. - hold_seconds : float - Default continuous-hold duration for readiness checks. - - Methods - ------- - read_pressures(keys) - Return current analog pressures (``[0, 1]``) for the given keys, - as a mapping keyed by ``str(key)`` preserving input order. - """ - - min_pressure_start: float - max_pressure_start: float - threshold: float - hold_seconds: float - - def read_pressures(self, keys: Sequence[Union[str, int]]) -> Dict[str, float]: ... diff --git a/src/tachypy/feedback/widgets.py b/src/tachypy/feedback/widgets.py index c76b7b0..f097136 100644 --- a/src/tachypy/feedback/widgets.py +++ b/src/tachypy/feedback/widgets.py @@ -1,8 +1,14 @@ +"""Pressure-feedback rendering: the widget contract and the default widget. + +OpenGL primitives are imported lazily inside ``InteractiveFixationCross`` so this +module stays importable without a GL context (the abstract contract and any +pure-logic use remain headless-safe). +""" from __future__ import annotations from abc import ABC, abstractmethod -from .state import PressureFeedbackState +from .model import PressureFeedbackState class PressureFeedbackWidget(ABC): @@ -11,7 +17,7 @@ class PressureFeedbackWidget(ABC): Notes ----- Widgets consume a :class:`PressureFeedbackState` and render it using a - specific backend. The feedback engine only depends on this interface, so + specific backend. The feedback runner only depends on this interface, so new visual backends can be added without changing the loop logic. """ @@ -30,3 +36,378 @@ def update(self, state: PressureFeedbackState) -> None: def draw(self) -> None: """Draw the widget using its rendering backend.""" raise NotImplementedError + + +class InteractiveFixationCross(PressureFeedbackWidget): + def __init__( + self, + # Required TachyPy context + screen, + # Manual fixation-cross geometry + center=None, + half_width: float = 8.0, + half_height: float = 8.0, + thickness: float = 1.0, + # Visual colors + initial_color=(100, 100, 100), + target_color=(0, 0, 0), + vertical_color=None, + background_color=(128, 128, 128), + # Optional objects used to simplify setup + fixation_cross=None, + acquisition=None, + # Optional goal markers (thin vertical ticks at ±half_width) + show_goal_markers: bool | float = False, + # Optional real-time pressure text + show_pressure_text: bool = False, + left_pressure_label: str = "", + right_pressure_label: str = "", + pressure_text_color=None, + pressure_text_font_size: int | None = None, + pressure_text_width: float | None = None, + pressure_text_height: float | None = None, + pressure_text_gap: float = 10.0, + pressure_text_decimals: int = 2, + pressure_text_font_name: str | None = None, + ): + """ + Create an interactive TachyPy fixation cross for visual pressure feedback. + + This widget can be configured manually, or it can reuse values from + existing objects to reduce duplicated setup in experiments. + + Values taken from `screen` + -------------------------- + `screen` is required because TachyPy drawing needs an active screen. + If `center` is not provided and no `fixation_cross` is provided, the + widget centers itself from `screen.width` / `screen.height` (or `w` / `h` + if those names are used by the screen object). + + Values taken from `fixation_cross` + ---------------------------------- + Pass an existing TachyPy `FixationCross` when you already created one + for the experiment and want this widget to match it. The widget copies: + + - `center` -> widget center + - `half_width` -> horizontal half-size + - `half_height` -> vertical half-size + - `thickness` -> line thickness + - `color` -> `target_color` + + These copied values override the constructor defaults. Manual values are + used only when the existing fixation cross does not expose the matching + attribute. + + Values taken from `acquisition` + ------------------------------- + Pass a keyboard acquisition instance when the widget should be tied to + the same object that owns the pressure configuration. The widget stores: + + - `min_pressure_start` + - `max_pressure_start` + - `threshold` + - `hold_seconds` + + These values are kept on the widget for inspection and consistency with + `wait_light_press_visual()`. The actual real-time pressure state is + still provided through `update(state)`. + + Pressure text + ------------- + If `show_pressure_text=True`, TachyPy `Text` objects are shown above the + cross only for keys currently outside the acceptable pressure interval. + Text size and box dimensions scale from the fixation cross size unless + `pressure_text_font_size`, `pressure_text_width`, or + `pressure_text_height` are provided explicitly. + """ + if fixation_cross is not None: + center = self._as_tuple(getattr(fixation_cross, "center", center)) + half_width = getattr(fixation_cross, "half_width", half_width) + half_height = getattr(fixation_cross, "half_height", half_height) + thickness = getattr(fixation_cross, "thickness", thickness) + target_color = getattr(fixation_cross, "color", target_color) + + initial_color = self._as_rgb_color(initial_color, "initial_color") + target_color = self._as_rgb_color(target_color, "target_color") + background_color = self._as_rgb_color(background_color, "background_color") + vertical_color = target_color if vertical_color is None else self._as_rgb_color(vertical_color, "vertical_color") + pressure_text_color = ( + None if pressure_text_color is None else self._as_rgb_color(pressure_text_color, "pressure_text_color") + ) + + if initial_color == background_color: + raise ValueError("initial_color must differ from background_color") + if half_width <= 0 or half_height <= 0 or thickness <= 0: + raise ValueError("half_width, half_height, and thickness must be positive") + + # OpenGL drawing primitives are imported lazily so this module (and the + # pure-logic classes it depends on) stays importable in headless setups. + from tachypy import Line + if show_pressure_text: + from tachypy import Text + else: + Text = None + + self._set_tachypy_context(screen=screen, line_cls=Line, text_cls=Text) + self._set_acquisition_context(acquisition) + self._set_geometry(center=center, half_width=half_width, half_height=half_height, thickness=thickness) + self._set_colors( + initial_color=initial_color, + target_color=target_color, + vertical_color=vertical_color, + background_color=background_color, + ) + self._set_pressure_text( + show_pressure_text=show_pressure_text, + left_pressure_label=left_pressure_label, + right_pressure_label=right_pressure_label, + pressure_text_color=pressure_text_color, + pressure_text_font_size=pressure_text_font_size, + pressure_text_width=pressure_text_width, + pressure_text_height=pressure_text_height, + pressure_text_gap=pressure_text_gap, + pressure_text_decimals=pressure_text_decimals, + pressure_text_font_name=pressure_text_font_name, + ) + self.show_goal_markers = bool(show_goal_markers) + self._reset_runtime_state() + + def _set_tachypy_context(self, screen, line_cls, text_cls) -> None: + self.screen = screen + self._line_cls = line_cls + self._text_cls = text_cls + + def _set_acquisition_context(self, acquisition) -> None: + self.acquisition = acquisition + self.min_pressure_start = getattr(acquisition, "min_pressure_start", None) + self.max_pressure_start = getattr(acquisition, "max_pressure_start", None) + self.threshold = getattr(acquisition, "threshold", None) + self.hold_seconds = getattr(acquisition, "hold_seconds", None) + + def _set_geometry(self, center, half_width: float, half_height: float, thickness: float) -> None: + self.center = center + self.half_width = float(half_width) + self.half_height = float(half_height) + self.thickness = float(thickness) + + def _set_colors(self, initial_color, target_color, vertical_color, background_color) -> None: + self.initial_color = initial_color + self.target_color = target_color + self.vertical_color = vertical_color + self.background_color = background_color + + def _set_pressure_text( + self, + show_pressure_text: bool, + left_pressure_label: str, + right_pressure_label: str, + pressure_text_color, + pressure_text_font_size: int | None, + pressure_text_width: float | None, + pressure_text_height: float | None, + pressure_text_gap: float, + pressure_text_decimals: int, + pressure_text_font_name: str | None = None, + ) -> None: + self.show_pressure_text = bool(show_pressure_text) + self.left_pressure_label = str(left_pressure_label) + self.right_pressure_label = str(right_pressure_label) + self.pressure_text_color = tuple(pressure_text_color or self.target_color) + self.pressure_text_font_size = int(pressure_text_font_size or self._auto_text_font_size()) + self.pressure_text_width = float(pressure_text_width or self._auto_text_width()) + self.pressure_text_height = float(pressure_text_height or self._auto_text_height()) + self.pressure_text_gap = float(pressure_text_gap) + self.pressure_text_decimals = int(pressure_text_decimals) + self.pressure_text_font_name = pressure_text_font_name + + def _reset_runtime_state(self) -> None: + self.left_pressure = 0.0 + self.right_pressure = 0.0 + self.left_status = "too_weak" + self.right_status = "too_weak" + self.left_scale = 1.0 + self.right_scale = 1.0 + self.color = self.initial_color + self._left_line = None + self._right_line = None + self._vertical_line = None + self._left_marker = None + self._right_marker = None + self._left_text = None + self._right_text = None + + def update(self, state: PressureFeedbackState) -> None: + """Update the widget from a pressure feedback state. + + Parameters + ---------- + state : PressureFeedbackState + Latest pressure feedback state. The widget copies pressure values, + statuses, scales, and hold progress from this object. + + Returns + ------- + None + The widget state is updated in place. + """ + self.left_pressure = state.left_pressure + self.right_pressure = state.right_pressure + self.left_status = state.left_status + self.right_status = state.right_status + self.left_scale = state.left_scale + self.right_scale = state.right_scale + self.color = self._lerp_color(self.initial_color, self.target_color, state.hold_progress) + + def draw(self) -> None: + """Draw the interactive fixation cross and optional pressure text. + + Notes + ----- + The vertical line is always drawn. A horizontal side with scale ``0`` is + hidden, which corresponds to no detected pressure on that side. + """ + center_x, center_y = self._center() + left_x = center_x - self.half_width * self.left_scale + right_x = center_x + self.half_width * self.right_scale + top_y = center_y + self.half_height + bottom_y = center_y - self.half_height + + if self.show_goal_markers: + self._draw_goal_markers(center_x, center_y) + if self.left_scale > 0.0: + self._draw_line("_left_line", (left_x, center_y), (center_x, center_y), self.color) + if self.right_scale > 0.0: + self._draw_line("_right_line", (center_x, center_y), (right_x, center_y), self.color) + self._draw_line( + "_vertical_line", + (center_x, bottom_y), + (center_x, top_y), + self.vertical_color or self.color, + ) + if self.show_pressure_text and (self.left_status != "ideal" or self.right_status != "ideal"): + self._draw_pressure_text(center_x, top_y) + + def _center(self): + if self.center is not None: + return self.center + width = getattr(self.screen, "width", getattr(self.screen, "w", 0)) + height = getattr(self.screen, "height", getattr(self.screen, "h", 0)) + return width / 2, height / 2 + + def _draw_line(self, attr_name: str, start, end, color, thickness: float | None = None) -> None: + t = self.thickness if thickness is None else thickness + line = getattr(self, attr_name) + if line is None: + line = self._line_cls(start_point=start, end_point=end, thickness=t, color=color) + setattr(self, attr_name, line) + else: + line.set_start_point(start) + line.set_end_point(end) + line.set_color(color) + line.set_thickness(t) + line.draw() + + def _draw_goal_markers(self, center_x: float, center_y: float) -> None: + SIZE_FACTOR = 0.33 + marker_width = max(1.0, self.thickness * SIZE_FACTOR) + left_marker_x = center_x - self.half_width + right_marker_x = center_x + self.half_width + self._draw_line( + "_left_marker", + (left_marker_x - marker_width, center_y), + (left_marker_x, center_y), + self.target_color, + thickness=self.thickness, + ) + self._draw_line( + "_right_marker", + (right_marker_x, center_y), + (right_marker_x + marker_width, center_y), + self.target_color, + thickness=self.thickness, + ) + + def _draw_pressure_text(self, center_x: float, top_y: float) -> None: + text_y1 = top_y + self.pressure_text_gap + text_y2 = text_y1 + self.pressure_text_height + left_rect = ( + center_x - self.half_width - self.pressure_text_width, + text_y1, + center_x - self.half_width, + text_y2, + ) + right_rect = ( + center_x + self.half_width, + text_y1, + center_x + self.half_width + self.pressure_text_width, + text_y2, + ) + + if self.left_status != "ideal": + left_text = self._format_pressure(self.left_pressure_label, self.left_pressure) + self._left_text = self._draw_text(self._left_text, left_text, left_rect) + if self.right_status != "ideal": + right_text = self._format_pressure(self.right_pressure_label, self.right_pressure) + self._right_text = self._draw_text(self._right_text, right_text, right_rect) + + def _draw_text(self, text_obj, text: str, dest_rect): + if text_obj is None: + kwargs = { + "text": text, + "font_size": self.pressure_text_font_size, + "color": self.pressure_text_color, + "dest_rect": dest_rect, + } + if self.pressure_text_font_name is not None: + kwargs["font_name"] = self.pressure_text_font_name + text_obj = self._text_cls(**kwargs) + else: + text_obj.set_dest_rect(dest_rect) + if text_obj.text != text: + text_obj.set_text(text) + text_obj.draw() + return text_obj + + def _format_pressure(self, label: str, pressure: float) -> str: + prefix = f"{label}: " if label else "" + return f"{prefix}{pressure:.{self.pressure_text_decimals}f}" + + def _screen_min(self) -> float: + width = float(getattr(self.screen, "width", getattr(self.screen, "w", 1024))) + height = float(getattr(self.screen, "height", getattr(self.screen, "h", 768))) + return min(width, height) + + def _auto_text_font_size(self) -> int: + return max(12, int(round(self._screen_min() * 0.012))) + + def _auto_text_width(self) -> float: + return max(48.0, self._screen_min() * 0.055) + + def _auto_text_height(self) -> float: + return max(20.0, self.pressure_text_font_size * 1.5) + + @staticmethod + def _lerp_color(start, end, progress: float): + progress = max(0.0, min(1.0, float(progress))) + return tuple( + int(round(float(s) + (float(e) - float(s)) * progress)) + for s, e in zip(start, end) + ) + + @staticmethod + def _as_tuple(value): + if value is None: + return None + return tuple(float(item) for item in value) + + @staticmethod + def _as_rgb_color(value, name: str): + try: + color = tuple(int(round(float(channel))) for channel in value) + except TypeError as exc: + raise ValueError(f"{name} must be an RGB sequence") from exc + if len(color) != 3: + raise ValueError(f"{name} must contain exactly 3 RGB channels") + if any(channel < 0 or channel > 255 for channel in color): + raise ValueError(f"{name} RGB channels must be between 0 and 255") + return color diff --git a/src/tachypy/wooting/__init__.py b/src/tachypy/wooting/__init__.py index 27b205f..acc7f3a 100644 --- a/src/tachypy/wooting/__init__.py +++ b/src/tachypy/wooting/__init__.py @@ -1,12 +1,12 @@ """TachyPy ↔ Wooting integration (requires ``pip install tachypy[wooting]``). This module is the single import surface for using a Wooting analog keyboard -*inside* TachyPy experiments. It re-exports tachywooting's public API and adds an +*inside* TachyPy experiments. It re-exports TachyWooting's public API and adds an enriched :class:`WOOTING_ACQUISITION` that gains TachyPy visual feedback (``wait_light_press_visual``) on top of the hardware acquisition class. TachyPy core never imports this module, so ``pip install tachypy`` stays usable -without a keyboard. Importing this module without tachywooting installed raises a +without a keyboard. Importing this module without TachyWooting installed raises a clear, actionable error. """ from __future__ import annotations @@ -32,7 +32,7 @@ ) from tachywooting.visualize import visualize, visualize_all_keys # noqa: F401 - +# TachyPy-enriched acquisition class that combines Wooting's hardware acquisition and TachyPy's visual feedback. class WOOTING_ACQUISITION(_tachywooting.WOOTING_ACQUISITION, VisualPressureFeedbackMixin): """Wooting acquisition enriched with TachyPy visual feedback. diff --git a/tests/test_feedback.py b/tests/test_pressure_keyboard.py similarity index 86% rename from tests/test_feedback.py rename to tests/test_pressure_keyboard.py index 4937a83..be9032f 100644 --- a/tests/test_feedback.py +++ b/tests/test_pressure_keyboard.py @@ -1,25 +1,72 @@ +import importlib import sys import types import pytest +import tachypy from tachypy.feedback import ( InteractiveFixationCross, PressureFeedbackConfig, PressureFeedbackState, - PressureScaleMapper, VisualPressureFeedbackMixin, ) -def test_pressure_scale_mapper(): - mapper = PressureScaleMapper(min_scale=0.25, normal_scale=1.0, max_scale=2.0) +# Public API - assert mapper.map(0.0, 0.1, 0.4) == 0.0 - assert mapper.map(0.001, 0.1, 0.4) > 0.25 - assert mapper.map(0.1, 0.1, 0.4) == 1.0 - assert mapper.map(0.3, 0.1, 0.4) == 1.0 - assert mapper.map(1.0, 0.1, 0.4) == 2.0 +def test_wooting_shortcut_is_lazy_and_kept_out_of_star_imports(): + assert "WOOTING_ACQUISITION" not in tachypy.__all__ + assert tachypy._EXPORT_MAP["WOOTING_ACQUISITION"] == ( + "tachypy.wooting", + "WOOTING_ACQUISITION", + ) + + +# tachywooting facade + +def test_wooting_facade_enriches_tachywooting_acquisition(monkeypatch): + class BaseAcquisition: + pass + + fake_tachywooting = types.ModuleType("tachywooting") + fake_tachywooting.WOOTING_ACQUISITION = BaseAcquisition + fake_tachywooting.convert_char_to_keycode = lambda keys: keys + fake_tachywooting.ffi = object() + fake_tachywooting.lib = object() + fake_tachywooting.load_session = lambda *args, **kwargs: None + fake_tachywooting.load_trial = lambda *args, **kwargs: None + fake_tachywooting.trial_to_dataframe = lambda *args, **kwargs: None + + fake_visualize = types.ModuleType("tachywooting.visualize") + fake_visualize.visualize = lambda *args, **kwargs: None + fake_visualize.visualize_all_keys = lambda *args, **kwargs: None + + monkeypatch.setitem(sys.modules, "tachywooting", fake_tachywooting) + monkeypatch.setitem(sys.modules, "tachywooting.visualize", fake_visualize) + original_module = sys.modules.pop("tachypy.wooting", None) + try: + module = importlib.import_module("tachypy.wooting") + + assert issubclass(module.WOOTING_ACQUISITION, BaseAcquisition) + assert issubclass(module.WOOTING_ACQUISITION, VisualPressureFeedbackMixin) + assert "WOOTING_ACQUISITION" in module.__all__ + finally: + sys.modules.pop("tachypy.wooting", None) + if original_module is not None: + sys.modules["tachypy.wooting"] = original_module + + +# Pressure model + +def test_pressure_scale_for(): + cfg = PressureFeedbackConfig(min_pressure_start=0.1, max_pressure_start=0.4, threshold=0.8) + + assert cfg.scale_for(0.0) == 0.0 + assert cfg.scale_for(0.001) > 0.25 + assert cfg.scale_for(0.1) == 1.0 + assert cfg.scale_for(0.3) == 1.0 + assert cfg.scale_for(1.0) == 2.0 def test_pressure_feedback_state_hold_timer(): @@ -63,6 +110,8 @@ def test_pressure_feedback_state_resets_when_out_of_range(): assert not state.is_ready +# Widget rendering + def test_widget_updates_and_draws_lines(monkeypatch): class FakeScreen: width = 100 @@ -371,6 +420,8 @@ def __init__(self, text, font_size, color, dest_rect): assert FakeText.created == [] +# Visual wait loop + def _make_fake_acq(reader, hold_seconds=0.001): """Build a minimal PressureSource-like object enriched with the visual mixin.""" From 41b075e55f2adccaf47e648307a22ae606fe2c37 Mon Sep 17 00:00:00 2001 From: Kaapra Date: Mon, 15 Jun 2026 13:58:08 -0400 Subject: [PATCH 03/10] Exclude Wooting demo files from coverage reporting --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 0a0b05f..030a212 100644 --- a/setup.cfg +++ b/setup.cfg @@ -67,6 +67,7 @@ omit = */tachypy/gltext_sdf.py */tachypy/glsystemtext.py */tachypy/examples/* + */tachypy/wooting/demos/* [coverage:report] skip_empty = True From cdf354d48c6775e52bee13ce0e43ff113c737589 Mon Sep 17 00:00:00 2001 From: Kaapra Date: Mon, 15 Jun 2026 14:09:56 -0400 Subject: [PATCH 04/10] Update tachywooting dependency version to 0.2.1 in setup.cfg and setup.py --- setup.cfg | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 030a212..9e105e0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,7 +42,7 @@ test = pytest-cov>=5.0 ruff>=0.6 wooting = - tachywooting>=0.2.0 + tachywooting>=0.2.1 [options.entry_points] console_scripts = diff --git a/setup.py b/setup.py index b083237..233b6ca 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ install_requires=requires, extras_require={ 'test': ['pytest>=7.0', 'pytest-cov>=5.0', 'ruff>=0.6'], - 'wooting': ['tachywooting>=0.2.0'], + 'wooting': ['tachywooting>=0.2.1'], }, python_requires='>=3.10', author='Ian Charest, Mathias Salvas-Hebert and Frederic Gosselin', From 395542ee0d1bdb660ac1bd1dea86842640fbebe6 Mon Sep 17 00:00:00 2001 From: Ian Charest Date: Mon, 15 Jun 2026 14:28:51 -0400 Subject: [PATCH 05/10] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- setup.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.py b/setup.py index 233b6ca..8863b7e 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,10 @@ install_requires=requires, extras_require={ 'test': ['pytest>=7.0', 'pytest-cov>=5.0', 'ruff>=0.6'], + 'text': ['Pillow>=10.0'], + 'system_text': ['freetype-py>=2.4', 'uharfbuzz>=0.39'], + 'glfw': ['glfw>=2.7'], + 'audio': [], 'wooting': ['tachywooting>=0.2.1'], }, python_requires='>=3.10', From 77fcefa93645bb812a995caaad30270750f04474 Mon Sep 17 00:00:00 2001 From: Ian Charest Date: Mon, 15 Jun 2026 14:29:13 -0400 Subject: [PATCH 06/10] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/tachypy/feedback/widgets.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tachypy/feedback/widgets.py b/src/tachypy/feedback/widgets.py index f097136..0413aa3 100644 --- a/src/tachypy/feedback/widgets.py +++ b/src/tachypy/feedback/widgets.py @@ -55,9 +55,8 @@ def __init__( background_color=(128, 128, 128), # Optional objects used to simplify setup fixation_cross=None, - acquisition=None, # Optional goal markers (thin vertical ticks at ±half_width) - show_goal_markers: bool | float = False, + show_goal_markers: bool = False, # Optional real-time pressure text show_pressure_text: bool = False, left_pressure_label: str = "", From 7999a8bd82f63c0383c4350fc203294775e63799 Mon Sep 17 00:00:00 2001 From: Ian Charest Date: Mon, 15 Jun 2026 14:30:05 -0400 Subject: [PATCH 07/10] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/tachypy/feedback/runner.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tachypy/feedback/runner.py b/src/tachypy/feedback/runner.py index 9d23b5d..722f5d7 100644 --- a/src/tachypy/feedback/runner.py +++ b/src/tachypy/feedback/runner.py @@ -102,9 +102,11 @@ def run_light_press_visual( exit_key_set = {str(key).lower() for key in exit_keys} if response_handler is not None and hasattr(response_handler, "keys_to_listen"): - response_handler.keys_to_listen = sorted(exit_key_set) + existing = getattr(response_handler, "keys_to_listen", None) or [] + merged = {str(key).lower() for key in existing} | exit_key_set + response_handler.keys_to_listen = sorted(merged) if hasattr(response_handler, "_probed_keys"): - response_handler._probed_keys.update(exit_key_set) + response_handler._probed_keys.update(merged) next_t = time.perf_counter() deadline = None if timeout_seconds is None else next_t + timeout_seconds From 6fd8269cec9af1240358b814f1ac5786015460ec Mon Sep 17 00:00:00 2001 From: Ian Charest Date: Mon, 15 Jun 2026 14:30:16 -0400 Subject: [PATCH 08/10] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/tachypy/wooting/demos/mini_bw_experiment.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tachypy/wooting/demos/mini_bw_experiment.py b/src/tachypy/wooting/demos/mini_bw_experiment.py index e6e6e7e..3183503 100644 --- a/src/tachypy/wooting/demos/mini_bw_experiment.py +++ b/src/tachypy/wooting/demos/mini_bw_experiment.py @@ -51,7 +51,8 @@ def main() -> int: score = Text(text="Score: —", font_size=24, color=(0, 0, 0), dest_rect=(w - 240, margin + 50, w - margin, margin + 122)) - yes_code, no_code = acq._to_keycodes([YES_KEY, NO_KEY]) + from tachypy.wooting import convert_char_to_keycode + yes_code, no_code = convert_char_to_keycode([YES_KEY, NO_KEY]) # --- instructions screen --- instructions = Text( From 6fb5c6400b05ccdba875cf4f818437d9a27e444c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 18:30:31 +0000 Subject: [PATCH 09/10] Remove stale text/system_text extras references from README and docs --- README.md | 4 ++-- docs/getting_started.rst | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 78cefdb..7aa44e9 100644 --- a/README.md +++ b/README.md @@ -81,9 +81,9 @@ Optional extras: ```bash pip install -e ".[test]" # pytest -pip install -e ".[text]" # Pillow text fallback pip install -e ".[wooting]" # Wooting analog-keyboard integration # Audio support (tachyaudio) is included in the base install +# Pillow text support is included in the base install ``` ### Wooting analog-keyboard integration @@ -183,7 +183,7 @@ TACHYPY_FONT="Avenir Next, Helvetica, Arial" python example_tachypy.py backend-independent. - `GLSystemText` supports system font selection by family name, fallback list (e.g. `"Avenir Next, Helvetica, Arial"`), or direct font file path. -- For production instruction text, prefer `Text` with `.[system_text]`. +- For production instruction text, prefer `Text`. - The old texture-backed constructor is backbenched as `tachypy.text.LegacyText`. ## API Naming diff --git a/docs/getting_started.rst b/docs/getting_started.rst index b162d84..94b3b5a 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -27,9 +27,9 @@ Optional extras .. code-block:: bash pip install -e ".[test]" # pytest, coverage, lint tooling - pip install -e ".[text]" # Pillow text fallback pip install -e ".[wooting]" # Wooting analog-keyboard integration # Audio support (tachyaudio) is included in the base install + # Pillow text support is included in the base install See :doc:`wooting` for the Wooting analog-keyboard integration. From 75fbf46d5b097ba645b52b9d8d980632a5a4d6a7 Mon Sep 17 00:00:00 2001 From: Kaapra Date: Mon, 15 Jun 2026 15:10:38 -0400 Subject: [PATCH 10/10] Update README and documentation to clarify base install packages; enhance exit key handling in runner and widgets; clean up imports in mini_bw_experiment demo --- README.md | 3 +-- docs/getting_started.rst | 3 +-- src/tachypy/feedback/runner.py | 2 ++ src/tachypy/feedback/widgets.py | 1 + src/tachypy/wooting/demos/mini_bw_experiment.py | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7aa44e9..06938ed 100644 --- a/README.md +++ b/README.md @@ -82,8 +82,7 @@ Optional extras: ```bash pip install -e ".[test]" # pytest pip install -e ".[wooting]" # Wooting analog-keyboard integration -# Audio support (tachyaudio) is included in the base install -# Pillow text support is included in the base install +# Pillow, FreeType, HarfBuzz, GLFW, and audio are included in the base install ``` ### Wooting analog-keyboard integration diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 94b3b5a..b352313 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -28,8 +28,7 @@ Optional extras pip install -e ".[test]" # pytest, coverage, lint tooling pip install -e ".[wooting]" # Wooting analog-keyboard integration - # Audio support (tachyaudio) is included in the base install - # Pillow text support is included in the base install + # Pillow, FreeType, HarfBuzz, GLFW, and audio are included in the base install See :doc:`wooting` for the Wooting analog-keyboard integration. diff --git a/src/tachypy/feedback/runner.py b/src/tachypy/feedback/runner.py index 722f5d7..bd4f250 100644 --- a/src/tachypy/feedback/runner.py +++ b/src/tachypy/feedback/runner.py @@ -33,6 +33,8 @@ def _exit_requested(response_handler, exit_keys: set[str]) -> bool: response_handler.get_events() if hasattr(response_handler, "should_quit") and response_handler.should_quit(): return True + if hasattr(response_handler, "key_down_events"): + return any(str(key).lower() in exit_keys for key in response_handler.key_down_events) if not hasattr(response_handler, "get_key_presses"): return False for event in response_handler.get_key_presses(): diff --git a/src/tachypy/feedback/widgets.py b/src/tachypy/feedback/widgets.py index 0413aa3..109618e 100644 --- a/src/tachypy/feedback/widgets.py +++ b/src/tachypy/feedback/widgets.py @@ -55,6 +55,7 @@ def __init__( background_color=(128, 128, 128), # Optional objects used to simplify setup fixation_cross=None, + acquisition=None, # Optional goal markers (thin vertical ticks at ±half_width) show_goal_markers: bool = False, # Optional real-time pressure text diff --git a/src/tachypy/wooting/demos/mini_bw_experiment.py b/src/tachypy/wooting/demos/mini_bw_experiment.py index 3183503..78eb46f 100644 --- a/src/tachypy/wooting/demos/mini_bw_experiment.py +++ b/src/tachypy/wooting/demos/mini_bw_experiment.py @@ -9,6 +9,7 @@ try: from tachypy import FixationCross, ResponseHandler, Screen, Text, Texture from tachypy import WOOTING_ACQUISITION + from tachypy.wooting import convert_char_to_keycode except ImportError as exc: # pragma: no cover raise SystemExit( "This demo requires the Wooting integration: pip install 'tachypy[wooting]'" @@ -51,7 +52,6 @@ def main() -> int: score = Text(text="Score: —", font_size=24, color=(0, 0, 0), dest_rect=(w - 240, margin + 50, w - margin, margin + 122)) - from tachypy.wooting import convert_char_to_keycode yes_code, no_code = convert_char_to_keycode([YES_KEY, NO_KEY]) # --- instructions screen ---