#### Testing Keyboard Layouts

Testing layout changes or experimenting with new layouts is simple due to GLib’s resource overlays. This mechanism allows you to replace or add files to Stevia’s built-in resource bundle without rebuilding stevia.

Let’s assume you have the layout’s JSON in the current directory in a file named `de.json`. You can then use that layout by running:

    G_RESOURCE_OVERLAYS=/mobi/phosh/stevia/layouts=$PWD phosh-osk-stevia --replace

This maps the current directory as an overlay for the resource path `/mobi/phosh/stevia/layouts`, so de.json is made available as `/mobi/phosh/stevia/layouts/de.json`. This replaces the existing `de` layout, adding new layouts for other languages for testing works the same way.

If everything works you should see this on the console:

    GLib-GIO-Message: Adding GResources overlay '/mobi/phosh/stevia/layouts=/path/to/current/dir'
    GLib-GIO-Message: Mapped file '/path/to/current/dir/de.json' as a resource overlay

This informs you that Stevia picked up your modified layout (note that `/path/to/current/dir/` depends on your current working directory so the output might be slightly different).

If you need to make further changes just stop Stevia and run the above command again. This allows for quick test cycles without risking to break your system.

# Testing in a nested session

You can test these layouts in a nested session using Phoc. First start phoc nested in the Wayland session:

    WLR_BACKENDS=wayland /usr/bin/phoc GSETTINGS_BACKEND=memory -E kgx

Then in another terminal start Stevia against that nested Phoc:

    gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
    WAYLAND_DISPLAY=wayland-1 POS_DEBUG=force-show phosh-osk-stevia --replace

You should now see Stevia in the nested Phoc window. The `force-show` ensures that Stevia is shown even though no app requests it. `wayland-1` is the socket created by Phoc, the socket name is printed by Phoc on startup:

    Running compositor on wayland display 'wayland-1'

You can terminate Stevia at any time using `Ctrl-C` and pass options like `G_RESOURCE_OVERLAYS` as shown above. You can also easily test stevia against different apps by passing other values for `-E` like `-E xterm` to test X11 interaction.

## Testing input types

X11 applications handle input different from Wayland applications and even the later behave differently depending on whether an input method is in use or not. Some things to test when making layout or keymap changes. You can pass these as `-E` to phoc:

- Chromium with Wayland and input method

    chromium --ozone-platform=wayland --enable-features=WaylandTextInputV3

- Chromium with Wayland and no input method

    chromium --ozone-platform=wayland --disable-features=WaylandTextInputV3

- Chromium X11 backend

    chromium --ozone-platform=x11

- Classic xterm

    xterm

- GTK4 app using input method

    kgx