1

I would like to get rid of all external components on my Pi so as to make it portable. I have a GPIO attached touchscreen. Is there a software keyboard that I could use that:

  • Is fully functional (has most of the keys on a standard keyboard)
  • Is customizable (add or remove buttons to conform with users wants)
  • Uses QWERTY layout

Is there a easy solution for this?

1

The Matchbox Keyboard can do exactly that! All you have to do is compile it. To customize it you can edit the keyboard.xml file found in /usr/share/matchbox-keyboard/. This site shows you how to install it. Each button can be removed, added, or customized. Here is an example of the .xml file listed above.

<?xml version="1.0" encoding="UTF-8"?>
<keyboard>
<options>
</options> 
<layout id="german keyboard">
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Esc" action="escape" />
  </key>
  <key>
        <default display="^" />
        <shifted display="°" />
  </key>
  <key>
        <default display="1" />
        <shifted display="!" />
  </key>
  <key>
        <default display="2" />
        <shifted display='"' />
        <mod1    display="²" />
  </key>
  <key>
        <default display="3" />
        <shifted display="§" />
        <mod1    display="³" />
  </key>
  <key>
        <default display="4" />
        <shifted display="$" />
  </key>
  <key>
        <default display="5" />
        <shifted display="%" />
  </key>
  <key>
        <default display="6" />
        <shifted display="&amp;" />
  </key>
  <key>
        <default display="7" />
        <shifted display="/" />
        <mod1    display="{" />
  </key>
  <key>
        <default display="8" />
        <shifted display="(" />
        <mod1    display="[" />
  </key>
  <key>
        <default display="9" />
        <shifted display=")" />
        <mod1    display="]" />
  </key>
  <key>
        <default display="0" />
        <shifted display="=" />
        <mod1    display="}" />
  </key>
  <key>
        <default display="?" />
        <shifted display="ß" />
        <mod1    display="\" />
  </key>
  <key>
        <default display="'" />
        <shifted display="" />
  </key>
 <key fill="true">
       <default display="⌫" action="backspace"/>
  </key>
  <space width="500" extended="true"/>
  <key width="4000"  extended="true">
        <default display="Home" action="home"/>
  </key>
  <key width="4000"  extended="true">
        <default display="PgUp" action="pageup"/>
  </key>
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="↹" action="tab"/>
  </key>
  <key obey-caps='true'>
        <default display="q" />
        <shifted display="Q" />
        <mod1    display="@" />
  </key>
  <key obey-caps='true'>
        <default display="w" />
        <shifted display="W" />
  </key>
  <key obey-caps='true'>
        <mod1 display="€" />
        <default    display="e" />
        <shifted display="E" />
  </key>
  <key obey-caps='true'>
        <default display="r" />
        <shifted display="R" />
  </key>
  <key obey-caps='true'>
        <default display="t" />
        <shifted display="T" />
  </key>
  <key obey-caps='true'>
        <default display="z" />
        <shifted display="Z" />
  </key>
  <key obey-caps='true'>
        <default display="u" />
        <shifted display="U" />
  </key>
  <key obey-caps='true'>
        <default display="i" />
        <shifted display="I" />
  </key>
  <key obey-caps='true'>
        <default display="o" />
        <shifted display="O" />
  </key>
  <key obey-caps='true'>
        <default display="p" />
        <shifted display="P" />
  </key>
  <key>
        <default display="ü" />
        <shifted display="Ü" />
  </key>
  <key>
        <default display="+" />
        <shifted display="*" />
        <mod1    display="~" />
  </key>
  <key fill="true">
        <default display="◀┛" action="return"/>
  </key>
  <space width="500" extended="true"/>
  <key width="4000"  extended="true">
       <default display="End" action="end"/>
  </key>
  <key width="4000"  extended="true">
        <default display="PgDn" action="pagedown"/>
  </key>
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Caps" action="modifier:caps"/>
  </key>
  <key obey-caps='true'>
        <default display="a" />
        <shifted display="A" />
  </key>
  <key obey-caps='true'>
        <default display="s" />
        <shifted display="S" />
  </key>
  <key obey-caps='true'>
        <default display="d" />
        <shifted display="D" />
  </key>
  <key obey-caps='true'>
        <default display="f" />
        <shifted display="F" />
  </key>
  <key obey-caps='true'>
        <default display="g" />
        <shifted display="G" />
  </key>
  <key obey-caps='true'>
        <default display="h" />
        <shifted display="H" />
  </key>
  <key obey-caps='true'>
        <default display="j" />
        <shifted display="J" />
  </key>
  <key obey-caps='true'>
        <default display="k" />
        <shifted display="K" />
  </key>
  <key obey-caps='true'>
        <default display="l" />
        <shifted display="L" />
  </key>
  <key>
        <default display="ö" />
        <shifted display="Ö" />
  </key>
  <key>
        <default display="ä" />
        <shifted display="Ä" />
  </key>
  <key>
        <default display="#" />
        <shifted display="'" />
  </key>
  <key fill="true">
        <default display="◀┛" action="return"/>
  </key>
  <space width="500" extended="true"/>
  <space width="4000"  extended="true" />
  <space width="4000"  extended="true" />
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Shift" action="modifier:shift"/>
  </key>
  <key>
        <default display="&lt;" />
        <shifted display="&gt;" />
        <mod1    display="|" />
  </key>
  <key obey-caps='true'>
        <default display="y" />
        <shifted display="Y" />
  </key>
  <key obey-caps='true'>
        <default display="x" />
        <shifted display="X" />
  </key>
  <key obey-caps='true'>
        <default display="c" />
        <shifted display="C" />
  </key>
  <key obey-caps='true'>
        <default display="v" />
        <shifted display="V" />
  </key>
  <key obey-caps='true'>
        <default display="b" />
        <shifted display="B" />
  </key>
  <key obey-caps='true'>
        <default display="n" />
        <shifted display="N" />
  </key>
  <key obey-caps='true'>
        <default display="m" />
        <shifted display="M" />
        <mod1 display="µ" />
  </key>
  <key>
        <default display="," />
        <shifted display=";" />
  </key>
  <key>
        <default display="." />
        <shifted display=":" />
  </key>
  <key>
        <default display="-" />
        <shifted display="_" />
  </key>
  <key fill="true">
        <default display="Shift" action="modifier:shift"/>
  </key>
  <space width="500" extended="true"/>
  <space width="4000"  extended="true" />
  <space width="4000"  extended="true" />
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
       <default display="Strg" action="modifier:ctrl"/>
  </key>
  <key fill="true">
       <default display="[->]" action="modifier:layout"/>
  </key>
  <key fill="true">
        <default display="Alt" action="modifier:alt"/>
  </key>
  <key width="9500">
        <default display=" " action="space" />
  </key>
  <key fill="true">
        <default display="Alt Gr" action="modifier:mod1"/>
  </key>
  <key>
        <default display="↑" action="up" />
  </key>
  <key>
        <default display="↓" action="down" />
  </key>
  <key>
        <default display="←" action="left" />
  </key>
  <key>
        <default display="→" action="right" />
  </key>
  <space width="500" extended="true"/>
  <space width="4000"  extended="true" />
  <space width="4000"  extended="true" />
  <space width="500" extended="true"/>
