Skip to content

Keyboard OSD v1.3

Choose a tag to compare

@mesutakcan mesutakcan released this 02 Jul 19:41
a2abfce

Version 1.3 (2026-07-02)

Architecture:

  • Refactored into OSDSettings and OSDState classes for cleaner state management
  • Extracted all helper functions (MeasureTextWidth, MeasureTextHeight, GetActiveMonitorBounds, CalcStackBase, InitWin, ApplyDWMCorners, FadeOutWin, ReadIni, etc.) into a dedicated lib.ahk file
  • INI file reorganized into four named sections: [Appearance], [Layout], [History], [Timing]

New:

  • Each OSD line is now an OSDLine object with its own CreatedAt timestamp, repeat counter, and IsExpired() check — active line and history lines expire independently
  • Non-blocking per-row fade system using FadingStates / FadeTimers arrays (replaces the blocking Sleep-based fade)
  • CheckExpiredLines timer replaces the StartDismiss / DismissNext chain
  • FlushTypingTimeout — typed text is automatically committed after DisplayTime ms of inactivity
  • MeasureTextHeight — line height is now calculated from real GDI font metrics instead of being stored in settings.ini
  • Pause/resume keyboard shortcut Ctrl+Shift+F8
  • On resume from pause, currently held keys are read and pre-loaded to avoid phantom key events
  • Pause icon resource ID changed to 207
  • Settings GUI switched from GroupBox layout to a tabbed (Tab) layout
  • Added PaddingX, PaddingYTop, PaddingYBottom layout settings

Fixes:

  • Fade no longer blocks the key watcher thread