Git Product home page Git Product logo

wvkbd's Introduction

wvkbd - On-screen keyboard for wlroots that sucks less

This project aims to deliver a minimal but practically usable implementation of a wlroots on-screen keyboard in legible C. This will only be a keyboard, not a feedback buzzer, led blinker, or anything that requires more than what's needed to input text quickly. The end product should be a static codebase that can be patched to add new features.

Features

  • Typing, modifier locking, layout switching
  • Positive visual feedback on key presses
  • Custom layouts and underlying keymaps
  • On-the-fly layout and keymap switching
  • Custom color schemes
  • Proper font drawing
  • Intuitive layouts
  • International layouts (cyrillic, arabic, persian, greek, georgian)
  • Support for 'Copy' keys which are not on the keymap
  • Emoji support
  • Compose key for character variants (e.g. diacritics)
  • Show/hide keyboard on signals (SIGUSR1 = hide, SIGUSR2 = show, SIGRTMIN = toggle)
  • Automatic portrait/landscape detection and subsequent layout switching

There are some areas that still need work:

  • Make sure the virtual input method in wayland is working as best as it can
  • Support for input method protocol in wayland, ability to respond to text fields

Install

You'll need the following developer packages

  • cairo
  • pango
  • wayland-client
  • xkbcommon

Make any customizations you would like in config.def.h and run make

The default set of layouts is called mobintl (mobile international), which groups various layouts aimed at mobile devices and also attempts to accommodate various international users. The resulting binary is called wvkbd-mobintl.

You can, however, define your own layouts by copying and modifying layout.mobintl.h and keymap.mobintl.h (replace mobintl for something like yourlayout). Then make your layout set using make LAYOUT=yourlayout, and the resulting binary will be wvkbd-yourlayout

Usage

Run wvkbd-mobintl (or the binary for your custom layout set).

You can switch between the layouts/layers of the keyboard by pressing the ⌨ key (little keyboard) the bottom-left (press shift to iterate back instead of forward). If you only want a subset of the available layers, you can define which you want and in what order you want to cycle through them using the -l parameter (or --landscape-layers for landscape mode). This takes takes a ordered comma separated list of layout names that are defined in your layout set.

The keyboard can be hidden by sending it a SIGUSR1 signal, shown again by sending it SIGUSR2 or toggled by sending it SIGRTMIN. This saves some start up time and may be appropriate in some low-resource environments.

Wvkbd has an output mode -o that will echo its output to standard output. This facility can be used if users want audio/haptic feedback, a feature explicitly out of scope for wvkbd. To achieve this, simply pipe wvkbd's output through the external tool clickclack:

$ wvkbd-mobintl -l simple,special,emoji -o | clickclack -V -f keypress.wav

Another output mode, -O will let the keyboard output keys which are swiped over. It can be used by an external program, such as swipeGuess to get swipe-typing support.

$ wvkbd-mobintl -O | swipeGuess.sh words.txt | completelyTypeWord.sh

Compose button

The default mobile international layout features a Compose button (Cmp) which, when combined with another key, opens up a layout that offers variants for that key. This is similar to functionality that other keyboards implemented using a long press (wvkbd has no such notion, holding a key will repeat it like on a physical keyboard).

For example, press Cmp + a to access variants with diacritics like á,à,â,ä, etc..

Most layouts also feature the following that are less obvious:

  • Press Cmp + . to access more punctuation
  • Press Cmp + - or , to access 'mathematical' symbols (+,-,=,etc)
  • Press Cmp + ' or 0 or 9 to access more brackets and quotes
  • Press Cmp + q to access emojis

Last, but not least, pressing Cmp + space or Cmp + ⌨ or Cmp + Abc opens up an index that allows you to immediately jump to any layout by name, even layouts not explicitly added to your layers on startup.

Contribute

Any contributions are welcome, there are two ways to contribute, the first one is preferred:

  1. Sourcehut - Submit your patches using git mail to ~mil/[email protected], follow these contribution guidelines. Questions can also be asked on Sxmo's mailing lists.
  2. Github - Submit a pull request or open an issue (legacy method)

