Compare commits

..

2 Commits

Author SHA1 Message Date
0d769838b1 Remove debugging code 2019-07-11 17:48:04 +02:00
ab3bc3fb06 Improve view behavior to more closely reflect #38 2019-07-11 15:09:19 +00:00
15 changed files with 359 additions and 242 deletions

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"
version="1.1" viewBox="0 0 24 24">
<path d="M 24,1 L 24,10 C 24,15 20,17 17,17 L 7,17 L 10,20 L 10,23
L 7,23 L 0,15 L 7,7 L 10,7 L 10,10 L 7,13 L 17,13
C 19,13 20,12 20,10 L 20,1 Z"
stroke="none" fill="black" />
</svg>

Before

Width:  |  Height:  |  Size: 388 B

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"
version="1.1" viewBox="0 0 24 24">
<path d="M 12,2 L 22,14 L 16,14 L 16,22 L 8,22 L 8,14 L 2,14 Z"
stroke="none" fill="black" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg4043"
version="1.1"
viewBox="0 0 4.2333331 4.2333093"
height="4.2333093mm"
width="4.2333331mm">
<defs
id="defs4037" />
<metadata
id="metadata4040">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-86.329776,-68.097636)"
id="layer1">
<g
style="stroke-width:1.00004983;fill:#2e3436;fill-opacity:1"
transform="matrix(0.99990029,0,0,1,-7.1823833,-1.8799927)"
id="g842">
<g
style="stroke-width:1.00004983;fill:#2e3436;fill-opacity:1"
id="g836">
<path
id="path5166"
d="m 95.636719,69.978516 c -1.165869,0 -2.115235,0.949365 -2.115235,2.115234 0,1.165869 0.949366,2.117188 2.115235,2.117188 1.165869,0 2.117187,-0.951319 2.117187,-2.117188 0,-1.165869 -0.951318,-2.115234 -2.117187,-2.115234 z m 0,0.529296 c 0.879886,0 1.58789,0.706052 1.58789,1.585938 0,0.879886 -0.708004,1.587891 -1.58789,1.587891 -0.879886,0 -1.585938,-0.708005 -1.585938,-1.587891 0,-0.879886 0.706052,-1.585937 1.585938,-1.585938 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52919304;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26459652;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 95.636719,70.109375 c -0.144398,0 -0.27248,0.07793 -0.373047,0.189453 -0.100567,0.111521 -0.18209,0.261405 -0.25,0.439453 -0.135821,0.356096 -0.214844,0.830395 -0.214844,1.355469 0,0.525074 0.07902,1.001326 0.214844,1.357422 0.06791,0.178048 0.149433,0.327932 0.25,0.439453 0.100567,0.111521 0.228649,0.1875 0.373047,0.1875 0.144397,0 0.27248,-0.07598 0.373047,-0.1875 0.100566,-0.111521 0.182089,-0.261405 0.25,-0.439453 0.135821,-0.356096 0.216797,-0.832348 0.216796,-1.357422 0,-0.525074 -0.08097,-0.999373 -0.216796,-1.355469 -0.06791,-0.178048 -0.149434,-0.327932 -0.25,-0.439453 -0.100567,-0.111521 -0.22865,-0.189453 -0.373047,-0.189453 z m 0,0.265625 c 0.05067,0 0.109272,0.02564 0.177734,0.101562 0.06846,0.07592 0.139293,0.198356 0.199219,0.355469 0.119851,0.314227 0.197266,0.763915 0.197266,1.261719 0,0.497804 -0.07742,0.949446 -0.197266,1.263672 -0.05993,0.157113 -0.130756,0.279549 -0.199219,0.355469 -0.06846,0.07592 -0.12706,0.101562 -0.177734,0.101562 -0.05067,0 -0.107319,-0.02564 -0.175781,-0.101562 -0.06846,-0.07592 -0.139294,-0.198356 -0.199219,-0.355469 C 95.141867,73.043196 95.0625,72.591554 95.0625,72.09375 c 0,-0.497804 0.07937,-0.947492 0.199219,-1.261719 0.05993,-0.157113 0.130756,-0.279549 0.199219,-0.355469 C 95.5294,70.400643 95.586045,70.375 95.636719,70.375 Z"
id="circle5168" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26459652;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 93.697266,71.962891 v 0.263671 h 3.96875 v -0.263671 z"
id="path5170" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -1,53 +1,123 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<geometry version="0.90"> <geometry version="0.90">
<bounds x="0" y="10.000000" width="426.0000" height="296.5853"/> <bounds x="0.000000" y="10.000000" width="426.0000" height="296.5853"/>
<section angle="0"> <section angle="0">
<bounds x="0" y="0" width="608.7804" height="201.3658"/>
<row orientation="1"> <row orientation="1">
<key name="AD01" oref="outline2" /> <key keycode="24" name="AD01" oref="outline2">
<key name="AD02" oref="outline2" /> <bounds x="65.56097" y="42.14634" width="37.46341" height="52.44877"/>
<key name="AD03" oref="outline2" /> </key>
<key name="AD04" oref="outline2" /> <key keycode="25" name="AD02" oref="outline2">
<key name="AD05" oref="outline2" /> <bounds x="106.1463" y="42.14634" width="37.46341" height="37.46341"/>
<key name="AD06" oref="outline2" /> </key>
<key name="AD07" oref="outline2" /> <key keycode="26" name="AD03" oref="outline2">
<key name="AD08" oref="outline2" /> <bounds x="145.1707" y="42.14634" width="37.46341" height="37.46341"/>
<key name="AD09" oref="outline2" /> </key>
<key name="AD10" oref="outline2" /> <key keycode="27" name="AD04" oref="outline2">
<bounds x="185.7560" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="28" name="AD05" oref="outline2">
<bounds x="226.3414" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="29" name="AD06" oref="outline2">
<bounds x="266.9268" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="30" name="AD07" oref="outline2">
<bounds x="307.5121" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="31" name="AD08" oref="outline2">
<bounds x="348.0975" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="32" name="AD09" oref="outline2">
<bounds x="388.6829" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="33" name="AD10" oref="outline2">
<bounds x="429.2682" y="42.14634" width="37.46341" height="37.46341"/>
</key>
</row> </row>
</section> </section>
<section angle="0"> <section angle="0">
<bounds x="0" y="0" width="608.7804" height="201.3658"/>
<row orientation="1"> <row orientation="1">
<key name="AC01" oref="outline2" /> <key keycode="38" name="AC01" oref="outline2">
<key name="AC02" oref="outline2" /> <bounds x="76.48780" y="82.73170" width="37.46341" height="37.46341"/>
<key name="AC03" oref="outline2" /> </key>
<key name="AC04" oref="outline2" /> <key keycode="39" name="AC02" oref="outline2">
<key name="AC05" oref="outline2" /> <bounds x="115.5121" y="82.73170" width="37.46341" height="37.46341"/>
<key name="AC06" oref="outline2" /> </key>
<key name="AC07" oref="outline2" /> <key keycode="40" name="AC03" oref="outline2">
<key name="AC08" oref="outline2" /> <bounds x="156.0975" y="82.73170" width="37.46341" height="37.46341"/>
<key name="AC09" oref="outline2" /> </key>
<key keycode="41" name="AC04" oref="outline2">
<bounds x="196.6829" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="42" name="AC05" oref="outline2">
<bounds x="237.2682" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="43" name="AC06" oref="outline2">
<bounds x="277.8536" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="44" name="AC07" oref="outline2">
<bounds x="318.4390" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="45" name="AC08" oref="outline2">
<bounds x="359.0243" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="46" name="AC09" oref="outline2">
<bounds x="399.6097" y="82.73170" width="37.46341" height="37.46341"/>
</key>
</row> </row>
</section> </section>
<section angle="0"> <section angle="0">
<bounds x="0" y="0" width="608.7804" height="201.3658"/>
<row orientation="1"> <row orientation="1">
<key name="LFSH" oref="altline" /> <key keycode="50" name="LFSH" oref="altline">
<key name="AB01" oref="outline2" /> <bounds x="3.121951" y="121.7560" width="88.97561" height="37.46341"/>
<key name="AB02" oref="outline2" /> </key>
<key name="AB03" oref="outline2" /> <key keycode="52" name="AB01" oref="outline2">
<key name="AB04" oref="outline2" /> <bounds x="95.21951" y="121.7560" width="37.46341" height="37.46341"/>
<key name="AB05" oref="outline2" /> </key>
<key name="AB06" oref="outline2" /> <key keycode="53" name="AB02" oref="outline2">
<key name="AB07" oref="outline2" /> <bounds x="135.8048" y="121.7560" width="37.46341" height="37.46341"/>
<key name="BKSP" oref="altline" /> </key>
<key keycode="54" name="AB03" oref="outline2">
<bounds x="176.3902" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="55" name="AB04" oref="outline2">
<bounds x="215.4146" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="56" name="AB05" oref="outline2">
<bounds x="256.0000" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="57" name="AB06" oref="outline2">
<bounds x="296.5853" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="58" name="AB07" oref="outline2">
<bounds x="337.1707" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="22" name="BKSP" oref="altline">
<bounds x="529.1707" y="1.560976" width="79.60975" height="37.46341"/>
</key>
</row> </row>
</section> </section>
<section angle="0"> <section angle="0">
<bounds x="0" y="0" width="608.7804" height="201.3658"/>
<row orientation="1"> <row orientation="1">
<key name="ABC123" oref="altline" /> <key keycode="66" name="ALTGR" oref="altline">
<key name="I150" oref="altline" /> <bounds x="62.43902" y="162.3414" width="48.39024" height="37.46341"/>
<key name="SPCE" oref="spaceline" /> </key>
<key name="AB08" oref="outline2" /> <key keycode="150" name="I150" oref="altline">
<key name="RTRN" oref="outline7" /> <bounds x="113.9512" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="65" name="SPCE" oref="spaceline">
<bounds x="165.4634" y="162.3414" width="217.5853" height="37.46341"/>
</key>
<key keycode="60" name="AB09" oref="outline2">
<bounds x="418.3414" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="36" name="RTRN" oref="outline7">
<bounds x="519.8048" y="82.73170" width="88.97561" height="37.46341"/>
</key>
</row> </row>
</section> </section>
<outline id="outline2" corner-radius="1.000000"> <outline id="outline2" corner-radius="1.000000">

