Commit Graph

39 Commits

Author SHA1 Message Date
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
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
76b64f6a85 Fix builds 2023-09-08 23:26:42 +02:00
a152fd036f Break on function definitions 2023-09-08 23:14:40 +02:00
fbbf563d70 Simplest clang-format 2023-09-08 22:57:14 +02:00
2747980a4e clang-format 2023-09-08 22:42:49 +02:00
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
9e03e120c3 switch layers: fix crash
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-09-06 23:14:30 +02:00
24e354ce9e Add popup to display pressed keys 2023-09-06 15:29:07 +02:00
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
3752d0e392 Fix remaining too long text cases 2023-08-31 22:25:11 +02:00
4444c6e664 Prevent writing outside of key without ellipsize 2023-08-31 22:03:51 +02:00
975bd2ec32 Fix Ctrl feedback while being clicked 2023-08-31 18:41:41 +02:00
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
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
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
bfcd3527dd scroll wheel switches layers (as opposed to crashing as it did before) 2023-08-31 11:39:17 +02:00
0ca0409400 refactoring: function for layer switching 2023-08-31 11:39:17 +02:00
46f4515477 fixes and safety checks in layer switching 2023-08-31 11:39:17 +02:00
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
b6ec34fe3a fix scaling problem from "support multiple outputs" 2023-08-27 12:12:03 +02:00
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
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
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
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
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
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
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
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
849f4600e9 project: rerun clang-format
TODO make a commit or PR hook for this
2022-06-13 21:55:47 +02:00
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
bddf05e0fc key drawing: refactor kbd_draw_key 2022-01-10 03:08:06 +00:00
564eb4536a overlapped key output: highlight letters swiped through 2022-01-10 03:08:06 +00:00
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
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
e100aafb05 Add landscape layers 2021-10-19 23:12:01 -07:00
e73316bd7c WIP refacto keyboard.c 2021-10-19 23:12:01 -07:00
ff92a92086 refactored keymap loading 2021-10-19 23:12:01 -07:00
b5ec768822 WIP: refactorise keyboard.c 2021-10-19 23:12:01 -07:00