This project was started by John Sullivan and is currently being maintained by the Sxmo project, whose maintainers will ensure both git remotes are kept in sync at all times.

For code contributions, please run make format (requires clang-format) before sending a patch (opening a PR) and include as much relevant detail as possible.

Related projects

  • clickclack - Audio/haptic feedback (standalone)
  • swipeGuess - Word-completion for swipe-typing
  • Sxmo - A hackable mobile interface environment for Linux phones that adopted wvkbd as its keyboard
  • svkbd - A similar project as wvkbd but for X11 rather than Wayland
  • squeekboard - The virtual keyboard developed for the Librem5 (used by Phosh)

wvkbd's People

Contributors

alpabrz avatar arenm avatar bolbishvili avatar brandon-doornbos avatar craftersvk avatar derlaft avatar dimkard avatar earboxer avatar einararnason avatar jjsullivan5196 avatar le-migou avatar manner82 avatar mhdzli avatar mojyack avatar oersen avatar pks-t avatar proycon avatar rdbo avatar stacyharper avatar system64fumo avatar wart-github avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wvkbd's Issues

Version information is reported incorrectly

It looks like the version in the makefile hasn't been updated since 0.2, and wvkbd doesn't print a newline after the version. This is very distracting when using the sxmo_version.sh script.

different keyboard layouts?

HI, i have implemented your wvkbd on a PI computer. It's due to the fact that the latest PIOS is bookworm, running under wayland, so all the x based on screen keyboards don't work. But wvkbd does work. So far, about 30 PI users have downloaded it, and my scripts to integrate it into the PIOS environment. Not huge, but a good showing after only a week!

However, the keyboard layouts are basically for phones. Have you considered a version with a more conventional (computer) keyboard layout? It would be very useful to us in the PI community. like a layout more similar to a 105 key computer keyboard.

Thanks!
Ted
[email protected]

Segfault when starting hidden

_I get a segfault whenever I try to start the keyboard hidden on sway v1.7. main.c line 535 is where it happens. I managed to work around this but it feels like a hackjob.