</row>
</layout>
<layout id="numpad keyboard">
<row>
  <space width="500" extended="true"/>
  <key>
        <default display="Num" action="modifier:caps" />
  </key>
  <key>
        <default display="/" />
  </key>
  <key>
        <default display="*" />
  </key>
  <key>
        <default display="-" />
  </key>
  </row>
<row>
  <space width="500" extended="true"/>
  <key obey-caps='true'>
        <default display="7" />
        <shifted display="Pos 1" action="home" />
  </key>
  <key obey-caps='true'>
        <default display="8" />
        <shifted display="↑" action="up" />
  </key>
  <key obey-caps='true'>
        <default display="9" />
        <shifted display="Bild ↑" action="pageup"/>
  </key>
  <key>
        <default display="+" />
  </key>
  </row>
<row>
  <space width="500" extended="true"/>
  <key obey-caps='true'>
        <default display="4" />
        <shifted display="←" action="left" />
  </key>
  <key>
        <default display="5" />
  </key>
  <key obey-caps='true'>
        <default display="6" />
        <shifted display="→" action="right"/>
  </key>
  <key>
        <default display="+" />
  </key>
</row>
<row>
  <space width="500" extended="true"/>
  <key obey-caps='true'>
        <default display="1" />
        <shifted display="Ende" action="end" />
  </key>
  <key obey-caps='true'>
        <default display="2" />
        <shifted display="↓" action="down" />
  </key>
  <key obey-caps='true'>
        <default display="3" />
        <shifted display="Bild ↓" action="pagedown"/>
  </key>
  <key>
        <default display="◀┛" action="return" />
  </key>
