[GH-ISSUE #240] Visualize Non-Modifier Key held down: New visualizer + Integration ideas for Normal + Svelte #203

Open
opened 2026-05-05 05:06:12 -06:00 by gitea-mirror · 0 comments
Owner

Originally created by @porg on GitHub (May 20, 2022).
Original GitHub issue: https://github.com/keycastr/keycastr/issues/240

User need

As a user screencasting an app which uses holding down normal keys like the Arrow-Down-Key to move an object in a design application or a key press like "A" combined with a mouse-event like dragging, I want a visualizer which shows this key as long as pressed and then hiding again when released.

The user goal is expressed in the following issues, and possible further ones:

Analysis

  • This is not possible with the currently available visualizers
    • The Normal Visualizer sees a key which is held down as a key sequence "aaaaaaaaaaaaaaaaaaaaa"
    • Svelte has this ability, but only for modiefer-keys

Design Proposals

  • New (experimental) visualizer which is only for this use case, with very minimal scope
  • Alter options for the existing visualizers

New visualizer only for long pressed keys

  • Advantages:
    • Minimal scope, easier implementation
    • No timing problems of finding the sweetspots of having two treshholds: Timeout until showing in normal area, timeout until showing in special area for held down keys, problem of key being possibly shown first in one category then the other if not meeting the treshhold timers.

Normal Visualizer

☑️ Show depressed key(s) separately
     | 100 |  ms of waiting until showing in normal area
     | 500 |  ms of waiting until showing in separate area
     Separate area:  [ Bottom row      ▾ ]
  • As soon as a key is pressed longer than "XXX ms of waiting until showing in separate area" it is not shown in the upper part but shown as a box in the bottom row.
  • If another key is also pressed longer, it gets another box in that bottom row.
  • The problem is that a key may first appear in the upper area and then in the lower area. By cleverly setting both timers (my numbers are just examples, not tested yet), you can achieve that short key presses only ever appear in the upper area and longer only in the lower.

Svelte

☑️ Show depressed key(s) in extra row
     | 100 |  ms of waiting until showing in normal area
     | 500 |  ms of waiting until showing in separate area
     🔲  Show that extra row only when in use
  • Clone the boxes of the 4 modifier keys to one layout row below
  • As soon as a key is pressed longer than the treshold it is removed from the upper part and instead shown in one of the 4 new dedicated boxes.
  • The boxes get filled from left to right, first come, first serve.
  • I do not even know how many non-modifier-keys can be pressed at the same time by the keyboard driver.
  • If only 1 or 2, then another layout may make sense.
  • But I think it would be kind of elegant to just repeat the
Originally created by @porg on GitHub (May 20, 2022). Original GitHub issue: https://github.com/keycastr/keycastr/issues/240 ## User need As a user screencasting an app which uses holding down normal keys like the Arrow-Down-Key to move an object in a design application or a key press like "A" combined with a mouse-event like dragging, I want a visualizer which shows this key as long as pressed and then hiding again when released. The user goal is expressed in the following issues, and possible further ones: - #86 - #171 - #75 ## Analysis - This is not possible with the currently available visualizers - The **Normal Visualizer** sees a key which is held down as a key sequence "aaaaaaaaaaaaaaaaaaaaa" - **Svelte** has this ability, but only for modiefer-keys ## Design Proposals - New (experimental) visualizer which is only for this use case, with very minimal scope - Alter options for the existing visualizers ### New visualizer only for long pressed keys - Advantages: - Minimal scope, easier implementation - No timing problems of finding the sweetspots of having two treshholds: Timeout until showing in normal area, timeout until showing in special area for held down keys, problem of key being possibly shown first in one category then the other if not meeting the treshhold timers. ### Normal Visualizer ``` ☑️ Show depressed key(s) separately | 100 | ms of waiting until showing in normal area | 500 | ms of waiting until showing in separate area Separate area: [ Bottom row ▾ ] ``` - As soon as a key is pressed longer than "XXX ms of waiting until showing in separate area" it is not shown in the upper part but shown as a box in the bottom row. - If another key is also pressed longer, it gets another box in that bottom row. - The problem is that a key may first appear in the upper area and then in the lower area. By cleverly setting both timers (my numbers are just examples, not tested yet), you can achieve that short key presses only ever appear in the upper area and longer only in the lower. ### Svelte ``` ☑️ Show depressed key(s) in extra row | 100 | ms of waiting until showing in normal area | 500 | ms of waiting until showing in separate area 🔲 Show that extra row only when in use ``` - Clone the boxes of the 4 modifier keys to one layout row below - As soon as a key is pressed longer than the treshold it is removed from the upper part and instead shown in one of the 4 new dedicated boxes. - The boxes get filled from left to right, first come, first serve. - I do not even know how many non-modifier-keys can be pressed at the same time by the keyboard driver. - If only 1 or 2, then another layout may make sense. - But I think it would be kind of elegant to just repeat the
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/keycastr#203
No description provided.