Two shift keys don't work as one and the capslock isn't the "master" key for them.
I've tried to reproduce to some point gboard lyout for tablet/landscape mode in Unexpected Keyboard. I found out that having two shift keys (on the left and right side) the right one behaving like the "main" one and only this one is activating by auto capital letters function and/or by the capslock key (that one doesn't work like a toggle for any shift key) and only he -right shift- can be used to "turn him off".
I think that expected behaviour in that scenario supposed to be that the left or right shift key shoud activate his counterpart and the capslock key (at least as a separate key) should be a "master" key for them to (de)activate both of them.
Here is the layout, if someone wants to use it...
<?xml version="1.0" encoding="utf-8"?>
<keyboard name="QWERTY GBoard (Polski)" script="latin" bottom_row="false">
<row>
<key width="0.6" key0="tab"/>
<key key0="q" nw="loc esc" ne="1" sw="~"/>
<key key0="w" ne="2"/>
<key key0="e" ne="3" se="ę"/>
<key key0="r" nw="loc ₪" ne="4"/>
<key key0="t" ne="5"/>
<key key0="y" ne="6" sw="^"/>
<key key0="u" ne="7" sw="&" se="loc €"/>
<key key0="i" nw="loc accent_macron" ne="8"/>
<key key0="o" ne="9" se="ó"/>
<key key0="p" ne="0"/>
<key key0="backspace" ne="delete" nw="f11_placeholder" sw="f12_placeholder"/>
</row>
<row>
<key key0="capslock"/>
<key key0="a" ne="\@" se="ą"/>
<key key0="s" ne="loc §" sw="\#" se="ś"/>
<key key0="d" ne="loc $" se="loc £"/>
<key key0="f" ne="_"/>
<key key0="g" ne="-"/>
<key key0="h" ne="=" sw="+"/>
<key key0="j" sw="{" se="}"/>
<key key0="k" nw="(" ne=")" sw="[" se="]"/>
<key key0="l" ne="|" sw="\\" se="ł"/>
<key width="1.6" key0="enter" nw="loc voice_typing" ne="action"/>
</row>
<row>
<key width="1.5" key0="shift"/>
<key key0="z" ne="*" se="ż"/>
<key key0="x" ne=""" se="ź"/>
<key key0="c" ne="'" se="ć"/>
<key key0="v" ne=":" sw="<" se=">"/>
<key key0="b" ne=";" sw="/" se="//"/>
<key key0="n" ne="!" se="ń"/>
<key key0="m" nw="`" ne="\?" sw="```"/>
<key key0="." nw=".com" ne="," sw="%" se=".pl"/>
<key width="0.6" key0="up"/>
<key width="1.5" key0="shift"/>
</row>
<row height="0.95">
<key width="1.2" key0="ctrl" ne="loc meta" sw="loc switch_clipboard" se="switch_numeric"/>
<key width="1.2" key0="fn" nw="loc alt" ne="loc change_method" sw="switch_emoji" se="config"/>
<key width="6.5" key0="space" n="switch_forward" s="switch_backward" w="cursor_left" e="cursor_right" slider="true"/>
<key width="0.6" key0="left"/>
<key width="0.6" key0="down"/>
<key width="0.6" key0="right"/>
</row>
</keyboard>
The solution to this might be that the caps lock key should stay pressed while the two shift key remain unpressed.
Moreover, as far as I can see, Unexpected has no concept of "right shift," even if you write a layout with two keys generating shift. On a physical keyboard, the two keys produce different codes; some PC games distinguish them, and the WinXP power tool "RemapKey" lets me map each shift key independently. Is this a concept that is never used by Android apps?
The solution to this might be that the caps lock key should stay pressed while the two shift key remain unpressed.
I'm fine with any working solution, of course if caps lock, at least as separate key, will behave like toggle (pressing first time activates it, pressing second time deactivates it).
Moreover, as far as I can see, Unexpected has no concept of "right shift," even if you write a layout with two keys generating
shift.
Probably the same goes with gboard. Devs of that keyboard just managed to "mimic" two shift keys but in reality it's still one button, just cloned for ease of use.
Moreover, as far as I can see, Unexpected has no concept of "right shift," even if you write a layout with two keys generating
shift. On a physical keyboard, the two keys produce different codes; some PC games distinguish them, and the WinXP power tool "RemapKey" lets me map each shift key independently. Is this a concept that is never used by Android apps?
I wouldn't say never. You can probably use it in Termux.
The solution to this might be that the caps lock key should stay pressed while the two shift key remain unpressed.
In the typewriter era, CAPS LOCK was SHIFT LOCK. The innovation that the two would affect a different set of keys was unthinkable until we built video terminals and could write firmware. SHIFT had its given effect—while it was pressed—but also unlocked the LOCK key. This was once a wonder of springs and plastic.
This might not be what we want, now that we can code whatever we want, but it is what white-haired users will expect. These users will sometimes tap SHIFT solely to cancel the LOCK.