{"id":15164662,"url":"https://github.com/abkwreu/plover-left-hand-modifiers","last_synced_at":"2025-09-30T20:31:27.744Z","repository":{"id":45110768,"uuid":"442293760","full_name":"Abkwreu/plover-left-hand-modifiers","owner":"Abkwreu","description":null,"archived":true,"fork":false,"pushed_at":"2022-12-04T01:49:04.000Z","size":868,"stargazers_count":25,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-30T02:32:24.535Z","etag":null,"topics":["plover"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Abkwreu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-27T23:05:32.000Z","updated_at":"2024-08-01T23:04:55.000Z","dependencies_parsed_at":"2023-01-22T20:45:55.300Z","dependency_job_id":null,"html_url":"https://github.com/Abkwreu/plover-left-hand-modifiers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abkwreu%2Fplover-left-hand-modifiers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abkwreu%2Fplover-left-hand-modifiers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abkwreu%2Fplover-left-hand-modifiers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abkwreu%2Fplover-left-hand-modifiers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Abkwreu","download_url":"https://codeload.github.com/Abkwreu/plover-left-hand-modifiers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234774939,"owners_count":18884527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plover"],"created_at":"2024-09-27T03:42:45.900Z","updated_at":"2025-09-30T20:31:27.337Z","avatar_url":"https://github.com/Abkwreu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abby's Left Hand Modifiers Dictionary\n\n## Table Of Contents\n\n- [Abby's Left Hand Modifiers Dictionary](#abbys-left-hand-modifiers-dictionary)\n  - [Table Of Contents](#table-of-contents)\n  - [Design](#design)\n  - [Modifiers](#modifiers)\n    - [Single modifier keys](#single-modifier-keys)\n    - [Modifier key combinations](#modifier-key-combinations)\n  - [Keys](#keys)\n    - [Letters](#letters)\n    - [Numbers](#numbers)\n    - [Function Keys](#function-keys)\n    - [Numpad](#numpad)\n    - [Symbol keys](#symbol-keys)\n    - [Navigation keys](#navigation-keys)\n    - [Other keys](#other-keys)\n    - [Only modifiers](#only-modifiers)\n    - [Cancel](#cancel)\n  - [Examples](#examples)\n\n## Design\n\nThis dictionary is inspired by and can essentially be seen as a combination of\n[Emily's Modifiers](https://github.com/EPLHREU/emily-modifiers) and \n[Achim Siebert's Left Hand Modifier Keys](http://www.openstenoproject.org/stenodict/dictionaries/lh_modifier_keys.html).\nEssentially, it allows every shortcut to be typed in two strokes and using only\nthe left hand. As such, only the following keys are used:\n\n![Key layout](img/all.png)\n\nIn some combinations, the asterisk key is used. This requires the asterisk key\nto be pressed using the left hand, which should be fine on most hobbyist writers\nbut may be a problem on some professional writers.\n\n## Modifiers\n\nThe first of the two strokes in each combination is used to specify the modifier\nkeys that should be pressed. It is also possible to not press any modifier keys,\nsince some applications have shortcuts that are activated by just a single\nkeypress.\n\n### Single modifier keys\n\nPatterns for single modifier keys.\n\n| Stroke             | Modifier                | Explanation                          |\n| ------------------ | ----------------------- | ------------------------------------ |\n| ![](img/ctrl.png)  | Control                 | **C**ontro**L**                      |\n| ![](img/alt.png)   | Alt                     | **ALT** (reversed)                   |\n| ![](img/shift.png) | Shift                   | **SH**ift                            |\n| ![](img/super.png) | Super (Windows/Command) | Purely positional, no phonetic basis |\n\n### Modifier key combinations\n\nModifier key combinations are made by stacking the chords for individual\nmodifier keys on top of each other, with three exceptions:\n\n- The Ctrl + Alt + Super combination is given `TKPWHRAO`, with an additional `O`\ndue to a conflict with `TKPWHRA` for Alt + Super.\n- The Ctrl + Shift + Super combination is given `SKPWHRO`, with an additional\n`O` due to a conflict with `SKPWHR` for Shift + Super.\n- The Ctrl + Alt + Shift + Super combination is given `STKPWHRAO`, with an\nadditional `O` due to a conflict with `STKPWHRA` for Alt + Shift + Super.\n\n| Stroke                            | Modifiers                  |\n| --------------------------------- | -------------------------- |\n| ![](img/alt-shift.png)            | Alt + Shift                |\n| ![](img/ctrl-alt.png)             | Ctrl + Alt                 |\n| ![](img/ctrl-shift.png)           | Ctrl + Shift               |\n| ![](img/ctrl-alt-shift.png)       | Ctrl + Alt + Shift         |\n| ![](img/ctrl-super.png)           | Ctrl + Super               |\n| ![](img/alt-super.png)            | Alt + Super                |\n| ![](img/ctrl-alt-super.png)       | Ctrl + Alt + Super         |\n| ![](img/shift-super.png)          | Shift + Super              |\n| ![](img/ctrl-shift-super.png)     | Ctrl + Shift + Super       |\n| ![](img/alt-shift-super.png)      | Alt + Shift + Super        |\n| ![](img/ctrl-alt-shift-super.png) | Ctrl + Alt + Shift + Super |\n\nThe pattern for no modifier keys is `TKPWHR`. This presses a key specified in\nthe second stroke without any additional modifier keys.\n\n| Stroke                    | Modifiers |\n| ------------------------- | --------- |\n| ![](img/no-modifiers.png) | None      |\n\n## Keys\n\nThe second of the two strokes in each combination specifies what key to press\nalong with the modifiers (if any) selected above.\n\n### Letters\n\nThe patterns for letter keys are the same as the fingerspelling pattern for that\nletter (without the asterisk), except for E, I, and U which have been given\nspecial patterns so they fit on the left hand. (Using `E`, `EU`, and `U` for E,\nI, and U still work, but are not shown below.)\n\n| Stroke          | Letter          |\n| --------------- | --------------- |\n| ![](img/a.png)  | `A`             |\n| ![](img/b.png)  | `B`             |\n| ![](img/c.png)  | `C`             |\n| ![](img/d.png)  | `D`             |\n| ![](img/e.png)  | `E`             |\n| ![](img/f.png)  | `F`             |\n| ![](img/g.png)  | `G`             |\n| ![](img/h.png)  | `H`             |\n| ![](img/i.png)  | `I`             |\n| ![](img/j.png)  | `J`             |\n| ![](img/k.png)  | `K`             |\n| ![](img/l.png)  | `L`             |\n| ![](img/m.png)  | `M`             |\n| ![](img/n.png)  | `N`             |\n| ![](img/o.png)  | `O`             |\n| ![](img/p.png)  | `P`             |\n| ![](img/q.png)  | `Q`             |\n| ![](img/r.png)  | `R`             |\n| ![](img/s.png)  | `S`             |\n| ![](img/t.png)  | `T`             |\n| ![](img/u.png)  | `U`             |\n| ![](img/v.png)  | `V`             |\n| ![](img/w.png)  | `W`             |\n| ![](img/x.png)  | `X`             |\n| ![](img/y.png)  | `Y`             |\n| ![](img/z.png)  | `Z`             |\n| ![](img/z2.png) | `Z` (alternate) |\n\n### Numbers\n\nWhen `AO` is held, `STPH` will act as binary number input for numbers 0-9.\n\n| Stroke         | Number |\n| -------------- | ------ |\n| ![](img/0.png) | `0`    |\n| ![](img/1.png) | `1`    |\n| ![](img/2.png) | `2`    |\n| ![](img/3.png) | `3`    |\n| ![](img/4.png) | `4`    |\n| ![](img/5.png) | `5`    |\n| ![](img/6.png) | `6`    |\n| ![](img/7.png) | `7`    |\n| ![](img/8.png) | `8`    |\n| ![](img/9.png) | `9`    |\n\n### Function Keys\n\nWhen `R` is held in addition to the pattern for any number 1-12, the\ncorresponding function key will be used.\n\n| Stroke           | Function Key |\n| ---------------- | ------------ |\n| ![](img/f1.png)  | `F1`         |\n| ![](img/f2.png)  | `F2`         |\n| ![](img/f3.png)  | `F3`         |\n| ![](img/f4.png)  | `F4`         |\n| ![](img/f5.png)  | `F5`         |\n| ![](img/f6.png)  | `F6`         |\n| ![](img/f7.png)  | `F7`         |\n| ![](img/f8.png)  | `F8`         |\n| ![](img/f9.png)  | `F9`         |\n| ![](img/f10.png) | `F10`        |\n| ![](img/f11.png) | `F11`        |\n| ![](img/f12.png) | `F12`        |\n\n### Numpad\n\nWhen `*` is held in addition to the pattern for any number, the number key on\nthe numpad will instead be used.\n\n| Stroke            | Number       |\n| ----------------- | ------------ |\n| ![](img/kp_0.png) | `0` (numpad) |\n| ![](img/kp_1.png) | `1` (numpad) |\n| ![](img/kp_2.png) | `2` (numpad) |\n| ![](img/kp_3.png) | `3` (numpad) |\n| ![](img/kp_4.png) | `4` (numpad) |\n| ![](img/kp_5.png) | `5` (numpad) |\n| ![](img/kp_6.png) | `6` (numpad) |\n| ![](img/kp_7.png) | `7` (numpad) |\n| ![](img/kp_8.png) | `8` (numpad) |\n| ![](img/kp_9.png) | `9` (numpad) |\n\n### Symbol keys\n\n| Stroke                    | Key | Explanation           |\n| ------------------------- | --- | --------------------- |\n| ![](img/period.png)       | `.` | **P**e**R**iod        |\n| ![](img/comma.png)        | `,` | **C**o**MM**a         |\n| ![](img/slash.png)        | `/` | **SL**ash             |\n| ![](img/backslash.png)    | `\\` | **B**ack**SL**ash     |\n| ![](img/semicolon.png)    | `;` | **S**emi**C**o**L**on |\n| ![](img/apostrophe.png)   | `'` | **QUO**te             |\n| ![](img/bracketleft.png)  | `[` | **B**racket **L**eft  |\n| ![](img/bracketright.png) | `]` | **B**racket **R**ight |\n| ![](img/minus.png)        | `-` | **D**as**H**          |\n| ![](img/equal.png)        | `=` | e**QUA**ls            |\n| ![](img/grave.png)        | `ˋ` | **GR**ave             |\n\n### Navigation keys\n\nHolding down `A` (for **a**rrow) will cause `PKWR` to act as arrow keys.\n\n| Stroke             | Key   |\n| ------------------ | ----- |\n| ![](img/up.png)    | Up    |\n| ![](img/down.png)  | Down  |\n| ![](img/left.png)  | Left  |\n| ![](img/right.png) | Right |\n\nHolding down `*` in addition to the stroke for any arrow key will cause the keys\nto act as page up, page down, home, and end.\n\n| Stroke             | Key       |\n| ------------------ | --------- |\n| ![](img/prior.png) | Page Up   |\n| ![](img/next.png)  | Page Down |\n| ![](img/home.png)  | Home      |\n| ![](img/end.png)   | End       |\n\n### Other keys\n\n| Stroke                   | Key          | Explanation                    |\n| ------------------------ | ------------ | ------------------------------ |\n| ![](img/caps_lock.png)   | Caps Lock    | **C**aps **L**ock + asterisk   |\n| ![](img/scroll_lock.png) | Scroll Lock  | **SC**roll **L**ock + asterisk |\n| ![](img/num_lock.png)    | Num Lock     | **N**um lock + asterisk        |\n| ![](img/space.png)       | Space        | **SP**ace                      |\n| ![](img/return.png)      | Return       | **ENT**e**R**                  |\n| ![](img/tab.png)         | Tab          | **T**a**B**                    |\n| ![](img/backspace.png)   | Backspace    | **B**ack**S**pace              |\n| ![](img/delete.png)      | Delete       | **D**e**L**ete                 |\n| ![](img/escape.png)      | Escape       | e**SCA**pe                     |\n| ![](img/insert.png)      | Insert       | i**NS**ert                     |\n| ![](img/menu.png)        | Menu         | **M**enu + asterisk            |\n| ![](img/print.png)       | Print Screen | **SC**reen **PR**int           |\n\n### Only modifiers\n\nThe pattern `TPHO` (\"no\") allows only modifier keys to be pressed, with no other\nkeys included.\n\n| Stroke          | Key  |\n| --------------- | ---- |\n| ![](img/no.png) | None |\n\n### Cancel\n\nIf you pressed a modifier key pattern on accident, you can use `SKPH` to cancel\nit.\n\n| Stroke              | Key    |\n| ------------------- | ------ |\n| ![](img/cancel.png) | Cancel |\n\n## Examples\n\n| Strokes                                           | Keys Pressed        | Use                             |\n| ------------------------------------------------- | ------------------- | ------------------------------- |\n| ![](img/ctrl.png)\u003cbr /\u003e![](img/a.png)             | Ctrl + A            | Select all (Windows or Linux)   |\n| ![](img/super.png)\u003cbr /\u003e![](img/a.png)            | Super + A           | Select all (Mac)                |\n| ![](img/alt.png)\u003cbr /\u003e![](img/f4.png)             | Alt + F4            | Close window (Windows or Linux) |\n| ![](img/ctrl-alt.png)\u003cbr /\u003e![](img/t.png)         | Ctrl + Alt + T      | Open terminal (Linux)           |\n| ![](img/super.png)\u003cbr /\u003e![](img/no.png)           | Super (Windows key) | Open start menu (Windows)       |\n| ![](img/no-modifiers.png)\u003cbr /\u003e![](img/print.png) | Print Screen        | Take screenshot                 |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabkwreu%2Fplover-left-hand-modifiers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabkwreu%2Fplover-left-hand-modifiers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabkwreu%2Fplover-left-hand-modifiers/lists"}