View File

@ -1,180 +1,330 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<symbols version="0.90"> <symbols version="0.90">
<key name="AD01"> <key keycode="9" name="ESC">
<keysym keyval="65307">Escape</keysym>
</key>
<key keycode="67" name="FK01">
<keysym keyval="65470">F1</keysym>
</key>
<key keycode="68" name="FK02">
<keysym keyval="65471">F2</keysym>
</key>
<key keycode="69" name="FK03">
<keysym keyval="65472">F3</keysym>
</key>
<key keycode="70" name="FK04">
<keysym keyval="65473">F4</keysym>
</key>
<key keycode="71" name="FK05">
<keysym keyval="65474">F5</keysym>
</key>
<key keycode="72" name="FK06">
<keysym keyval="65475">F6</keysym>
</key>
<key keycode="73" name="FK07">
<keysym keyval="65476">F7</keysym>
</key>
<key keycode="74" name="FK08">
<keysym keyval="65477">F8</keysym>
</key>
<key keycode="75" name="FK09">
<keysym keyval="65478">F9</keysym>
</key>
<key keycode="76" name="FK10">
<keysym keyval="65479">F10</keysym>
</key>
<key keycode="95" name="FK11">
<keysym keyval="65480">F11</keysym>
</key>
<key keycode="96" name="FK12">
<keysym keyval="65481">F12</keysym>
</key>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<keysym keyval="41">parenright</keysym>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<keysym keyval="95">underscore</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="22" name="BKSP">
<keysym keyval="65288" icon="edit-clear-symbolic">backspace</keysym>
</key>
<key keycode="23" name="TAB">
<keysym keyval="65289">Tab</keysym>
<keysym keyval="65056">ISO_Left_Tab</keysym>
</key>
<key keycode="24" name="AD01">
<keysym keyval="113">q</keysym> <keysym keyval="113">q</keysym>
<keysym keyval="81">Q</keysym> <keysym keyval="81">Q</keysym>
<keysym keyval="49">1</keysym> <keysym keyval="49">1</keysym>
<keysym keyval="126">asciitilde</keysym> <keysym keyval="126">asciitilde</keysym>
</key> </key>
<key name="AD02"> <key keycode="25" name="AD02">
<keysym keyval="119">w</keysym> <keysym keyval="119">w</keysym>
<keysym keyval="87">W</keysym> <keysym keyval="87">W</keysym>
<keysym keyval="50">2</keysym> <keysym keyval="50">2</keysym>
<keysym keyval="96">quoteleft</keysym> <keysym keyval="96">quoteleft</keysym>
</key> </key>
<key name="AD03"> <key keycode="26" name="AD03">
<keysym keyval="101">e</keysym> <keysym keyval="101">e</keysym>
<keysym keyval="69">E</keysym> <keysym keyval="69">E</keysym>
<keysym keyval="51">3</keysym> <keysym keyval="51">3</keysym>
<keysym keyval="124">bar</keysym> <keysym keyval="124">bar</keysym>
</key> </key>
<key name="AD04"> <key keycode="27" name="AD04">
<keysym keyval="114">r</keysym> <keysym keyval="114">r</keysym>
<keysym keyval="82">R</keysym> <keysym keyval="82">R</keysym>
<keysym keyval="52">4</keysym> <keysym keyval="52">4</keysym>
<keysym keyval="183">middledot</keysym> <keysym keyval="183">middledot</keysym>
</key> </key>
<key name="AD05"> <key keycode="28" name="AD05">
<keysym keyval="116">t</keysym> <keysym keyval="116">t</keysym>
<keysym keyval="84">T</keysym> <keysym keyval="84">T</keysym>
<keysym keyval="53">5</keysym> <keysym keyval="53">5</keysym>
</key> </key>
<key name="AD06"> <key keycode="29" name="AD06">
<keysym keyval="121">y</keysym> <keysym keyval="121">y</keysym>
<keysym keyval="89">Y</keysym> <keysym keyval="89">Y</keysym>
<keysym keyval="54">6</keysym> <keysym keyval="54">6</keysym>
</key> </key>
<key name="AD07"> <key keycode="30" name="AD07">
<keysym keyval="117">u</keysym> <keysym keyval="117">u</keysym>
<keysym keyval="85">U</keysym> <keysym keyval="85">U</keysym>
<keysym keyval="55">7</keysym> <keysym keyval="55">7</keysym>
</key> </key>
<key name="AD08"> <key keycode="31" name="AD08">
<keysym keyval="105">i</keysym> <keysym keyval="105">i</keysym>
<keysym keyval="73">I</keysym> <keysym keyval="73">I</keysym>
<keysym keyval="56">8</keysym> <keysym keyval="56">8</keysym>
</key> </key>
<key name="AD09"> <key keycode="32" name="AD09">
<keysym keyval="111">o</keysym> <keysym keyval="111">o</keysym>
<keysym keyval="79">O</keysym> <keysym keyval="79">O</keysym>
<keysym keyval="57">9</keysym> <keysym keyval="57">9</keysym>
</key> </key>
<key name="AD10"> <key keycode="33" name="AD10">
<keysym keyval="112">p</keysym> <keysym keyval="112">p</keysym>
<keysym keyval="80">P</keysym> <keysym keyval="80">P</keysym>
<keysym keyval="48">0</keysym> <keysym keyval="48">0</keysym>
</key> </key>
<key name="AC01"> <key keycode="34" name="AD11">
<keysym keyval="91">bracketleft</keysym>
<keysym keyval="123">braceleft</keysym>
</key>
<key keycode="35" name="AD12">
<keysym keyval="93">bracketright</keysym>
<keysym keyval="125">braceright</keysym>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="66" name="ALTGR">
<keysym keyval="65027">ISO_Level3_Shift</keysym>
<keysym keyval="65027">ISO_Level3_Shift</keysym>
<keysym keyval="65027" label="ABC">ISO_Level3_Shift</keysym>
<keysym keyval="65027" label="ABC">ISO_Level3_Shift</keysym>
</key>
<key keycode="38" name="AC01">
<keysym keyval="97">a</keysym> <keysym keyval="97">a</keysym>
<keysym keyval="65">A</keysym> <keysym keyval="65">A</keysym>
<keysym keyval="64">at</keysym> <keysym keyval="64">at</keysym>
<keysym keyval="169">copyright</keysym> <keysym keyval="169">copyright</keysym>
</key> </key>
<key name="AC02"> <key keycode="39" name="AC02">
<keysym keyval="115">s</keysym> <keysym keyval="115">s</keysym>
<keysym keyval="83">S</keysym> <keysym keyval="83">S</keysym>
<keysym keyval="35">numbersign</keysym> <keysym keyval="35">numbersign</keysym>
<keysym keyval="174">registeredtrademark</keysym> <keysym keyval="174">registeredtrademark</keysym>
</key> </key>
<key name="AC03"> <key keycode="40" name="AC03">
<keysym keyval="100">d</keysym> <keysym keyval="100">d</keysym>
<keysym keyval="68">D</keysym> <keysym keyval="68">D</keysym>
<keysym keyval="36">dollar</keysym> <keysym keyval="36">dollar</keysym>
<keysym keyval="163">poundsign</keysym> <keysym keyval="163">poundsign</keysym>
</key> </key>
<key name="AC04"> <key keycode="41" name="AC04">
<keysym keyval="102">f</keysym> <keysym keyval="102">f</keysym>
<keysym keyval="70">F</keysym> <keysym keyval="70">F</keysym>
<keysym keyval="37">percent</keysym> <keysym keyval="37">percent</keysym>
<text></text> <text></text>
</key> </key>
<key name="AC05"> <key keycode="42" name="AC05">
<keysym keyval="103">g</keysym> <keysym keyval="103">g</keysym>
<keysym keyval="71">G</keysym> <keysym keyval="71">G</keysym>
<keysym keyval="38">ampersand</keysym> <keysym keyval="38">ampersand</keysym>
<keysym keyval="165">yensign</keysym> <keysym keyval="165">yensign</keysym>
</key> </key>
<key name="AC06"> <key keycode="43" name="AC06">
<keysym keyval="104">h</keysym> <keysym keyval="104">h</keysym>
<keysym keyval="72">H</keysym> <keysym keyval="72">H</keysym>
<keysym keyval="45">minus</keysym> <keysym keyval="45">minus</keysym>
<keysym keyval="94">asciicircum</keysym> <keysym keyval="94">asciicircum</keysym>
</key> </key>
<key name="AC07"> <key keycode="44" name="AC07">
<keysym keyval="106">j</keysym> <keysym keyval="106">j</keysym>
<keysym keyval="74">J</keysym> <keysym keyval="74">J</keysym>
<keysym keyval="43">plus</keysym> <keysym keyval="43">plus</keysym>
<keysym keyval="176">degreesign</keysym> <keysym keyval="176">degreesign</keysym>
</key> </key>
<key name="AC08"> <key keycode="45" name="AC08">
<keysym keyval="107">k</keysym> <keysym keyval="107">k</keysym>
<keysym keyval="75">K</keysym> <keysym keyval="75">K</keysym>
<keysym keyval="40">parenleft</keysym> <keysym keyval="40">parenleft</keysym>
<keysym keyval="123">braceleft</keysym> <keysym keyval="123">braceleft</keysym>
</key> </key>
<key name="AC09"> <key keycode="46" name="AC09">
<keysym keyval="108">l</keysym> <keysym keyval="108">l</keysym>
<keysym keyval="76">L</keysym> <keysym keyval="76">L</keysym>
<keysym keyval="41">parenright</keysym> <keysym keyval="41">parenright</keysym>
<keysym keyval="125">braceright</keysym> <keysym keyval="125">braceright</keysym>
</key> </key>
<key name="RTRN"> <key keycode="47" name="AC10">
<keysym keyval="65293" icon="key-enter">Return</keysym> <keysym keyval="59">semicolon</keysym>
<keysym keyval="58">colon</keysym>
</key> </key>
<key name="LFSH"> <key keycode="48" name="AC11">
<keysym keyval="65505" icon="key-shift">Shift_L</keysym> <keysym keyval="39">quoteright</keysym>
<keysym keyval="65505" icon="key-shift">Shift_L</keysym> <keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="36" name="RTRN">
<keysym keyval="65293">Return</keysym>
</key>
<key keycode="50" name="LFSH">
<keysym keyval="65505">Shift_L</keysym>
<keysym keyval="65505">Shift_L</keysym>
<keysym keyval="65505" label="=/+">Shift_L</keysym> <keysym keyval="65505" label="=/+">Shift_L</keysym>
<keysym keyval="65505" label="123">Shift_L</keysym> <keysym keyval="65505" label="123">Shift_L</keysym>
</key> </key>
<key name="AB01"> <key keycode="52" name="AB01">
<keysym keyval="122">z</keysym> <keysym keyval="122">z</keysym>
<keysym keyval="90">Z</keysym> <keysym keyval="90">Z</keysym>
<keysym keyval="44">comma</keysym> <keysym keyval="44">comma</keysym>
<keysym keyval="92">backslash</keysym> <keysym keyval="92">backslash</keysym>
</key> </key>
<key name="AB02"> <key keycode="53" name="AB02">
<keysym keyval="120">x</keysym> <keysym keyval="120">x</keysym>
<keysym keyval="88">X</keysym> <keysym keyval="88">X</keysym>
<keysym keyval="34">quotedbl</keysym> <keysym keyval="34">quotedbl</keysym>
<keysym keyval="47">slash</keysym> <keysym keyval="47">slash</keysym>
</key> </key>
<key name="AB03"> <key keycode="54" name="AB03">
<keysym keyval="99">c</keysym> <keysym keyval="99">c</keysym>
<keysym keyval="67">C</keysym> <keysym keyval="67">C</keysym>
<keysym keyval="39">quoteright</keysym> <keysym keyval="39">quoteright</keysym>
<keysym keyval="60">less</keysym> <keysym keyval="60">less</keysym>
</key> </key>
<key name="AB04"> <key keycode="55" name="AB04">
<keysym keyval="118">v</keysym> <keysym keyval="118">v</keysym>
<keysym keyval="86">V</keysym> <keysym keyval="86">V</keysym>
<keysym keyval="58">colon</keysym> <keysym keyval="58">colon</keysym>
<keysym keyval="62">greater</keysym> <keysym keyval="62">greater</keysym>
</key> </key>
<key name="AB05"> <key keycode="56" name="AB05">
<keysym keyval="98">b</keysym> <keysym keyval="98">b</keysym>
<keysym keyval="66">B</keysym> <keysym keyval="66">B</keysym>
<keysym keyval="59">semicolon</keysym> <keysym keyval="59">semicolon</keysym>
<keysym keyval="61">equal</keysym> <keysym keyval="61">equal</keysym>
</key> </key>
<key name="AB06"> <key keycode="57" name="AB06">
<keysym keyval="110">n</keysym> <keysym keyval="110">n</keysym>
<keysym keyval="78">N</keysym> <keysym keyval="78">N</keysym>
<keysym keyval="33">exclam</keysym> <keysym keyval="33">exclam</keysym>
<keysym keyval="91">bracketleft</keysym> <keysym keyval="91">bracketleft</keysym>
</key> </key>
<key name="AB07"> <key keycode="58" name="AB07">
<keysym keyval="109">m</keysym> <keysym keyval="109">m</keysym>
<keysym keyval="77">M</keysym> <keysym keyval="77">M</keysym>
<keysym keyval="63">question</keysym> <keysym keyval="63">question</keysym>
<keysym keyval="93">bracketright</keysym> <keysym keyval="93">bracketright</keysym>
</key> </key>
<key name="AB08"> <key keycode="59" name="AB08">
<keysym keyval="44">comma</keysym>
<keysym keyval="60">less</keysym>
</key>
<key keycode="60" name="AB09">
<keysym keyval="46">period</keysym> <keysym keyval="46">period</keysym>
<keysym keyval="62">greater</keysym>
</key> </key>
<key name="ABC123"> <key keycode="61" name="AB10">
<symbol label="123">show-numbers</symbol> <keysym keyval="47">slash</keysym>
<symbol label="123">show-numbers</symbol> <keysym keyval="63">question</keysym>
<symbol label="ABC">show-letters</symbol>
<symbol label="ABC">show-letters</symbol>
</key> </key>
<key name="I150"> <key keycode="62" name="RTSH">
<symbol label="☺" icon="keyboard-mode-symbolic" tooltip="Setup">preferences</symbol> <keysym keyval="65506">Shift_R</keysym>
</key> </key>
<key name="SPCE"> <key keycode="149" name="I149">
<symbol label="⌨" icon="input-keyboard-symbolic" tooltip="Change keyboard">cycle-keyboard</symbol>
</key>
<key keycode="150" name="I150">
<symbol label="☺" icon="preferences-system-symbolic" tooltip="Setup">preferences</symbol>
</key>
<key keycode="37" name="LCTL">
<keysym keyval="65507">Control_L</keysym>
</key>
<key keycode="64" name="LALT">
<keysym keyval="65513">Alt_L</keysym>
<keysym keyval="65511">Meta_L</keysym>
</key>
<key keycode="65" name="SPCE">
<keysym keyval="32">space</keysym> <keysym keyval="32">space</keysym>
</key> </key>
<key name="BKSP"> <key keycode="113" name="LEFT">
<keysym keyval="65288" icon="edit-clear-symbolic">backspace</keysym> <keysym keyval="65361">Left</keysym>
</key>
<key keycode="111" name="UP">
<keysym keyval="65362">Up</keysym>
</key>
<key keycode="116" name="DOWN">
<keysym keyval="65364">Down</keysym>
</key>
<key keycode="114" name="RGHT">
<keysym keyval="65363">Right</keysym>
</key> </key>
</symbols> </symbols>

