Skip to content
Snippets Groups Projects

Redesign how keys are handled

Merged Dorota Czaplejewicz requested to merge dorota.czaplejewicz/squeekboard:eekkey into master
All threads resolved!

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.

Edited by Dorota Czaplejewicz

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • David Boddie resolved all discussions

    resolved all discussions

  • 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

    Compare with previous version

  • Dorota Czaplejewicz unmarked as a Work In Progress

    unmarked as a Work In Progress

  • 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 Czaplejewicz
  • I'll build and test.

  • 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

    Compare with previous version

  • Status: number keyboard works again, but there are some critical warnings as this is attempted. I would like to deal with them in a different series.

  • Then we should merge this and move forward. OK?

  • Sure - I put it out for you to make the final decision.

  • mentioned in commit fb8e2ec4

  • Please register or sign in to reply
    Loading