LiveSplit / LiveSplit/livesplit-core

Add a way to get the next hotkey pressed

Open
#531 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement feature hotkey priority: low suitable for contributions
Dominant language
Rust
Stars
227
Forks
81
Avg merge
22h 45m
Merged PRs (30d)
3

Description

In certain contexts, when implementing a timer using this lib, the implementor will want to provide the user with a way to press a key which will then be set as a hotkey. However, if the implementor is using an input system which doesn't map surjectively (ie if two keypresses are the same according to the implementor's input system, they are the same according to livesplit-hotkey) to livesplit (eg winit/glutin), this becomes impossible to actually do without registering and then deregistering a hook for every single hotkey.

My proposal to fix this is to add a `register_global_hook` function that will call a callback whenever livesplit-hotkey recieves any keypress and provide that callback with the key that was pressed.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are named. Start by locating the existing hotkey registration and hook entry points, then review how keyboard events are exposed across supported platforms. Done means a global hook can report each pressed key and can be registered and removed without requiring one hook per hotkey.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop, operating-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.