Julow / Unexpected-Keyboard

A lightweight virtual keyboard for developers.
GNU General Public License v3.0
1.49k stars 191 forks source link

One sided keyboard #492

Open linux-a7s opened 12 months ago

linux-a7s commented 12 months ago

Add one sided option like right or left when we type from one handed

Spike-from-NH commented 12 months ago

Seconded! For example, add syntax in the layout XML that would make the keyboard align-left or align-right rather than span the full available width. And perhaps attach to top instead of bottom of the screen.

Julow commented 10 months ago

It's possible to add emtpy space on either side of the keyboard (though not on the right without having at least one row touching the right side).

Here's an impractical layout that cram the latin letters and a few symbols on 4 rows and 4 columns:

<?xml version="1.0" encoding="utf-8"?>
<keyboard name="QWERTY One-Handed (US)" script="latin" bottom_row="false">
  <row>
    <key shift="3" key0="!" key1="config" key2="q" key3="?"/>
    <key key0="e" key1="w" key2="r" key3=":"/>
    <key key0="y" key1="t" key2="u"/>
    <key key0="o" key1="i" key2="p"/>
  </row>
  <row>
    <key shift="3" key0="backspace" key2="delete"/>
    <key key0="s" key1="a" key2="d" key3="fn"/>
    <key key0="g" key1="f" key2="h" key3="-"/>
    <key key0="k" key1="j" key2="l" key3="@"/>
  </row>
  <row>
    <key shift="3" key0="shift" key2="loc capslock"/>
    <key key0="." key2="z" key3=","/>
    <key key0="c" key1="x" key2="v"/>
    <key key0="n" key1="b" key2="m"/>
  </row>
  <row>
    <key shift="2.5" key0="switch_numeric" key1="change_method" key3="ctrl" key4="switch_emoji"/>
    <key width="3" key0="space" key7="switch_forward" key8="switch_backward" key5="cursor_left" key6="cursor_right" slider="true"/>
    <key key0="enter" key1="loc voice_typing" key2="action"/>
  </row>
</keyboard>

It looks like that (with french keys being automatically added): shot

More research into this is welcome.

doak commented 8 months ago

I've tried a layout by myself: Screenshot_20240221-234341

<keyboard name="doak (single handed)" bottom_row="false" script="latin">
    <row>
        <key    key0="q"    key1="y"    key2="esc"  key3="&lt;" key4="&gt;" shift="2.5" />
        <key    key0="u"    key1="w"    key2="1"    key3="@"    key4="#"                />
        <key    key0="e"    key1="i"    key2="2"    key3="$"    key4="€"                />
        <key    key0="o"    key1="r"    key2="3"    key3="%"    key4="^"                />
        <key    key0="t"    key1="p"    key2="|"    key4="*"
                key3="&amp;"                                                            />
    </row>
    <row>
        <key    key0="a"    key1="h"    key2="tab"  key3="~"
                key4="loc accent_trema"                                     shift="2.5" />
        <key    key0="s"    key1="j"    key2="4"    key3="ß"                            />
        <key    key0="d"    key1="k"    key2="5"    key3="("    key4=")"                />
        <key    key0="f"    key1="l"    key2="6"    key3="["    key4="]"                />
        <key    key0="g"    key1="+"    key2="-"    key3="_"    key4="="                />
    </row>
    <row>
        <key    key0="b"    key1="z"    key2="?"    key3="/"    key4="\"    shift="2.5" />
        <key    key0="n"    key1="x"    key2="7"    key3="!"                            />
        <key    key0="c"    key1="m"    key2="8"                                        />
        <key    key0="v"    key1=":"    key2="9"    key3=","    key4="."                />
        <key
                key0="backspace"
                key1="shift"
                key2="delete"
                key3="subscript"
                key4="superscript"
                />
    </row>
    <row>
        <key
                key0="ctrl"
                key1="loc switch_greekmath"
                key2="loc meta"
                key4="switch_numeric"
                shift="2.5"
                />
        <key
                key0="fn"
                key1="alt"
                key2="0"
                key3="switch_emoji"
                key4="config"
                />
        <key
                key0="space"
                key1="switch_backward"
                key2="switch_forward"
                key5="left"
                key6="right"
                key7="up"
                key8="down"
                slider="true"
                width="2"
                />
        <key
                key0="enter"
                key1="ctrl"
                key2="action"
                key3="compose"
                />
    </row>

    <row height="0">
        <key width="10"/>
    </row>
</keyboard>
Spike-from-NH commented 8 months ago

Yes, but having the keyboard centered reduces the utility of one-handed typing! Delete shift="2.5" or replace it with shift="5.0" depending on your handedness!

doak commented 8 months ago

That's funny. What device you are using? I reach the middle best without letting the mobile phone go … :)

Spike-from-NH commented 8 months ago

Very well! Have it your way (which is the essence of custom layouts)!

doak commented 8 months ago

which is the essence of custom layouts

Absolutely. I am still curious. Is the device rather wide? Mine is such slippy, I would let it go if I wanna reach a key at the edge.

Since there is afaik no toggle to configure placement, I will create a layout for left, middle and right placement and provide it on https://github.com/Julow/Unexpected-Keyboard-layouts.