43 Commits

Author SHA1 Message Date
Maarten van Gompel
6041473421 Only draw caps-lock upper-case labels for alphabetical keys
Fixes an issue introduced in 9d130e7fd23678de34396ac80dab51f036abb033
2024-11-25 12:19:11 +01:00
Paul Rimmer
1852b3ab06 Don't forget the obscure AltGr modifier key 2024-09-01 18:21:53 +02:00
Paul Rimmer
9d130e7fd2 Make all modifiers except capslock one shot and redraw keyboard when capslock pressed 2024-09-01 18:21:53 +02:00
Amir Dahan
d423720553 Add basic rounding
There's probably a better way of doing this, But this will do for now.

Added basic rounding to buttons.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-04-14 18:18:34 +02:00
Frank Oltmanns
d6439afcb9 Make font selection scheme specific
Add the members font and font_descriptor to struct clr_scheme, so that
it is possible to specify a font for each scheme.

During initialization create the font descriptors for each scheme.

Instead of initially setting the font descriptor when setting up the
buffer, set the font descriptor when drawing the text.

Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-29 13:07:57 +01:00
Frank Oltmanns
6e52be343d Add support for multiple schemes
Allow to use more than two color schemes.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-13 21:20:18 +02:00
Willow Barraco
76b64f6a85
Fix builds 2023-09-08 23:26:42 +02:00
Willow Barraco
a152fd036f
Break on function definitions 2023-09-08 23:14:40 +02:00
Willow Barraco
fbbf563d70
Simplest clang-format 2023-09-08 22:57:14 +02:00
Willow Barraco
2747980a4e
clang-format 2023-09-08 22:42:49 +02:00
Willow Barraco
730e97038c Support fractional-scale-v1
This make text less blurry. It continues to works without.

before:
https://dav.missbanal.net/00bd0fd5-e22f-4a60-87f8-ce6f400d33c9.png

after:
https://dav.missbanal.net/a3f02f1e-d6ce-4378-a141-e2093ba87eed.png
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-09-08 21:17:31 +02:00
Zach DeCook
9e03e120c3 switch layers: fix crash
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-09-06 23:14:30 +02:00
Willow Barraco
24e354ce9e
Add popup to display pressed keys 2023-09-06 15:29:07 +02:00
Willow Barraco
fa659b4584
Remove black boxes
This isn't a good way to solve this, and cause restrictions and
breakages.

We should find a better way to enforce text inside of keys, probably
using a second buffer to write into.
2023-09-01 08:11:31 +02:00
Willow Barraco
3752d0e392
Fix remaining too long text cases 2023-08-31 22:25:11 +02:00
Willow Barraco
4444c6e664
Prevent writing outside of key without ellipsize 2023-08-31 22:03:51 +02:00
Willow Barraco
975bd2ec32
Fix Ctrl feedback while being clicked 2023-08-31 18:41:41 +02:00
Willow Barraco
47a45d557b
Fix black box on Shift press
Drawing key will redraw the bg at the right side. As we already
propagated the surface damage, this cause a rewrite of the right side of
the layout.
2023-08-31 18:37:58 +02:00
Willow Barraco
c45446a794
Do not write texts outside of keys
This is a bit hacky. The main problem is that there is no way to tell
cairo to limit the width. It will wrap text accordingly to width and
height, it will add ellipsizes if it overlow the box, but if a word
width is larger than the box width, it will write it.

To avoid that, I make sure we don't go too much to the left, and I
redraw the background at the right of the keys. This is not visible
cause we damage track correctly the updated buffer coordinates.