diff --git a/main.c b/main.c
index 5eab410..81f9ea3 100644
--- a/main.c
+++ b/main.c
@@ -531,6 +531,9 @@ main(int argc, char **argv) {
        signal(SIGUSR1, hide);
        signal(SIGUSR2, show);
 
+       while (run_display && !layer_surface) {
+               sleep(1);
+       }
        while (run_display) {
                while (wl_display_dispatch(display) != -1 && layer_surface) {
                }

```_

Make issue

I'm sure this is something simple but I don't have any background in C. I'm compiling this package from the AUR on my pinephone, and I'm getting an error in "drw.h" reporting "pango/pangocairo.h: No such file or directory".

I see the path to the file in question on my system is "/usr/include/pango-1.0/pango/pangocairo.h", I'm assuming the problem is the "pango-1.0". I tried adding pango-1.0 to the include line in drw.h, but it gets overwritten.

I'm probably just doing something stupid, I've spent a lot of time trying to get a functional keyboard on my pinephone and I am tired.

Single press produces multiple characters

I built wvkbd in Ubuntu 20.04 and started in sway. When using the keyboard in Chromium, one touch press produces double characters on screen. When I connected through VNC and pressed once, it produced 4 characters.

Theme gets messed up if the keyboard is opened and closed many times

wvkbd version: wvkbd-0.14.3
Compositor: river 0.2.6

After opening and closing the keyboard a couple of times, the theme gets messed up.
It is supposed to look like this at all times:
image

Instead, it will look like this after opening and closing (pkill -9) a couple of times:
image

I'm not sure what exactly this couple be, but it is very odd.
The command I am using to toggle the keyboard is:

if pidof wvkbd-mobintl; then
	pkill -9 wvkbd-mobintl
else
	wvkbd-mobintl -L 280 --fn "FiraCode Nerd Font Mono:style=Bold" --bg "1b1b1b" --text "e6e6b5" --text-sp "e6e6b5"
fi

Question: I don't have SIGRTMIN so it seams. What signal to send for toggling?

Hi

I am on a Arch system and don't have SIGRTMIN. I can show and hide the kbd with USR2 and USR1 signal. But which to take for toggling? Could try all, but the first I did (TTIN) made the process suspend... :)

14:29:44 ~ $ kill -l
HUP INT QUIT ILL TRAP IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

Thanks!

Any Interest in having a Full-Size Keyboard Layout (ideal for 2-in-1 && Tablet PC)?

First, I just wanted to say: Great work! ~ wvkbd is literally the only usable OSK I've been able to find for my Wayland Desktop. ~ I really appreciate the work you've done here: as having a working OSK for my Microsoft Surface 7 has been a real pain to get, when running Wayland.

That said: One thing that i noticed you are lacking is a properly fully-featured standard keyboard layout. AFAICT, you've really set this up for mobile devices, or smaller screens, not so much for 2-in-1 Laptops or Tablet PCs.. I found using wvkbd to be a real pain, as I use mod keys / extensive key binds, so I've been hacking away; implementing a full-size keyboard.

screenshot: https://github.com/nine7nine/n7n-AGS-Shell/blob/main/images/ags-wvkbd.png

Right now, it's currently just based on your landscape layout, but if there was interest - I could probably rip that code out into a new layout -- and submit a patch / pull request in the semi-near future. any interest?

I gotta imagine that I'm not the only laptop user interested in your OSK... and obviously, the non-standard placements of buttons, lack of modifier keys on the main keyboard layout, etc -- makes it really hard to use on a Linux Desktop setup, with a 2-in-1... anyway let me know, I don't mind rebasing it all on a new layout, when i have the time (+ finish ironing out a few things).

Different language support?

I am using DE keyboard layout and Z, Y are reversed and all special chars are mapped wrong. Do I have to switch to US keyboard layout or is there a setting for this. Thanks!

SIGRTMIN not toggling

Instead of Toggling it's hidden state it just closes the application.

EDIT: I am on NixOS and use zsh, but I noticed that zsh uses it's own kill command, so I used /usr/bin/env kill to use the normal kill command.

Selecting Display to Show wvkbd on

Hi! This project is really useful for using a laptop connected to a TV with only a mouse, but I don't see a way to select the display that wvkbd is shown on. I suggest adding this as a new command-line option.

Compose Key Not Working

Hello,

I am using wvkbd on the Pinephone with sxmo and unfortunately I am not able to access special characters like _, @, : etc. It seems to be supposed that they shoukd be available by using the compose key plus the period key for example - but this is not working. It seems that the compose key only works with normal letters for accessing umlauts etc.

Any ideas how I can type a : or _?

Best regards,

Lucas

No Super key on "main" keyboards

I added them into the default layouts myself, and i'm aware of the general encouraging to personalise layouts, but to not have the Super / Win key on the Landscape and Full layouts in the default code seems odd given how common it is to use as your WM modifer key.

Crashes on sway-git

Regressed by a126945 after swaywm/sway@7d2e4a51063a.

$ wvkbd-mobintl
Initializing keyboard
Found 54 layouts
Found 2 layers
Resize 0x0 0.000000, 55 layouts
Segmentation fault

Process 57624 stopped
* thread #1, name = 'wvkbd-mobintl', stop reason = signal SIGSEGV: invalid address (fault address: 0x4)
    frame #0: 0x00000008229b9010 libcairo.so.2`INT_cairo_save(cr=0x0000000000000000) at cairo.c:627:9
   624  {
   625      cairo_status_t status;
   626
-> 627      if (unlikely (cr->status))
   628          return;
   629
   630      status = cr->backend->save (cr);
(lldb) bt
* thread #1, name = 'wvkbd-mobintl', stop reason = signal SIGSEGV: invalid address (fault address: 0x4)
  * frame #0: 0x00000008229b9010 libcairo.so.2`INT_cairo_save(cr=0x0000000000000000) at cairo.c:627:9
    frame #1: 0x00000000002702a2 wvkbd-mobintl`drw_do_rectangle(d=0x00000000002a2b18, color=(bgra = "\U0000000f\U0000000f\U0000000f\xff", color = 4279176975), x=0, y=0, w=0, h=0, over=false) at drw.c:75:5
    frame #2: 0x00000000002703c0 wvkbd-mobintl`drw_fill_rectangle(d=0x00000000002a2b18, color=(bgra = "\U0000000f\U0000000f\U0000000f\xff", color = 4279176975), x=0, y=0, w=0, h=0) at drw.c:96:5
    frame #3: 0x0000000000270938 wvkbd-mobintl`kbd_draw_layout(kb=0x00000000002a2ba8) at keyboard.c:608:5
    frame #4: 0x0000000000272829 wvkbd-mobintl`kbd_resize(kb=0x00000000002a2ba8, layouts=0x000000000028dcd0, layoutcount='7') at keyboard.c:645:5
    frame #5: 0x0000000000274bff wvkbd-mobintl`wl_surface_enter(data=0x0000000000000000, wl_surface=0x000020eaa8a11d60, wl_output=0x000020eaa8a11b80) at main.c:359:5
    frame #6: 0x00000008245cb61a libffi.so.8`ffi_call_unix64 at unix64.S:104
    frame #7: 0x00000008245ca8b2 libffi.so.8`ffi_call_int(cif=0x000000082033ac60, fn=(wvkbd-mobintl`wl_surface_enter at main.c:344), rvalue=0x0000000000000000, avalue=0x000000082033ac90, closure=0x0000000000000000) at ffi64.c:673:3
    frame #8: 0x00000008245ca422 libffi.so.8`ffi_call(cif=0x000000082033ac60, fn=(wvkbd-mobintl`wl_surface_enter at main.c:344), rvalue=0x0000000000000000, avalue=0x000000082033ac90) at ffi64.c:710:3
    frame #9: 0x00000008217fac08 libwayland-client.so.0`wl_closure_invoke(closure=0x000020eaa8a67260, flags=1, target=0x000020eaa8a11d60, opcode=0, data=0x0000000000000000) at connection.c:1025:2
    frame #10: 0x00000008217f84af libwayland-client.so.0`dispatch_event(display=0x000020eaa8a5b000, queue=0x000020eaa8a5b0f0) at wayland-client.c:1631:3
    frame #11: 0x00000008217f72d4 libwayland-client.so.0`dispatch_queue(display=0x000020eaa8a5b000, queue=0x000020eaa8a5b0f0) at wayland-client.c:1777:3
    frame #12: 0x00000008217f709d libwayland-client.so.0`wl_display_dispatch_queue_pending(display=0x000020eaa8a5b000, queue=0x000020eaa8a5b0f0) at wayland-client.c:2019:8
    frame #13: 0x00000008217f6c6e libwayland-client.so.0`wl_display_dispatch_queue(display=0x000020eaa8a5b000, queue=0x000020eaa8a5b0f0) at wayland-client.c:1995:9
    frame #14: 0x00000008217f7350 libwayland-client.so.0`wl_display_dispatch(display=0x000020eaa8a5b000) at wayland-client.c:2062:9
    frame #15: 0x000000000027481b wvkbd-mobintl`main(argc=1, argv=0x000000082033b080) at main.c:1021:13
    frame #16: 0x000000000026fad0 wvkbd-mobintl`_start(ap=<unavailable>, cleanup=<unavailable>) at crt1_c.c:75:7

Tablet layout

I have made a layout for the tablet
I will be glad if you consider it as part of the application,
or use it as a starting point

I will definitely refine the layout, but it is already convenient for typing messages and programming

image

Keys wrongfully displayed when using `-H` and `-L` together

wvkbd version: wvkbd-0.14.3
Compositor: river 0.2.6

I am running the following command: $ wvkbd-mobintl -H 400 -L 400

Initially, everything is looks fine:
image

But then, when I try to press keys, I can notice that they are wrongfully placed (I tried to press X, C, V, ask you can see below. And they re-render in the right place):
image

I also noticed that it might be showing the wrong keyboard layout. Because when I press shift (located at around the position of the Z key), it shows another layout:
image

If I use only -L instead of -L and -H, it works fine:
image

BUG: On cosmic-comp error 0: `modifiers` sent before keymap.

When using wvkbd on cosmic I get the error mentioned when I press a key, full error below

> wvkbd-mobintl -L 250 --landscape-layers landscape
Initializing keyboard
Found 54 layouts
layer #1 = landscape
Found 2 layers
Resize 2746x250 1.400000, 55 layouts <-------- Before Key press
zwp_virtual_keyboard_v1@15: error 0: `modifiers` sent before keymap. <-------- After Key press
Wayland socket has been disconnected.

However if I open squeekboard, type, and then open wvkbd it works, but with wrong characters. Sway does not exhibit this issue, and since squeekboard works I decided to file here first. Further debugging guidence would be appreciated

Trigger scripts instead of Keys

Working on a custom layout where i add a button for speech-to-text input and a button to enable touchpad simulation (to show a mouse pointer) for pmos, sxmo, linuxmobile.

but i am not quite sure how i could define to trigger an action/script instead of a keypress. any hints are very welcome 😘

(i promise to document it here)

Can't use with mpp pen

So I can type with my fingers like normal but If i want to use my mpp Pen (so i dont leave fingerprints on the screen of my convertible) the keyboard doesnt react

background transparency

If I do -bg 00000000 or -fg 000000000 I still get a black background instead of transparency.

I'd like to make a top row that has a transparent "pad" across most of the screen and then one button on the far right. Though I can assume that it won't be clickable through.

Incorrect keymap size

I'm not entirely sure if this is technically incorrect, but I've encountered issues trying to start wvkbd on my own compositor and XKB is throwing errors that the keymap isn't valid. Looking into it, I noticed that wvkbd seems to be uploading a keymap with 55 trailing \0 bytes.

Looking at the wvkbd code, you seem to be adding 64 to the length of the keymap:

const size_t keymap_size = strlen(keymap_template) + 64;

That's 10 more than I would have expected, but still seems like it might be related to the issue. Is there a reason why you're sending a keymap with a bigger size than the underlying keymap actually is? Allocating more memory and putting garbage in the FD pointed to doesn't really matter, but reporting an incorrect size in the keymap request would seem a bit strange to me.

"error 0: Specified scale value (0) is not positive"

Context: Gentoo; wlroots 0.16.2(-r1); sway 1.8.1; unmodified config.def.h.

After a successful build, running wvkbd-mobintl results in the error mentioned in the title:

Initializing keyboard
Found 54 layouts
Found 2 layers
wl_surface@15: error 0: Specified scale value (0) is not positive

This is due to keyboard.preferred_scale not having been changed from its default value of 0, which in turn is due to current_output not having been initialised by the time display_handle_scale is called, meaning that the conditional in the if:

if (current_output == output) {
    keyboard.preferred_scale = scale;
    flip_landscape();

never succeeds. Further, inserting a printf in wl_surface_enter shows that the function is never called, leaving current_output uninitialised.

If the default value of keyboard.preferred_scale is changed to 1, wvkbd-mobintl displays a keyboard.

send keypress for modifiers

I am trying to use the keyboard with FreeRDP client, wayland version (wlfreerdp).
I have put the keyboard in the OVERLAY layer so that it shows on top of full screen wlfreerdp.

It almost works perfectly, but none of the modifier keys are detected. All I get is lowercase letters.

When comparing to a physical keyboard, the difference I can see (on the FreeRDP side) is that the modifiers (shift, ctrl, alt), are actually detected as keypresses, as well as modifier data.

Would it be straightforward to have the modifier keys come through as keypresses ?

wvkbd v0.14 and later crash on key press under Wayfire 0.7.4

I was running the latest packaged version of wvkbd (v0.12) provided by which seemed to be working fine under latest available Wayfire (0.7.4) (Debian Bookworm on ARM64). However, I wanted to make some custom keyboard layouts so decided to modify and recompile from source.

I checked out the 0.14.3 tag and everything builds and installs successfully but I get the following 'client communication' error in Wayfire debug log when I press a key. I reverted all my changes and recompiled vanilla from the tag. Same issue. Tags v0.14, v0.14.1, v0.14.2 yield the same result but v0.12 and v0.13 are working fine.

Could this be a bug in wvkbd or is this more likely to be an issue running under wayfire?

DD 05-11-23 23:28:15.200 - [src/core/seat/pointer.cpp:120] change cursor focus 0xaaaaecb10dc8 -> 0xaaaaecb13728
DD 05-11-23 23:28:16.800 - [src/core/seat/pointer.cpp:120] change cursor focus 0xaaaaecb13728 -> 0xaaaaecb10dc8
DD 05-11-23 23:28:17.455 - [src/core/seat/pointer.cpp:120] change cursor focus 0xaaaaecb10dc8 -> 0xaaaaecb13728
DD 05-11-23 23:28:20.734 - [src/core/seat/pointer.cpp:120] change cursor focus 0xaaaaecb13728 -> 0xaaaaecb10dc8
DD 05-11-23 23:28:21.232 - [src/core/seat/pointer.cpp:120] change cursor focus 0xaaaaecb10dc8 -> 0xaaaaecb13728
II 05-11-23 23:28:21.864 - [wayland] error in client communication (pid 12786)
II 05-11-23 23:28:21.864 - [src/core/seat/input-manager.cpp:94] remove input: virtual keyboard
DD 05-11-23 23:28:21.864 - [src/core/seat/pointer.cpp:120] change cursor focus 0xaaaaecb13728 -> (null)
DD 05-11-23 23:28:21.864 - [src/core/core.cpp:595] focusing layer 0

Option to toggle the keyboard

I think it'd be a nice feature if there was an ability to toggle the keyboard on and off, as right now the process of opening and closing it is rather unintuitive. A solution could be just appending "--toggle" to the command to make it toggle. And no, sending SIGUSR1/2 is not a solution to this. That's quite clunky and not user friendly, we shouldn't have to install gesture daemons or do anything like that just to easily show and hide our keyboards.

Makefile target config.h is lacking dependency config.def.h

The Makefile of current master branch has a target for config.h, that has no dependencies. Thus, config.h never gets updated, when config.def.h changes.
Because of this, updating master from version 0.14.3 or 0.14.4 and compiling causes an error, since DEFAULT_ROUNDING is not yet present in old config.h

This can be fixed by adding the dependency "config.def.h" to target "config.h".

I write this issue here, because I think a pull request would be oversized for that.

Kind regards,

purewasa

Crash on first keypress in Hyprland > 0.36.0 (git master)

Hi there,

after I built the binary and ran it it shows the keyboard as expected, but crashes as soon as I press a key.

The keystroke comes through.

Terminal output is:

./wvkbd-mobintl 
Initializing keyboard
Found 54 layouts
Found 2 layers
Resize 1920x120 1.000000, 55 layouts
xdg_surface@23: error 3: xdg_surface has never been configured
Wayland socket has been disconnected.

Trigger on field input tap

Automatically show/hide the on screen keyboard when needed.

There's a way to have on screen keyboards automatically pop up when needed via dbus calls
An example of an onscreen keyboard that has this is squeekboard

Resize?

Hi, I could not find any information about how to resize the height of the keys. I do not care if its live or in the settings.
If anyone could lend a hand that would be awesome,
Thanks

--hidden flag seems to not work as of 0.14

after updating and restarting, when bringing up the keyboard with the sigusr2 command it just popups a blank space where its meant to be, cant interact with it either

Compose messing up labels in upper case

Steps to reproduce:

  • Press the shift key
  • Press the cmp key
  • Press any character key leading to a compose layout
  • Press any composed character key
  • keep typing

Expected behaviour:

  • The key labels are changed to lowercase (as the characters you type are lowercase)
  • The shift key does not appear toggled anymore

Observed behaviour:

  • All labels are uppercase until they are pressed once, even though the typed characters are still lowercase
  • The shift key still appears toggled

Incorrect layout is drawn after hide/show

Tested on Sway-1.8.1 + wvkbd-HEAD(6e52be3)
How to reproduce:

  1. toggle layout with NextLayer key
  2. hide with 'kill -s 34'
  3. show with 'kill -s 34'
  4. the last layout is drawn, but the actual layout is keyboard.layouts[0].

This is caused by an order of flip_landscape() and kbd_draw_layout().
When showing the keyboard, kbd_draw_layout() is called by xdg_popup_configure()->kbd_resize(). And then the keyboard layout is reset to 0 in wl_surface_enter()->flip_landscape().

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.