Redesign how keys are handled
Eekboard was made to resemble a physical keyboard, with modifiers and levels. Most of that doesn't map well to how on-screen keyboard operates as a text input method.
Keypresses and modifiers are mostly a legacy feature, limited to pressing enter, games and keyboard shortcuts. The main responsibility of a keyboard is to provide text. Different views replace levels, and buttons on different screens don't have to be married to each other like they used to with levels.
Current status: EekSymbol gutted. Much code spent on adhering to C calling convention :(
Remaining: Drop levels: merge EekKey with librs::Symbol, and split symbol levels (keys with many symbols) into views (many views with buttons with one symbol each) in the XML parser and renderer.
Merge request reports
Activity
Current progress lets keys be defined in a more visual way:
<section angle="0">AD01 AD02 AD03 AD04 AD05 AD06 AD07 AD08 AD09 AD10</section> <section angle="0">AC01 AC02 AC03 AC04 AC05 AC06 AC07 AC08 AC09 AC10</section> <section angle="0"> LFSH AB01 AB02 AB03 AB04 AB05 AB06 AB07 BKSP </section> <section angle="0"> ABC123 I149 SPCE AB08 RTRN </section>
mentioned in issue #70 (closed)
added 5 commits
Toggle commit listadded 23 commits
-
47bd7e49...4cd15c07 - 6 commits from branch
Librem5:master
- 2249e52c - WIP
- a3ba044d - WIP
- daec1e41 - WIP
- ba60652b - WIP: keymap trouble
- 61323aa3 - WIP: label
- 1c107e3c - WIP
- 3bf2f504 - WIP: "icon" labels not excessive
- 87ecbb53 - WIP: Icons work again
- 420638b1 - WIP: cleanup
- bdb93d3f - WIP: think it works
- f560478a - geometry: Remove unused row element
- c2695ed3 - geometry: Use default outline by default
- ac5e87cd - geometry: Move customizations to the button table
- 3b474cd8 - geometry: Move keycode to costomizations
- 91635979 - geometry: Simplify keyboard declarations
- 5b2077f1 - keyboard: Expose creating sections directly
- a03fd7cd - symbols matrix: Remove in favor of a levels vector
Toggle commit list-
47bd7e49...4cd15c07 - 6 commits from branch
added 2 commits
added 26 commits
- d2daf617 - gtk-keyboard: Remove unused signal connections
- 6bcdcef9 - WIP
- df639b79 - WIP
- faee2630 - WIP
- 6120c752 - WIP: keymap trouble
- a27e8a91 - WIP: label
- b41cee7f - WIP
- e4bee28d - WIP: "icon" labels not excessive
- 48e777a0 - WIP: Icons work again
- 9a664ec6 - WIP: cleanup
- 343551d9 - WIP: think it works
- a1448042 - geometry: Remove unused row element
- ec9ca11b - geometry: Use default outline by default
- b6ddaa50 - geometry: Move customizations to the button table
- e7fa9d3d - geometry: Move keycode to costomizations
- b97ddfef - geometry: Simplify keyboard declarations
- f269652e - keyboard: Expose creating sections directly
- 6dae38d5 - symbols matrix: Remove in favor of a levels vector
- 76316713 - section: Remove unused press signals
- 32d2a54c - level: Make keyboard the only source of level data
- d65ace76 - level: Remove level from elements
- 37a149e8 - symbol: Remove remains
- cab03806 - symbol: Store symbols instead of pointers
- f2d60f0d - eekkey: Moved state to KeyState
- 3b71fd30 - keystate: Use keycode
- 1c0c0da3 - levelkeyboard: Use a layer for managing keyboard views
Toggle commit listadded 33 commits
-
1c0c0da3...47eb25d0 - 7 commits from branch
Librem5:master
- 8298a141 - gtk-keyboard: Remove unused signal connections
- 0193d128 - WIP
- 4efc1cc4 - WIP
- d9dcd4d6 - WIP
- 4798c48e - WIP: keymap trouble
- 1da374d8 - WIP: label
- b53dc1ed - WIP
- bc73ff79 - WIP: "icon" labels not excessive
- 01947dfb - WIP: Icons work again
- acc47fec - WIP: cleanup
- 8cef2613 - WIP: think it works
- 547feab9 - geometry: Remove unused row element
- 13084b19 - geometry: Use default outline by default
- f0d1da36 - geometry: Move customizations to the button table
- 8b6e7a77 - geometry: Move keycode to costomizations
- 03a45f8f - geometry: Simplify keyboard declarations
- db303b8d - keyboard: Expose creating sections directly
- 86787f04 - symbols matrix: Remove in favor of a levels vector
- 7ba5e795 - section: Remove unused press signals
- 15b94988 - level: Make keyboard the only source of level data
- 3a0491b6 - level: Remove level from elements
- 2f156bf1 - symbol: Remove remains
- 1c2b2962 - symbol: Store symbols instead of pointers
- 11ae9b42 - eekkey: Moved state to KeyState
- 462d3a47 - keystate: Use keycode
- ab6ae40b - levelkeyboard: Use a layer for managing keyboard views
Toggle commit list-
1c0c0da3...47eb25d0 - 7 commits from branch
added 32 commits
-
ab6ae40b...d6b59d16 - 7 commits from branch
Librem5:master
- 66f04edd - WIP
- 83f8c61b - WIP
- 12a21e26 - WIP
- 43b9facf - WIP: keymap trouble
- 0b8b3a11 - WIP: label
- 28366757 - WIP
- a9ec62b8 - WIP: "icon" labels not excessive
- 782a214a - WIP: Icons work again
- 9de3b0bc - WIP: cleanup
- 64a49f31 - WIP: think it works
- 90b09539 - geometry: Remove unused row element
- 715b52cc - geometry: Use default outline by default
- 7b42f715 - geometry: Move customizations to the button table
- 766f4442 - geometry: Move keycode to costomizations
- badd7835 - geometry: Simplify keyboard declarations
- 1975b77c - keyboard: Expose creating sections directly
- 7d90795f - symbols matrix: Remove in favor of a levels vector
- f0d9399c - section: Remove unused press signals
- a2b9172c - level: Make keyboard the only source of level data
- b64fa1aa - level: Remove level from elements
- b8da3827 - symbol: Remove remains
- 7aeb1354 - symbol: Store symbols instead of pointers
- ace711d2 - eekkey: Moved state to KeyState
- d36f95cd - keystate: Use keycode
- d6d4820b - levelkeyboard: Use a layer for managing keyboard views
Toggle commit list-
ab6ae40b...d6b59d16 - 7 commits from branch
added 30 commits
- 754e7910 - keyboard: Drop layout reference
- 3e35b744 - Drop unused variables
- f7d30b0d - Clarify some arithmetic warnings
- 73260a56 - WIP
- 50865396 - WIP
- 977bff6c - WIP
- 00783f05 - WIP: keymap trouble
- e7ed37da - WIP: label
- a0c876fa - WIP
- d5ac2fbb - WIP: "icon" labels not excessive
- e9e1a0f5 - WIP: Icons work again
- c542a80f - WIP: cleanup
- 976fe6d6 - WIP: think it works
- c0912cc9 - geometry: Remove unused row element
- 4d64e5c3 - geometry: Use default outline by default
- cae174ac - geometry: Move customizations to the button table
- a8ba474e - geometry: Move keycode to costomizations
- 1db08c32 - geometry: Simplify keyboard declarations
- a217b64b - keyboard: Expose creating sections directly
- f2fa5059 - symbols matrix: Remove in favor of a levels vector
- bd2fc2ad - section: Remove unused press signals
- 8932b6ed - level: Make keyboard the only source of level data
- 00942ed6 - level: Remove level from elements
- f4373e2a - symbol: Remove remains
- 1d153806 - symbol: Store symbols instead of pointers
- 71d6cd7b - eekkey: Moved state to KeyState
- 5225ea12 - keystate: Use keycode
- 0b2b2367 - levelkeyboard: Use a layer for managing keyboard views
- 652dc1fe - keyboard: Remove unused numlock and altgr masks
- 731ff50b - symbols: Stop parsing key groups
Toggle commit list- Resolved by Dorota Czaplejewicz
added 25 commits
-
731ff50b...c1482c23 - 4 commits from branch
Librem5:master
- 38f81e45 - Break out symbol handling into Rust
- 2ff76e0b - geometry: Remove unused row element
- 43987db9 - geometry: Use default outline by default
- 2f1c7989 - geometry: Move customizations to the button table
- 93261654 - geometry: Move keycode to costomizations
- 400a48b3 - geometry: Simplify keyboard declarations
- d565cba0 - keyboard: Expose creating sections directly
- 436d6bf9 - symbols matrix: Remove in favor of a levels vector
- dde44ff9 - section: Remove unused press signals
- 334c1f7c - level: Make keyboard the only source of level data
- d8e3ac2d - level: Remove level from elements
- 3c585757 - symbol: Remove remains
- ef48ecf6 - symbol: Store symbols instead of pointers
- 8e531da2 - eekkey: Moved state to KeyState
- f0f5e133 - keystate: Use keycode
- 1e36ca60 - levelkeyboard: Use a layer for managing keyboard views
- 54df697a - keyboard: Remove unused numlock and altgr masks
- f97d47f1 - symbols: Stop parsing key groups
- 08ef2f9a - Use keyboards as views
- 3481c4ea - key: Share state between multiple keys
- 988b26f3 - layout: Use show_symbols instead of shift
Toggle commit list-
731ff50b...c1482c23 - 4 commits from branch
I believe there are no more regressions, apart from the numeric layout being completely dead.
There are still some hacks/dead code in this, but I would like to get this merged ASAP, since it's overgrown, and then work incrementally again.
Benefits: the layout files have gotten a bunch simpler, and levels are not so constrained any more, giving us total control over different views, without worrying about laying out things in a grid.
A fair number of relationships and indirections was kicked to the curb, clearing the way for more rearchitecting.
Edited by Dorota Czaplejewiczmentioned in merge request dorota.czaplejewicz/squeekboard!4 (closed)
added 20 commits
- 5abe6ed6 - geometry: Remove unused row element
- 45f93531 - geometry: Use default outline by default
- 04b721ae - geometry: Move customizations to the button table
- a18beca5 - geometry: Move keycode to costomizations
- 18163e3e - geometry: Simplify keyboard declarations
- c8adb45a - keyboard: Expose creating sections directly
- 23d5f18d - symbols matrix: Remove in favor of a levels vector
- 377521c1 - section: Remove unused press signals
- 077ca8fa - level: Make keyboard the only source of level data
- b76e4367 - level: Remove level from elements
- 53b89aae - symbol: Remove remains
- ad86cb53 - symbol: Store symbols instead of pointers
- fb93e258 - eekkey: Moved state to KeyState
- 0b6935e5 - keystate: Use keycode
- f371b14e - levelkeyboard: Use a layer for managing keyboard views
- 25a2e958 - keyboard: Remove unused numlock and altgr masks
- f7452237 - symbols: Stop parsing key groups
- cc3f2315 - Use keyboards as views
- 1cfec4de - key: Share state between multiple keys
- a072755c - layout: Use show_symbols instead of shift
Toggle commit listmentioned in commit fb8e2ec4