Commit Graph

47 Commits

Author SHA1 Message Date
88d3a45083 keymap: Concentrate special handling of BackSpace, which is implicit in Erase action 2020-09-28 20:37:34 +00:00
edc330d683 data: Restore testability of action->keysym conversion 2020-09-28 20:37:31 +00:00
44e06bc0dc keymap: Generate from symbol map, not layout 2020-09-28 17:52:00 +00:00
fea4ea7392 keymap: Make acceptable by Xwayland
Xwayland is more strict about accepting key maps than Wayland, and it also fails silently. Instead of fixing the other parts of the stack to reshape accepted Wayland key maps into acceptable Xorg key maps, this patch makes Squeekboard serve the maximum compatibility version in the first place.

Compatibility not actually guaranteed, that's purely observational.

Layouts with many characters (above 240) may lose some characters. This is again due to Xwayland accepting stricter layouts than Wayland.
2020-09-25 09:12:01 +00:00
0f7ab99da3 keyboard: Fix warning
warning: unused variable: `name`
   --> /var/scratch/librem5/squeekboard/src/keyboard.rs:195:10
    |
195 |     for (name, state) in keystates.iter() {
    |          ^^^^ help: consider prefixing with an underscore: `_name`
2020-09-11 18:16:30 +02:00
9512fd8436 virtual_keyboard: Fix desynced modifiers state
This ensures that keymap switches leave modifiers and virtual keys in a known state.
2020-07-15 18:08:59 +00:00
abaaf04b87 Merge branch 'modifiers' into 'master'
Add simple modifiers support

See merge request Librem5/squeekboard!306
2020-03-07 10:32:33 +00:00
&t
67cc4f11cf Fix minor comment typos 2020-03-04 04:53:53 +00:00
92e9d994fe modifiers: Support Control and Alt
Control and Alt are special in that they aren't expected to switch levels, and so don't need to change what characters are output.

Use in layouts by adding `modifier: Control` or `modifier: Alt` in place of `text: "foo"`.

The latching of the modifier will force the keyboard to emit raw key presses and prevent it from outputting text.
2020-02-28 11:21:07 +00:00
cb802cfb50 layout: Improve press handling
Makes it more similar to release handling, removes some redundant checks.

This makes it easier to integrate modifiers in the future.
2020-02-19 15:40:39 +00:00
0ac8c620fd Merge branch 'lock' into 'master'
Turn locking stateless

See merge request Librem5/squeekboard!322
2020-02-05 09:25:49 +00:00
500c23beec locking: Lock keys statelessly
Locking is not determined by button state any more, but rather based on the view active at the moment. If pressing/locking a key results in the current view being active, the key is active. If locking a key results in the current view, the unlock view is activated.
2020-02-02 15:41:47 +00:00
cd252634bd logging: Use in merged functions 2020-01-28 12:45:45 +00:00
de8aaa1a47 Merge remote-tracking branch 'upstream/master' into text_input_enable 2020-01-28 12:39:42 +00:00
585ed5e97d input_method: Use for erasing 2020-01-23 15:39:40 +00:00
c75e085dc8 logging: Unified to remove random eprint calls 2020-01-17 12:25:39 +00:00
42cb73cd8c submission: Handle submitting strings 2020-01-14 18:33:47 +00:00
34db364a62 layout: Centralize handling key releases 2020-01-08 18:52:09 +00:00
950310c8a5 keyboard: Introduce a KeyCode type wrapping u32 2020-01-08 18:52:09 +00:00
432e4fe1e5 Merge branch 'drop_key' into 'master'
Simplify renderer

See merge request Librem5/squeekboard!272
2019-12-15 16:38:31 +00:00
f9fbd3fb2d rendering: Simplify Cairo context usage, remove unneeded calls.
Moved Cairo context usage to Rust, and rearranged ctx setup (position) to happen in one place.

Removed render calls that were overwritten on each draw call anyway.
2019-12-07 12:47:47 +00:00
83fea8cd31 Drop squeek_key 2019-12-01 15:01:08 +00:00
3ac4caa3b9 keycodes: Sort to eliminate runtime indeterminism 2019-11-27 16:18:36 +00:00
5a262242a3 keymap: Work around sending keycode 0
If keycode 0 resolves to a letter, the the press is ignored by the compositor. This works around the bug.
2019-11-26 15:35:22 +00:00
c99efc430c presses: Move press handling to Rust
This fixes some rendering things which would happen with multiple state-sharing buttons. It also removes some interfaces exposing rows, views, layouts, and buttons, bringing the code closer to removing them from the FFI entirely.
2019-10-23 15:11:16 +00:00
89b56ddccf util: C-wrapped data don't need to be cloneable 2019-10-10 16:54:02 +00:00
ac68d5d0a8 tests: Check keymap generation results 2019-10-09 16:08:50 +00:00
dc2bc46167 keymap: Simplified key state passing
There's no need to treat states as a shared resource before they are placed inside buttons.
2019-10-09 15:38:21 +00:00
9cd439767e virtual_keyboard: Submit multi-codepoint strings 2019-10-09 15:13:46 +00:00
31fdde4da9 keycodes: Moved submission to Rust 2019-10-09 09:23:06 +00:00
10bad4ebe3 warnings: Fix and silence 2019-10-09 08:15:03 +00:00
da5a83f367 action: Rename file to action.rs 2019-10-09 08:11:28 +00:00
ef38fd3e64 symbol: Eliminate in favor of Action 2019-10-09 08:06:17 +00:00
46d3312c86 cleanup: Unused symbol functions 2019-10-09 08:03:39 +00:00
8e654346a2 keysyms: Derive from Unicode labels 2019-09-11 12:03:57 +00:00
aa9523338f Merge branch 'buttonlists' into reparse 2019-09-09 15:11:59 +00:00
60a89b6c3f Merge branch 'wrapping' into reparse 2019-09-04 10:01:22 +00:00
b84c402c4a WIP
WIP

WIP: keymap generation test passes

meta: Update features and version

WiP: cargo.lock

WIP: don't crash

WIP: no outlines

parsing: New tests

WIP: base level works

WIP: remove old keyboard

symbols correctly input

WIP: lodaing files

WIP: fallback works

Valid fallback
2019-09-04 09:44:31 +00:00
6c0a642abf Store key instead of button in pressed lists 2019-08-31 11:30:51 +00:00
878b7ed18e ffi: Use a generic wrapper for opaque Rust structs 2019-08-29 13:33:04 +00:00
6fc351d2e8 eekkey: Dropped in favor of Button
Each Button has a KeyState, which may be shared with other buttons. The list of pressed and locked buttons is used as a list of keys, causing a search for the button in the current view.
2019-08-18 13:22:18 +00:00
b70afbe9eb keystate: Wrap in refconuter 2019-08-18 13:20:43 +00:00
996f681e5c keystate: Removed multiple symbols 2019-08-18 13:20:43 +00:00
725b36ba79 locking: Move to squeek_key 2019-08-18 13:20:43 +00:00
1cfec4de50 key: Share state between multiple keys 2019-08-08 20:04:38 +00:00
0b6935e50c keystate: Use keycode 2019-08-08 19:18:29 +00:00
fb93e25833 eekkey: Moved state to KeyState 2019-08-08 19:18:29 +00:00