View File

@ -32,8 +32,5 @@
<file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/ug.xml</file> <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/ug.xml</file>
<file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/us.xml</file> <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/us.xml</file>
<file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/zh-bopomofo.xml</file> <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/zh-bopomofo.xml</file>
<file>icons/key-enter.svg</file>
<file>icons/key-shift.svg</file>
<file>icons/keyboard-mode-symbolic.svg</file>
</gresource> </gresource>
</gresources> </gresources>

View File

@ -549,12 +549,12 @@ render_pressed_key (GtkWidget *widget,
cairo_translate (cr, bounds.x, bounds.y); cairo_translate (cr, bounds.x, bounds.y);
eek_renderer_render_key (priv->renderer, cr, key, 1.0, TRUE); eek_renderer_render_key (priv->renderer, cr, key, 1.0, TRUE);
cairo_restore (cr); cairo_restore (cr);
/*
cairo_save (cr); cairo_save (cr);
cairo_translate (cr, large_bounds.x, large_bounds.y); cairo_translate (cr, large_bounds.x, large_bounds.y);
eek_renderer_render_key (priv->renderer, cr, key, 1.5, TRUE); eek_renderer_render_key (priv->renderer, cr, key, 1.5, TRUE);
cairo_restore (cr); cairo_restore (cr);
*/
gdk_window_end_draw_frame (window, context); gdk_window_end_draw_frame (window, context);
cairo_region_destroy (region); cairo_region_destroy (region);

View File

@ -60,20 +60,6 @@ eek_gtk_renderer_real_get_icon_surface (EekRenderer *self,
GError *error = NULL; GError *error = NULL;
cairo_surface_t *surface; cairo_surface_t *surface;
gchar *path = g_strconcat("/sm/puri/squeekboard/icons/", icon_name, ".svg", NULL);
pixbuf = gdk_pixbuf_new_from_resource_at_scale (path, size, size,
TRUE, &error);
if (pixbuf != NULL)
goto found;
else {
/* g_warning ("can't get icon pixbuf for %s: %s", path, error->message);*/
g_error_free (error);
error = NULL;
}
g_free(path);
pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
icon_name, icon_name,
size, size,
@ -87,7 +73,6 @@ eek_gtk_renderer_real_get_icon_surface (EekRenderer *self,
return NULL; return NULL;
} }
found:
surface = pixbuf_to_cairo_surface (pixbuf); surface = pixbuf_to_cairo_surface (pixbuf);
g_object_unref (pixbuf); g_object_unref (pixbuf);
return surface; return surface;

View File

@ -70,11 +70,11 @@ struct _EekKeyboardPrivate
EekLayout *layout; EekLayout *layout;
EekModifierBehavior modifier_behavior; EekModifierBehavior modifier_behavior;
EekModifierType modifiers; EekModifierType modifiers;
unsigned int old_level; EekModifierType old_level;
GList *pressed_keys; GList *pressed_keys;
GList *locked_keys; GList *locked_keys;
GArray *outline_array; GArray *outline_array;
GHashTable *names; GHashTable *keycodes;
/* modifiers dynamically assigned at run time */ /* modifiers dynamically assigned at run time */
EekModifierType num_lock_mask; EekModifierType num_lock_mask;
@ -129,9 +129,9 @@ section_child_added_cb (EekContainer *container,
EekElement *element, EekElement *element,
EekKeyboard *keyboard) EekKeyboard *keyboard)
{ {
const gchar *name = eek_element_get_name(element); guint keycode = eek_key_get_keycode (EEK_KEY(element));
g_hash_table_insert (keyboard->priv->names, g_hash_table_insert (keyboard->priv->keycodes,
(gpointer)name, GUINT_TO_POINTER(keycode),
element); element);
} }
@ -140,9 +140,9 @@ section_child_removed_cb (EekContainer *container,
EekElement *element, EekElement *element,
EekKeyboard *keyboard) EekKeyboard *keyboard)
{ {
const gchar *name = eek_element_get_name(element); guint keycode = eek_key_get_keycode (EEK_KEY(element));
g_hash_table_remove (keyboard->priv->names, g_hash_table_remove (keyboard->priv->keycodes,
name); GUINT_TO_POINTER(keycode));
} }
static EekSection * static EekSection *
@ -211,23 +211,13 @@ eek_keyboard_get_property (GObject *object,
} }
static void static void
set_level_from_modifiers (EekKeyboard *self, EekKey *key) set_level_from_modifiers (EekKeyboard *self)
{ {
EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self); EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
/* The levels are: 0 Letters, 1 Upper case letters, 2 Numbers, 3 Symbols */ /* The levels are: 0 Letters, 1 Upper case letters, 2 Numbers, 3 Symbols */
gint level = ((priv->modifiers & priv->alt_gr_mask) ? 2 : 0) |
/* Use the numbers/letters bit from the old level */ ((priv->modifiers & EEK_SHIFT_MASK) ? 1 : 0);
gint level = priv->old_level & 2;
/* Handle non-emitting keys */
if (key) {
const gchar *name = eek_element_get_name(EEK_ELEMENT(key));
if (g_strcmp0(name, "ABC123") == 0)
level ^= 2;
}
level |= ((priv->modifiers & EEK_SHIFT_MASK) ? 1 : 0);
switch (priv->old_level) { switch (priv->old_level) {
case VIEW_LETTERS_UPPER: case VIEW_LETTERS_UPPER:
@ -259,8 +249,6 @@ set_level_from_modifiers (EekKeyboard *self, EekKey *key)
if (level == VIEW_NUMBERS || level == VIEW_SYMBOLS) if (level == VIEW_NUMBERS || level == VIEW_SYMBOLS)
priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_LOCK; priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_LOCK;
else
priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_LATCH;
priv->old_level = level; priv->old_level = level;
eek_element_set_level (EEK_ELEMENT(self), level); eek_element_set_level (EEK_ELEMENT(self), level);
@ -318,7 +306,7 @@ void eek_keyboard_press_key(EekKeyboard *keyboard, EekKey *key, guint32 timestam
EekModifierType modifier = eek_symbol_get_modifier_mask (symbol); EekModifierType modifier = eek_symbol_get_modifier_mask (symbol);
if (priv->modifier_behavior == EEK_MODIFIER_BEHAVIOR_NONE) { if (priv->modifier_behavior == EEK_MODIFIER_BEHAVIOR_NONE) {
set_modifiers_with_key (keyboard, key, priv->modifiers | modifier); set_modifiers_with_key (keyboard, key, priv->modifiers | modifier);
set_level_from_modifiers (keyboard, key); set_level_from_modifiers (keyboard);
} }
// "Borrowed" from eek-context-service; doesn't influence the state but forwards the event // "Borrowed" from eek-context-service; doesn't influence the state but forwards the event
@ -367,7 +355,7 @@ void eek_keyboard_release_key( EekKeyboard *keyboard,
(priv->modifiers ^ modifier) & modifier); (priv->modifiers ^ modifier) & modifier);
break; break;
} }
set_level_from_modifiers (keyboard, key); set_level_from_modifiers (keyboard);
// "Borrowed" from eek-context-service; doesn't influence the state but forwards the event // "Borrowed" from eek-context-service; doesn't influence the state but forwards the event
@ -400,7 +388,7 @@ eek_keyboard_finalize (GObject *object)
g_list_free_full (priv->locked_keys, g_list_free_full (priv->locked_keys,
(GDestroyNotify) eek_modifier_key_free); (GDestroyNotify) eek_modifier_key_free);
g_hash_table_destroy (priv->names); g_hash_table_destroy (priv->keycodes);
for (i = 0; i < priv->outline_array->len; i++) { for (i = 0; i < priv->outline_array->len; i++) {
EekOutline *outline = &g_array_index (priv->outline_array, EekOutline *outline = &g_array_index (priv->outline_array,
@ -528,7 +516,7 @@ eek_keyboard_init (EekKeyboard *self)
self->priv = EEK_KEYBOARD_GET_PRIVATE(self); self->priv = EEK_KEYBOARD_GET_PRIVATE(self);
self->priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_NONE; self->priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_NONE;
self->priv->outline_array = g_array_new (FALSE, TRUE, sizeof (EekOutline)); self->priv->outline_array = g_array_new (FALSE, TRUE, sizeof (EekOutline));
self->priv->names = g_hash_table_new (g_str_hash, g_str_equal); self->priv->keycodes = g_hash_table_new (g_direct_hash, g_direct_equal);
eek_element_set_symbol_index (EEK_ELEMENT(self), 0, 0); eek_element_set_symbol_index (EEK_ELEMENT(self), 0, 0);
} }
@ -548,20 +536,20 @@ eek_keyboard_create_section (EekKeyboard *keyboard)
} }
/** /**
* eek_keyboard_find_key_by_name: * eek_keyboard_find_key_by_keycode:
* @keyboard: an #EekKeyboard * @keyboard: an #EekKeyboard
* @name: a key name * @keycode: a keycode
* *
* Find an #EekKey whose name is @name. * Find an #EekKey whose keycode is @keycode.
* Return value: (transfer none): #EekKey whose name is @name * Return value: (transfer none): #EekKey whose keycode is @keycode
*/ */
EekKey * EekKey *
eek_keyboard_find_key_by_name (EekKeyboard *keyboard, eek_keyboard_find_key_by_keycode (EekKeyboard *keyboard,
const gchar *name) guint keycode)
{ {
g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL); g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
return g_hash_table_lookup (keyboard->priv->names, return g_hash_table_lookup (keyboard->priv->keycodes,
name); GUINT_TO_POINTER(keycode));
} }
/** /**
@ -633,7 +621,7 @@ eek_keyboard_set_modifiers (EekKeyboard *keyboard,
{ {
g_return_if_fail (EEK_IS_KEYBOARD(keyboard)); g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
keyboard->priv->modifiers = modifiers; keyboard->priv->modifiers = modifiers;
set_level_from_modifiers (keyboard, NULL); set_level_from_modifiers (keyboard);
} }
/** /**

View File

@ -69,8 +69,8 @@ struct _EekKeyboard
/** /**
* EekKeyboardClass: * EekKeyboardClass:
* @create_section: virtual function for creating a section * @create_section: virtual function for creating a section
* @find_key_by_name: virtual function for finding a key in the * @find_key_by_keycode: virtual function for finding a key in the
* keyboard by name * keyboard by keycode
* @key_pressed: class handler for #EekKeyboard::key-pressed signal * @key_pressed: class handler for #EekKeyboard::key-pressed signal
* @key_released: class handler for #EekKeyboard::key-released signal * @key_released: class handler for #EekKeyboard::key-released signal
* @key_locked: class handler for #EekKeyboard::key-locked signal * @key_locked: class handler for #EekKeyboard::key-locked signal
@ -89,8 +89,8 @@ struct _EekKeyboardClass
/*< public >*/ /*< public >*/
EekSection *(* create_section) (EekKeyboard *self); EekSection *(* create_section) (EekKeyboard *self);
EekKey *(* find_key_by_name) (EekKeyboard *self, EekKey *(* find_key_by_keycode) (EekKeyboard *self,
const gchar *name); guint keycode);
/*< private >*/ /*< private >*/
/* obsolete members moved to EekElement */ /* obsolete members moved to EekElement */
@ -155,9 +155,9 @@ EekModifierType eek_keyboard_get_modifiers
EekSection *eek_keyboard_create_section EekSection *eek_keyboard_create_section
(EekKeyboard *keyboard); (EekKeyboard *keyboard);
EekKey *eek_keyboard_find_key_by_name EekKey *eek_keyboard_find_key_by_keycode
(EekKeyboard *keyboard, (EekKeyboard *keyboard,
const gchar *name); guint keycode);
guint eek_keyboard_add_outline guint eek_keyboard_add_outline
(EekKeyboard *keyboard, (EekKeyboard *keyboard,

View File

@ -162,14 +162,9 @@ create_keyboard_surface (EekRenderer *renderer)
&background); &background);
eek_element_get_bounds (EEK_ELEMENT(priv->keyboard), &bounds); eek_element_get_bounds (EEK_ELEMENT(priv->keyboard), &bounds);
keyboard_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
/* Create a surface that encompasses the dimensions of the keyboard as well ceil(bounds.width * priv->scale),
as the margin around the edge. */ ceil(bounds.height * priv->scale));
keyboard_surface = cairo_image_surface_create (
CAIRO_FORMAT_ARGB32,
ceil(((bounds.x * 2) + bounds.width) * priv->scale),
ceil(((bounds.y * 2) + bounds.height) * priv->scale));
data.cr = cairo_create (keyboard_surface); data.cr = cairo_create (keyboard_surface);
data.renderer = renderer; data.renderer = renderer;
@ -497,7 +492,7 @@ render_key (EekRenderer *self,
if (!symbol) if (!symbol)
return; return;
#define SCALE 0.4 #define SCALE 0.8
if (eek_symbol_get_icon_name (symbol)) { if (eek_symbol_get_icon_name (symbol)) {
cairo_surface_t *icon_surface = cairo_surface_t *icon_surface =

View File

@ -124,8 +124,7 @@ on_unlocked (EekKey *key,
static EekKey * static EekKey *
eek_section_real_create_key (EekSection *self, eek_section_real_create_key (EekSection *self,
const gchar *name, guint keycode,
gint keycode,
gint column_index, gint column_index,
gint row_index) gint row_index)
{ {
@ -143,7 +142,6 @@ eek_section_real_create_key (EekSection *self,
row->num_columns = column_index + 1; row->num_columns = column_index + 1;
key = g_object_new (EEK_TYPE_KEY, key = g_object_new (EEK_TYPE_KEY,
"name", name,
"keycode", keycode, "keycode", keycode,
"column", column_index, "column", column_index,
"row", row_index, "row", row_index,
@ -465,7 +463,6 @@ eek_section_get_row (EekSection *section,
/** /**
* eek_section_create_key: * eek_section_create_key:
* @section: an #EekSection * @section: an #EekSection
* @name: a name
* @keycode: a keycode * @keycode: a keycode
* @column: the column index of the key * @column: the column index of the key
* @row: the row index of the key * @row: the row index of the key
@ -476,14 +473,12 @@ eek_section_get_row (EekSection *section,
*/ */
EekKey * EekKey *
eek_section_create_key (EekSection *section, eek_section_create_key (EekSection *section,
const gchar *name, guint keycode,
gint keycode,
gint column, gint column,
gint row) gint row)
{ {
g_return_val_if_fail (EEK_IS_SECTION(section), NULL); g_return_val_if_fail (EEK_IS_SECTION(section), NULL);
return EEK_SECTION_GET_CLASS(section)->create_key (section, return EEK_SECTION_GET_CLASS(section)->create_key (section,
name,
keycode, keycode,
column, column,
row); row);

View File

@ -62,8 +62,7 @@ struct _EekSectionClass
EekOrientation *orientation); EekOrientation *orientation);
EekKey *(* create_key) (EekSection *self, EekKey *(* create_key) (EekSection *self,
const gchar *name, guint keycode,
gint keycode,
gint row, gint row,
gint column); gint column);
@ -100,8 +99,7 @@ void eek_section_get_row (EekSection *section,
EekOrientation *orientation); EekOrientation *orientation);
EekKey *eek_section_create_key (EekSection *section, EekKey *eek_section_create_key (EekSection *section,
const gchar *name, guint keycode,
gint keycode,
gint column, gint column,
gint row); gint row);

View File

@ -249,7 +249,6 @@ struct _GeometryParseData {
gchar *name; gchar *name;
EekOutline outline; EekOutline outline;
gchar *oref; gchar *oref;
gint keycode;
GHashTable *key_oref_hash; GHashTable *key_oref_hash;
GHashTable *oref_outline_hash; GHashTable *oref_outline_hash;
@ -272,7 +271,6 @@ geometry_parse_data_new (EekKeyboard *keyboard)
g_str_equal, g_str_equal,
g_free, g_free,
(GDestroyNotify)eek_outline_free); (GDestroyNotify)eek_outline_free);
data->keycode = 1;
return data; return data;
} }
@ -364,6 +362,8 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
if (g_strcmp0 (data->element_stack->data, "geometry") == 0) if (g_strcmp0 (data->element_stack->data, "geometry") == 0)
eek_element_set_bounds (EEK_ELEMENT(data->keyboard), &bounds); eek_element_set_bounds (EEK_ELEMENT(data->keyboard), &bounds);
else if (g_strcmp0 (data->element_stack->data, "section") == 0)
eek_element_set_bounds (EEK_ELEMENT(data->section), &bounds);
goto out; goto out;
} }
@ -398,23 +398,29 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
} }
if (g_strcmp0 (element_name, "key") == 0) { if (g_strcmp0 (element_name, "key") == 0) {
guint keycode;
attribute = get_attribute (attribute_names, attribute_values, attribute = get_attribute (attribute_names, attribute_values,
"name"); "keycode");
if (attribute == NULL) { if (attribute == NULL) {
g_set_error (error, g_set_error (error,
G_MARKUP_ERROR, G_MARKUP_ERROR,
G_MARKUP_ERROR_MISSING_ATTRIBUTE, G_MARKUP_ERROR_MISSING_ATTRIBUTE,
"no \"name\" attribute for \"key\""); "no \"keycode\" attribute for \"key\"");
return; return;
} }
keycode = strtoul (attribute, NULL, 10);
data->key = eek_section_create_key (data->section, data->key = eek_section_create_key (data->section,
g_strdup (attribute), keycode,
data->keycode++,
data->num_columns, data->num_columns,
data->num_rows - 1); data->num_rows - 1);
attribute = get_attribute (attribute_names, attribute_values,
"name");
if (attribute != NULL)
eek_element_set_name (EEK_ELEMENT(data->key), attribute);
attribute = get_attribute (attribute_names, attribute_values, attribute = get_attribute (attribute_names, attribute_values,
"oref"); "oref");
if (attribute == NULL) { if (attribute == NULL) {
@ -618,25 +624,28 @@ symbols_start_element_callback (GMarkupParseContext *pcontext,
return; return;
if (g_strcmp0 (element_name, "key") == 0) { if (g_strcmp0 (element_name, "key") == 0) {
guint keycode;
attribute = get_attribute (attribute_names, attribute_values, attribute = get_attribute (attribute_names, attribute_values,
"name"); "keycode");
if (attribute == NULL) { if (attribute == NULL) {
g_set_error (error, g_set_error (error,
G_MARKUP_ERROR, G_MARKUP_ERROR,
G_MARKUP_ERROR_MISSING_ATTRIBUTE, G_MARKUP_ERROR_MISSING_ATTRIBUTE,
"no \"name\" attribute for \"key\""); "no \"keycode\" attribute for \"key\"");
return; return;
} }
keycode = strtoul (attribute, NULL, 10);
data->key = eek_keyboard_find_key_by_name (data->keyboard, data->key = eek_keyboard_find_key_by_keycode (data->keyboard,
attribute); keycode);
if (data->key == NULL) { /*if (data->key == NULL) {
g_set_error (error, g_set_error (error,
G_MARKUP_ERROR, G_MARKUP_ERROR,
G_MARKUP_ERROR_INVALID_CONTENT, G_MARKUP_ERROR_INVALID_CONTENT,
"no such key %s", attribute); "no such keycode %u", keycode);
} return;
}*/
attribute = get_attribute (attribute_names, attribute_values, attribute = get_attribute (attribute_names, attribute_values,
"groups"); "groups");

View File

@ -285,7 +285,7 @@ make_window (ServerContextService *context)
PHOSH_TYPE_LAYER_SURFACE, PHOSH_TYPE_LAYER_SURFACE,
"layer-shell", squeek_wayland->layer_shell, "layer-shell", squeek_wayland->layer_shell,
"wl-output", g_ptr_array_index(squeek_wayland->outputs, 0), // TODO: select output as needed, "wl-output", g_ptr_array_index(squeek_wayland->outputs, 0), // TODO: select output as needed,
"height", 210, "height", 200,
"anchor", ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM "anchor", ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM
| ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT
| ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT, | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT,