keymanapp / keymanapp/keyman

feat(windows): Refactor the installation for keyboards to use a state machine.

Open
#9,462 0 comments 0 reactions 0 assignees View on GitHub
feat windows/ windows/engine/
Dominant language
Pascal
Stars
534
Forks
143
Avg merge
2d 12h
Merged PRs (30d)
114

Description

### Is your feature request related to a problem? Please describe.

The Keyman for Windows installation for Keyboards is unwieldy to maintain and can be fragile. There are more than a few reasons that lead to this. The way languages and text input processors are registered in Windows. Security, operations that need to be run as an elevated user.

### Describe the solution you'd like

The problem and the steps involved lend themselves well to a state machine. Defining each state in the process and each event that drives the next piece of work to be completed. This can be laid out in a state transition matrix then implemented it should make it easier for developers to follow and also make the process more robust and more defined and consistent in handling error states.
Actually, I think this could be for the actual installation of Keyman itself as well.

- State Machine for Keyboards Install
- State Machine for Installing Keyman

### Related issues

_No response_

### Keyman apps

- [ ] Keyman for Android
- [ ] Keyman for iPhone and iPad
- [ ] Keyman for Linux
- [ ] Keyman for macOS
- [X] Keyman for Windows
- [ ] Keyman Developer
- [ ] KeymanWeb
- [ ] Other - give details at bottom of form

### Keyman version

17

### Operating system

Windows

Contributor guide

Open the contributing guide

Research direction

No files, tests, or entry points are named. Start by mapping the existing Windows keyboard-installation steps, including language and text-input registration and elevated operations, then determine whether Keyman installation is also in scope. Done would require an agreed state-transition matrix and implemented state machines with defined error handling.

Written by the indexing model from the issue text.

Assessment

Domain
desktop, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.