</row>
<row>
  <space width="500" extended="true"/>
  <key obey-caps='true'>
        <default display="0" />
  </key>
  <key obey-caps='true'>
        <default display="," />
        <shifted display="Entf" action="delete"/>
  </key>
</row>
<row>
  <key>
        <default display="[->]" action="modifier:layout"/>
  </key>
</row>
</layout>
<layout id="default keyboard">
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Esc" action="escape" />
  </key>
  <key>
        <default display="`" />
  </key>
  <key>
        <default display="1" />
        <shifted display="!" />
  </key>
  <key>
        <default display="2" />
        <shifted display='"' />
        <mod1    display="½" />
  </key>
  <key>
        <default display="3" />
        <shifted display="£" />
        <mod1    display="¾" />
  </key>
  <key>
        <default display="4" />
        <shifted display="$" />
  </key>
  <key>
        <default display="5" />
        <shifted display="%" />
  </key>
  <key>
        <default display="6" />
        <shifted display="^" />
  </key>
  <key>
        <default display="7" />
        <shifted display="&" />
  </key>
  <key>
        <default display="8" />
        <shifted display="*" />
  </key>
  <key>
        <default display="9" />
        <shifted display="(" />
  </key>
  <key>
        <default display="0" />
        <shifted display=")" />
  </key>
  <key>
        <default display="-" />
        <shifted display="_" />
  </key>
  <key>
        <default display="=" />
        <shifted display="+" />
  </key>
  <key fill="true">
       <default display="Bksp" action="backspace"/>
  </key>
  <space width="500" extended="true"/>
  <key width="4000"  extended="true">
        <default display="Home" action="home"/>
  </key>
  <key width="4000"  extended="true">
        <default display="PgUp" action="pageup"/>
  </key>
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Tab" action="tab"/>
  </key>
  <key obey-caps='true'>
        <default display="q" />
        <shifted display="Q" />
  </key>
  <key obey-caps='true'>
        <default display="w" />
        <shifted display="W" />
  </key>
  <key obey-caps='true'>
        <mod1 display="ë" />
        <default    display="e" />
        <shifted display="E" />
  </key>
  <key obey-caps='true'>
        <default display="r" />
        <shifted display="R" />
  </key>
  <key obey-caps='true'>
        <default display="t" />
        <shifted display="T" />
  </key>
  <key obey-caps='true'>
        <default display="y" />
        <shifted display="Y" />
  </key>
  <key obey-caps='true'>
        <default display="u" />
        <shifted display="U" />
  </key>
  <key obey-caps='true'>
        <default display="i" />
        <shifted display="I" />
  </key>
  <key obey-caps='true'>
        <default display="o" />
        <shifted display="O" />
  </key>
  <key obey-caps='true'>
        <default display="p" />
        <shifted display="P" />
  </key>
  <key>
        <default display="{" />
        <shifted display="[" />
  </key>
  <key>
        <default display="}" />
        <shifted display="]" />
  </key>
  <key fill="true">
        <default display="\" />
        <shifted display="|" />
  </key>
  <space width="500" extended="true"/>
  <key width="4000"  extended="true">
        <default display="End" action="end"/>
  </key>
  <key width="4000"  extended="true">
        <default display="PgDn" action="pagedown"/>
  </key>
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Caps" action="modifier:caps"/>
  </key>
  <key obey-caps='true'>
        <default display="a" />
        <shifted display="A" />
  </key>
  <key obey-caps='true'>
        <default display="s" />
        <shifted display="S" />
  </key>
  <key obey-caps='true'>
        <default display="d" />
        <shifted display="D" />
  </key>
  <key obey-caps='true'>
        <default display="f" />
        <shifted display="F" />
  </key>
  <key obey-caps='true'>
        <default display="g" />
        <shifted display="G" />
  </key>
  <key obey-caps='true'>
        <default display="h" />
        <shifted display="H" />
  </key>
  <key obey-caps='true'>
        <default display="j" />
        <shifted display="J" />
  </key>
  <key obey-caps='true'>
        <default display="k" />
        <shifted display="K" />
  </key>
  <key obey-caps='true'>
        <default display="l" />
        <shifted display="L" />
  </key>
  <key>
        <default display=";" />
        <shifted display=":" />
  </key>
  <key>
        <default display="#" />
        <shifted display="~" />
  </key>
  <key fill="true">
        <default display="Ret" action="return"/>
  </key>
  <space width="500" extended="true"/>
  <space width="4000"  extended="true" />
  <space width="4000"  extended="true" />
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key fill="true">
        <default display="Shift" action="modifier:shift"/>
  </key>
  <key obey-caps='true'>
        <default display="z" />
        <shifted display="Z" />
  </key>
  <key obey-caps='true'>
        <default display="x" />
        <shifted display="X" />
  </key>
  <key obey-caps='true'>
        <default display="c" />
        <shifted display="C" />
  </key>
  <key obey-caps='true'>
        <default display="v" />
        <shifted display="V" />
  </key>
  <key obey-caps='true'>
        <default display="b" />
        <shifted display="B" />
  </key>
  <key obey-caps='true'>
        <default display="n" />
        <shifted display="N" />
  </key>
  <key obey-caps='true'>
        <default display="m" />
        <shifted display="M" />
  </key>
  <key>
        <default display="," />
        <shifted display="&lt;" />
  </key>
  <key>
        <default display="." />
        <shifted display="&gt;" />
  </key>
  <key>
        <default display="/" />
        <shifted display="?" />
  </key>
  <key fill="true">
        <default display="Shift" action="modifier:shift"/>
  </key>
  <space width="500" extended="true"/>
  <space width="4000"  extended="true" />
  <space width="4000"  extended="true" />
  <space width="500" extended="true"/>
</row>
<row>
  <space width="500" extended="true"/>
  <key>
        <default display="[->]" action="modifier:layout"/>
  </key>
  <key>
        <default display="äëö" action="modifier:mod1"/>
  </key>
  <key fill="true">
        <default display="Ctrl" action="modifier:ctrl"/>
  </key>
  <key>
        <default display="Alt" action="modifier:alt"/>
  </key>
  <key width="12000">
        <default display=" " action="space" />
  </key>
  <key>
        <default display="@" />
        <shifted display="'" />
  </key>
  <key>
       <default display="↑" action="up" />
  </key>
  <key>
        <default display="↓" action="down" />
  </key>
  <key>
        <default display="←" action="left" />
  </key>
  <key>
        <default display="→" action="right" />
  </key>
  <space width="500" extended="true"/>
  <space width="4000"  extended="true" />
  <space width="4000"  extended="true" />
  <space width="500" extended="true"/>
</row>
</layout>
</keyboard>

You can even add a toggle button on the taskbar for easy access(see lower right hand corner of picture below). Here is a complete guide to setting it up. enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.