I also moved the damage tracking from do_rectangle and draw_text to
higher draw_key and draw_layout.
2023-08-31 18:04:26 +02:00
Maarten van Gompel
29e32edf5c shift + space = tab
This is implemented not in the keymap but as a hack in wvkbd itself,
the keymap would output shift + tab otherwise.
2023-08-31 11:39:17 +02:00
Maarten van Gompel
bfcd3527dd scroll wheel switches layers (as opposed to crashing as it did before) 2023-08-31 11:39:17 +02:00
Maarten van Gompel
0ca0409400 refactoring: function for layer switching 2023-08-31 11:39:17 +02:00
Maarten van Gompel
46f4515477 fixes and safety checks in layer switching 2023-08-31 11:39:17 +02:00
Maarten van Gompel
2e476c6548 Made 'full' and 'simple' layouts less prone to mistyping and improved layout switching
- The full layout now squashes less keys in a row, to accomplish this
  the semicolon/colon, equal/plus and alt keys had to be sacrificed
  from the full layout (they're on the special/symbols layout still).
- The half-keys in the simple layout are removed, giving a bit more
  space.
- The default total keyboard height has been slightly enlarged (10px)
- The compose key moved down, it was too close to the 'a' (accidental
  presses). The tab key moved to the top-right.
- The spacing between the buttons is slightly larger (aesthetic only)
- The key for layer switching is now labelled more consistently with an icon, and indicates direction of switching with an arrow
- An extra "index" layout was added that can be activated by pressing
  Compose + the next/prev layout button. It has a key for each layout,
  even those not specified at start. This special layout does not appear
  in the normal layer cycling.
- The "Abc" key on secondary layers returns to the last alphabetical layout
- The compose layouts automatically hide when the user presses the space
  where there are no keys, no need to explicitly press the "Abc" key.
2023-08-31 11:39:17 +02:00
Maarten van Gompel
b6ec34fe3a fix scaling problem from "support multiple outputs" 2023-08-27 12:12:03 +02:00
Maarten van Gompel
83edf203a7 fix incorrect keymap size and trailing 0 bytes when setting keymap
Ref: https://github.com/jjsullivan5196/wvkbd/issues/35
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-05-08 20:08:16 -07:00
Patrick Steinhardt
dfae590264 keyboard: Allow overriding the layers in landscape mode
Add a new parameter to allow overriding the default list of layers used
in landscape mode. This functionality is not yet used.
2022-10-07 21:02:29 +02:00
Patrick Steinhardt
7fe983af16 keyboard: Extract logic to parse keyboard layer list
The user can optionally override the list of keyboard layers compiled
into the executable. Right now this only works for non-landscape mode
though.

Pull out the logic to parse the list of keyboard layers so that we can
reuse it to also optionally override layers in landscape mode.
2022-10-07 21:02:29 +02:00
Maarten van Gompel
a10b504cda allow modifiers with next layer button to switch to first/previous layer
- shift (or capslock) switch to the previous layer in the defined order
- control, alt or compose resets the view to the first layer

related fix: compose key resets on layer switch (doesn't stick now)
2022-07-15 22:03:27 +02:00
Zach DeCook
f9bf42129a border: display around all sides
(not just top and left edges)

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2022-07-10 22:52:22 +02:00
Zach DeCook
0cd0d5e1a1 layout: Implement spacing better
to no longer need overscan

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2022-07-10 22:52:22 +02:00
ArenM
1843e60a74 only commit surface when it changed
Previously wvkbd would commit an (usually) unchanged surface at the
framerate of the compositor, this only commits the buffer when we render
something new.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2022-07-05 22:13:21 +02:00
ArenM
11d6924a13 Draw compose key as pressed when compose is enabled
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2022-06-14 00:21:28 +02:00
John Sullivan
849f4600e9 project: rerun clang-format
TODO make a commit or PR hook for this
2022-06-13 21:55:47 +02:00
John Sullivan
aa65896fbf keyboard.c: fix update/draw logic in kbd_unpress_key
thanks @0x4261756D @earboxer for pointing out this issue
2022-01-09 21:02:46 -08:00
Zach DeCook
bddf05e0fc key drawing: refactor kbd_draw_key 2022-01-10 03:08:06 +00:00
Zach DeCook
564eb4536a overlapped key output: highlight letters swiped through 2022-01-10 03:08:06 +00:00
Zach DeCook
2de12a90e4 output: add -O flag to output overlapped keys
the use-case for this is simple 'swipe'-typing:
another program can take the output, guess the word which is being typed, and type the rest of the word
2022-01-10 03:08:06 +00:00
Maarten van Gompel
bb1eff09be applied clang-format (no functional changes), but exempted custom include order in keyboard.c and main.c 2021-10-19 23:12:01 -07:00
Stacy Harper
e100aafb05 Add landscape layers 2021-10-19 23:12:01 -07:00
Stacy Harper
e73316bd7c WIP refacto keyboard.c 2021-10-19 23:12:01 -07:00
Maarten van Gompel
ff92a92086 refactored keymap loading 2021-10-19 23:12:01 -07:00
Stacy Harper
b5ec768822 WIP: refactorise keyboard.c 2021-10-19 23:12:01 -07:00