-
Notifications
You must be signed in to change notification settings - Fork 8
Description
Hi,
first of all: AMAZING work you did!!!
I just stumbled across your project, today. And as I myself started writing a very much related application, a couple of years ago, I was wondering if there were possibilities of joining forces for higher goals ;-) .
My goal is to provide an application which runs in the Windows OS'es background (like yours) and listens for key presses (mouse clicking would not be highest priority). The main goal of the application would be to provide the following features to its users:
- switch between applications (could even be done using Window's native keys like
<ALT> + <TAB>, ...) - on each change-of-application, an application-specific set of hotkey configurations gets activated. hotkey configurations translate the user's key presses into application-specific key-press-sequences necessary to realize a specific functionality.
- so, this application-specific sets of hotkey configurations provide translation between user-desired key sequences and their application-specific realizations (e.g. using the sequence
:wto save a document in MS WORD. So, translated into<CTRL> + <S>when MS WORD is active window) - the application should provide different "operation modes" to be used / configured for any applications. Using these modes, a mechanism as realized in the VIM editor could be implemented. Thus, being able to even provide hotkeys for each "mode" an application was currently in. VIM uses "normal" mode e.g. to navigate within a given text, "insert" mode to actually add / remove characters, "command" mode to issue all kinds of commands / functions, ...
- the application should provide different kinds of low-level-input-schemes. E.g.
- normal text, where each key press results in a character within the selected application's editor window
- abbreviations, where a pre-defined (short) sequence of text triggers a whole text block to be inserted
- commands, where a leading ":" opens a dedicated command line to insert specific commands
- ...
For all this, I need a "crisp" and reliable keyboard interface on the lowest layer:
-
100% stable keyboard interface, see stability of low-level keyboard interface #4
-
100% stateless operation
Even when pressing the weirdest key combinations in any humanly possible sequence and typing speed, I would want to have a clear and clean status whenever I switch from one application to the next one. No hanging control keys, no hidden state influencing the current key sequences for the current application. Hanging control keys I have encountered in Python'skeyboardmodule. Which disqualifies the usage of that great library for the intended purpose. -
100% stable switching between applications, see when switching between applications, key presses bleed #5