modified for flippable PCB (as of 2012-07-15)

partial-rewrite
Ben Blazak 2012-07-22 19:30:20 -07:00
parent 9e7af882a4
commit 3328f02a62
9 changed files with 482 additions and 322 deletions

View File

@ -26,15 +26,15 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1.4142136"
inkscape:cx="464.65225"
inkscape:cy="203.44926"
inkscape:cx="455.81585"
inkscape:cy="210.83562"
inkscape:document-units="px"
inkscape:current-layer="layer7"
showgrid="true"
inkscape:snap-global="false"
inkscape:snap-bbox="false"
inkscape:snap-bbox="true"
inkscape:snap-nodes="false"
inkscape:bbox-nodes="false"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="false"
inkscape:bbox-paths="false"
inkscape:window-width="1920"
@ -42,15 +42,17 @@
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:snap-bbox-midpoints="false"
inkscape:snap-bbox-midpoints="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:object-nodes="true"
inkscape:object-nodes="false"
fit-margin-top="15"
fit-margin-left="15"
fit-margin-bottom="15"
fit-margin-right="15"
inkscape:snap-page="true">
inkscape:snap-page="true"
inkscape:snap-object-midpoints="false"
inkscape:snap-center="true">
<inkscape:grid
id="grid3799"
type="xygrid"
@ -719,6 +721,146 @@
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker11070-18"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path11072-9"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker11070-95"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path11072-70"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="DotM-10-7-8"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4023-3-6-7"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker3526"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path3528"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker11070-72"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path11072-54"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker11070-51"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path11072-99"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker11070-99"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path11072-09"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker3618"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path3620"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="DotM-10-7-82"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4023-3-6-5"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="marker3665"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path3667"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
transform="matrix(0.4,0,0,0.4,2.96,0.4)" />
</marker>
</defs>
<metadata
id="metadata7">
@ -1696,7 +1838,7 @@
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000077;stroke-width:0.95463163;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM);marker-end:none;display:inline"
d="m 381.70056,355.17608 0.005,-8.45211 -6.22824,-2.5329 12.3705,-2.8149 -12.29462,-2.60895 12.14284,-2.74624 -11.99105,-2.81491 11.91516,-2.81491 -5.91963,-2.60894 0,-8.37607 0,-208.83524"
d="m 381.70056,356.94385 0.005,-10.21988 -6.22824,-2.5329 12.3705,-2.8149 -12.29462,-2.60895 12.14284,-2.74624 -11.99105,-2.81491 11.91516,-2.81491 -5.91963,-2.60894 0,-8.37607 0,-208.83524"
id="path6326-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccc" />
@ -1768,7 +1910,7 @@
</g>
<path
style="fill:none;stroke:#000077;stroke-width:0.95463163;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM);marker-end:none;display:inline"
d="m 403.37542,355.17608 0.005,-8.45211 -6.22824,-2.5329 12.3705,-2.8149 -12.29462,-2.60895 12.14284,-2.74624 -11.99105,-2.81491 11.91516,-2.81491 -5.91963,-2.60894 0,-8.37607 0,-208.83524"
d="m 403.37542,356.76707 0.005,-10.0431 -6.22824,-2.5329 12.3705,-2.8149 -12.29462,-2.60895 12.14284,-2.74624 -11.99105,-2.81491 11.91516,-2.81491 -5.91963,-2.60894 0,-8.37607 0,-208.83524"
id="path6326-2-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccc" />
@ -1840,7 +1982,7 @@
</g>
<path
style="fill:none;stroke:#000077;stroke-width:0.95463163;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM);marker-end:none;display:inline"
d="m 423.37542,355.17608 0.005,-8.45211 -6.22824,-2.5329 12.3705,-2.8149 -12.29462,-2.60895 12.14284,-2.74624 -11.99105,-2.81491 11.91516,-2.81491 -5.91963,-2.60894 0,-8.37607 0,-208.83524"
d="m 423.37542,356.94385 0.005,-10.21988 -6.22824,-2.5329 12.3705,-2.8149 -12.29462,-2.60895 12.14284,-2.74624 -11.99105,-2.81491 11.91516,-2.81491 -5.91963,-2.60894 0,-8.37607 0,-208.83524"
id="path6326-2-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccc" />
@ -1924,22 +2066,22 @@
sodipodi:nodetypes="ccccccccccccc" />
<path
style="fill:none;stroke:#007700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-10)"
d="M 255,127.36218 C 297.1005,68.254966 399.98689,51.202007 403.41299,89.442314 l 0.023,4.815736"
d="M 255,127.36218 C 297.1005,68.254966 382.48689,65.827007 382.16299,88.692314 l -0.102,5.940736"
id="path7504"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#007700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-10);display:inline"
d="M 234.96647,127.29296 C 305.92363,44.536037 388.15055,41.329164 381.99597,85.946323 l 0.023,8.346065"
d="M 234.96647,127.29296 C 297.17363,43.911037 403.52555,52.704164 403.49597,88.696323 l 0.023,5.721065"
id="path7504-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#007700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-10-7)"
d="m 195,247.36218 c -4.32571,23.55176 70.95424,57.80762 144.21458,54.72312 9.45484,-5.50003 -1.67061,-20.3897 5.26135,-28.19694 38.00964,-42.80905 6.84799,-181.553227 13.02147,-196.245847 6.17348,-14.69262 -2.21854,-13.634877 3.33961,-21.779094 5.55815,-8.144217 62.33333,-4.615397 62.61183,28.039681 l -0.0815,10.708503"
d="m 195,247.36218 c -4.32571,23.55176 70.95424,57.80762 144.21458,54.72312 9.45484,-5.50003 -1.20117,-19.99688 5.26135,-28.19694 25.0471,-31.78137 -5.00774,-173.86807 10.07621,-195.922273 5.69158,-6.64719 1.79635,-9.549128 3.28486,-15.352668 0.97604,-14.654625 65.33333,-6.490397 65.61183,26.164681 l -0.0815,5.833503"
id="path7758"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccszzcc" />
sodipodi:nodetypes="ccscccc" />
<path
style="fill:none;stroke:#000077;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-10-7);marker-end:url(#DotM-10-7)"
d="m 95.105862,247.67467 c -2.592497,38.06584 1.233202,73.99227 7.071068,109.24799"
@ -2079,32 +2221,32 @@
y="176.07817"
id="tspan9630">PWM</tspan></text>
<text
inkscape:transform-center-y="-8.1837146"
inkscape:transform-center-x="5.960441"
transform="matrix(0.7776191,-0.62873566,0.62873566,0.7776191,0,0)"
inkscape:transform-center-y="-8.3061223"
inkscape:transform-center-x="5.7886394"
transform="matrix(0.79055013,-0.61239733,0.61239733,0.79055013,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff7700;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="135.67398"
y="246.92535"
x="140.45497"
y="243.17465"
id="text9938"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="135.67398"
y="246.92535"
x="140.45497"
y="243.17465"
id="tspan9636">PWM</tspan></text>
<text
inkscape:transform-center-y="-3.7250803"
inkscape:transform-center-x="-6.0517844"
transform="matrix(0.89909256,-0.43775858,0.43775858,0.89909256,0,0)"
inkscape:transform-center-y="-3.6387754"
inkscape:transform-center-x="-6.1040665"
transform="matrix(0.90521688,-0.42494988,0.42494988,0.90521688,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff7700;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="227.65367"
y="215.32523"
x="221.5656"
y="212.97839"
id="text9941"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="227.65367"
y="215.32523"
x="221.5656"
y="212.97839"
id="tspan9632">PWM</tspan></text>
<text
xml:space="preserve"
@ -2172,7 +2314,7 @@
sodipodi:role="line"
x="-103.45203"
y="119.83008"
id="tspan12234">row 0</tspan></text>
id="tspan12234">row 5</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2184,7 +2326,7 @@
sodipodi:role="line"
x="-103.45203"
y="139.83008"
id="tspan12238">row 1</tspan></text>
id="tspan12238">row 4</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2196,7 +2338,7 @@
sodipodi:role="line"
x="-103.45203"
y="159.83008"
id="tspan12240">row 2</tspan></text>
id="tspan12240">row 3</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2208,7 +2350,7 @@
sodipodi:role="line"
x="-103.45203"
y="179.83008"
id="tspan12242">row 3</tspan></text>
id="tspan12242">row 2</tspan></text>
<text
inkscape:transform-center-y="10.541016"
inkscape:transform-center-x="-20.767578"
@ -2222,7 +2364,7 @@
sodipodi:role="line"
x="-103.45203"
y="199.83008"
id="tspan12244">row 4</tspan></text>
id="tspan12244">row 1</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2234,19 +2376,7 @@
sodipodi:role="line"
x="-103.45203"
y="219.83008"
id="tspan12248">row 5</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;font-family:Sans"
x="-63.024292"
y="279.83008"
id="text12501"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-63.024292"
y="279.83008"
id="tspan12252">col 0</tspan></text>
id="tspan12248">row 0</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2258,19 +2388,7 @@
sodipodi:role="line"
x="-339.98328"
y="299.83008"
id="tspan12254">col 1</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;font-family:Sans"
x="-339.88953"
y="319.83008"
id="text12507"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-339.88953"
y="319.83008"
id="tspan12256">col 2</tspan></text>
id="tspan12254">col 6</tspan></text>
<text
inkscape:transform-center-y="-4.6435547"
transform="matrix(0,-1,1,0,0,0)"
@ -2283,7 +2401,7 @@
sodipodi:role="line"
x="-340.12976"
y="259.83008"
id="tspan12258">col 3</tspan></text>
id="tspan12258">col 4</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2295,19 +2413,7 @@
sodipodi:role="line"
x="-340.41687"
y="279.83008"
id="tspan12260">col 4</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;font-family:Sans"
x="-63.024292"
y="299.83008"
id="text12516"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-63.024292"
y="299.83008"
id="tspan12262">col 5</tspan></text>
id="tspan12260">col 5</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -2319,7 +2425,7 @@
sodipodi:role="line"
x="-300.33484"
y="119.83008"
id="tspan12264">col 6</tspan></text>
id="tspan12264">col 0</tspan></text>
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 135,127.11218 0,-20.5"
@ -2372,170 +2478,158 @@
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-280.29382"
x="-335.29382"
y="539.83008"
id="text12519-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-280.29382"
x="-335.29382"
y="539.83008"
id="tspan12264-1">col 0</tspan></text>
id="tspan12264-1">row B</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-279.98328"
x="-334.98328"
y="559.83008"
id="text13816"
sodipodi:linespacing="125%"><tspan
id="tspan13492"
sodipodi:role="line"
x="-279.98328"
y="559.83008">col 1</tspan></text>
x="-334.98328"
y="559.83008">row A</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-279.88953"
x="-334.88953"
y="579.83008"
id="text13819"
sodipodi:linespacing="125%"><tspan
id="tspan13494"
sodipodi:role="line"
x="-279.88953"
y="579.83008">col 2</tspan></text>
x="-334.88953"
y="579.83008">row 9</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-280.12976"
x="-335.12976"
y="599.83008"
id="text13822"
sodipodi:linespacing="125%"><tspan
id="tspan13496"
sodipodi:role="line"
x="-280.12976"
y="599.83008">col 3</tspan></text>
x="-335.12976"
y="599.83008">row 8</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-280.41687"
x="-335.41687"
y="619.83008"
id="text13825"
sodipodi:linespacing="125%"><tspan
id="tspan13498"
sodipodi:role="line"
x="-280.41687"
y="619.83008">col 4</tspan></text>
x="-335.41687"
y="619.83008">row 7</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-280.04187"
x="-335.04187"
y="639.83008"
id="text13828"
sodipodi:linespacing="125%"><tspan
id="tspan13502"
sodipodi:role="line"
x="-280.04187"
y="639.83008">col 5</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-280.33484"
y="659.83008"
id="text13831"
sodipodi:linespacing="125%"><tspan
id="tspan13508"
sodipodi:role="line"
x="-280.33484"
y="659.83008">col 6</tspan></text>
x="-335.04187"
y="639.83008">row 6</tspan></text>
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-112.36218"
y="560"
x="-112.33308"
y="558.26935"
id="text12230-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-112.36218"
y="560"
id="tspan12234-5">row B</tspan></text>
x="-112.33308"
y="558.26935"
id="tspan12234-5">col 1</tspan></text>
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-113.45203"
y="579.83008"
x="-113.42294"
y="578.09943"
id="text13836"
sodipodi:linespacing="125%"><tspan
id="tspan13461"
sodipodi:role="line"
x="-113.45203"
y="579.83008">row A</tspan></text>
x="-113.42294"
y="578.09943">col 2</tspan></text>
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-113.45203"
y="599.83008"
x="-113.42294"
y="598.09943"
id="text13839"
sodipodi:linespacing="125%"><tspan
id="tspan13463"
sodipodi:role="line"
x="-113.45203"
y="599.83008">row 9</tspan></text>
x="-113.42294"
y="598.09943">col 3</tspan></text>
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-113.45203"
y="619.83008"
x="-113.42294"
y="618.09943"
id="text13842"
sodipodi:linespacing="125%"><tspan
id="tspan13465"
sodipodi:role="line"
x="-113.45203"
y="619.83008">row 8</tspan></text>
x="-113.42294"
y="618.09943">col 4</tspan></text>
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-113.45203"
y="639.83008"
x="-113.42294"
y="638.09943"
id="text13845"
sodipodi:linespacing="125%"><tspan
id="tspan13467"
sodipodi:role="line"
x="-113.45203"
y="639.83008">row 7</tspan></text>
x="-113.42294"
y="638.09943">col 5</tspan></text>
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-112.36218"
y="660"
x="-112.33308"
y="658.26935"
id="text13848"
sodipodi:linespacing="125%"><tspan
id="tspan13469"
sodipodi:role="line"
x="-112.36218"
y="660">row 6</tspan></text>
x="-112.33308"
y="658.26935">col 6</tspan></text>
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 275,247.36218 0,59.74443"
@ -2548,24 +2642,6 @@
id="path11780-7-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 315,247.36218 0,59.74443"
id="path11780-7-1-05"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 275,127.36218 0,-59.744424"
id="path11780-7-1-05-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 295,127.36218 0,-59.744424"
id="path11780-7-1-05-0-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 575,137.36218 0,-20.49999"
@ -2598,46 +2674,40 @@
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 575,227.36218 0,20.5"
d="m 575,227.36218 0,71.05813"
id="path11780-1-5-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 555,227.36218 0,20.49999"
d="m 555,227.36218 0,71.05812"
id="path11780-1-5-9-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 535,227.36218 0,20.49999"
d="m 535,227.36218 0,71.05812"
id="path11780-1-5-4-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 635,227.36218 0,20.5"
d="m 635,227.36218 0,71.05813"
id="path11780-1-5-2-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 615,227.36218 0,20.49999"
d="m 615,227.36218 0,71.05812"
id="path11780-1-5-9-4-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 595,227.36218 0,20.49999"
d="m 595,227.36218 0,71.05812"
id="path11780-1-5-4-5-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 655,227.36218 0,20.5"
id="path11780-1-5-2-8-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
inkscape:transform-center-y="-7.0750605"
inkscape:transform-center-x="0.66599259"
@ -2697,7 +2767,93 @@
sodipodi:role="line"
x="37.24189"
y="405.93091"
id="tspan3451">- Row and column assignments are to matrix positions, not physical positions</tspan></text>
id="tspan3450">- Row and column assignments are to matrix positions, not physical positions</tspan></text>
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 534.99275,137.36829 0,-20.5"
id="path11780-1-5-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
inkscape:transform-center-y="-3"
inkscape:transform-center-x="-20.5"
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-112.3392"
y="538.26208"
id="text12230-8-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-112.3392"
y="538.26208"
id="tspan12234-5-3">col 0</tspan></text>
<path
style="fill:none;stroke:#770000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-10-7);marker-end:url(#DotM-10-7);display:inline"
d="m 275.03546,127.24605 c 0.90412,-34.974223 19.03956,-22.61202 7.77819,-102.530485"
id="path8368-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-300.46454"
y="139.9549"
id="text12519-7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-300.46454"
y="139.9549"
id="tspan12264-7">col 1</tspan></text>
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 135.12482,247.5319 0,20.5"
id="path11780-7-17"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-300.39969"
y="159.94453"
id="text12519-9"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-300.39969"
y="159.94453"
id="tspan12264-5">col 2</tspan></text>
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 155.11445,247.46705 0,20.5"
id="path11780-7-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#aaaa00;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
x="-300.52939"
y="180.06935"
id="text12519-7-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-300.52939"
y="180.06935"
id="tspan12264-7-6">col 3</tspan></text>
<path
style="fill:none;stroke:#aaaa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker11070);display:inline"
d="m 175.23927,247.59677 0,20.5"
id="path11780-7-17-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000077;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM-10-7);marker-end:url(#DotM-10-7);display:inline"
d="m 368.80181,357.18442 c -5.63959,-38.02199 1.04897,-157.80012 0.47542,-235.71113 -0.23179,-31.485746 -54.84564,-32.329723 -54.21554,6.07822"
id="path7962-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csc" />
</g>
<g
inkscape:groupmode="layer"

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 158 KiB

View File

@ -44,40 +44,40 @@ _bracketL, _Q, _W, _E, _R, _T, _esc,
_tab, _A, _S, _D, _F, _G,
_shiftL, _Z, _X, _C, _V, _B, 1,
_guiL, _arrowL, _arrowU, _arrowD, _arrowR,
_bs,
_del, _ctrlL,
_end, _home, _altL,
_bs, 0,
_del, 0, _ctrlL,
_end, _home, _altL,
// right hand
_backslash, _6, _7, _8, _9, _0, _dash,
_bracketL, _Y, _U, _I, _O, _P, _bracketR,
_H, _J, _K, _L, _semicolon, _quote,
1, _N, _M, _comma, _period, _slash, _shiftR,
_arrowL, _arrowD, _arrowU, _arrowR, _guiR,
_space,
_ctrlR, _enter,
0, _space,
_ctrlR, 0, _enter,
_altR, _pageU, _pageD ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 1: function and symbol keys
// unused
0,
// left hand
-1, _F1, _F2, _F3, _F4, _F5, _F11,
0, _braceL_kp, _braceR_kp, _bracketL, _bracketR, 0, _esc,
-1, _F1, _F2, _F3, _F4, _F5, _F11,
0, _braceL_kp, _braceR_kp, _bracketL, _bracketR, 0, _esc,
0, _semicolon, _slash, _dash, 0, _colon_kp,
2, 0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0, 0,
0, _arrowL, _arrowU, _arrowD, _arrowR,
_bs,
_del, _ctrlL,
_bs, 0,
_del, 0, _ctrlL,
_end, _home, _altL,
// right hand
_F12, _F6, _F7, _F8, _F9, _F10, 0,
2, 0, _dash, _lt_kp, _gt_kp, _currencyUnit, 0,
_backslash, 0, _parenL_kp, _parenR_kp, _equal, 0,
0, _mul_kp, 0, 0, 0, 0, 0,
_arrowL, _arrowD, _arrowU, _arrowR, 0,
_space,
_ctrlR, _enter,
_altR, _pageU, _pageD ),
_F12, _F6, _F7, _F8, _F9, _F10, 0,
2, 0, _dash, _lt_kp, _gt_kp, _currencyUnit, 0,
_backslash, 0, _parenL_kp, _parenR_kp, _equal, 0,
0, _mul_kp, 0, 0, 0, 0, 0,
_arrowL, _arrowD, _arrowU, _arrowR, 0,
0, _space,
_ctrlR, 0, _enter,
_altR, _pageU, _pageD ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 2: numpad
// unused
@ -88,8 +88,8 @@ _ctrlR, _enter,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0,
0, 0,
0, 0,
0, 0, 0,
0, 0, 0,
// right hand
//------- ------- ------- ------- ------- ------- -------
@ -97,9 +97,9 @@ _ctrlR, _enter,
0, 0, _4_kp, _5_kp, _6_kp, _mul_kp, 0,
0, _1_kp, _2_kp, _3_kp, _sub_kp, 0,
0, 0, _0_kp, _period, 0, _add_kp, 0,
0, 0, 0, 0, 0,
0,
0, 0,
0, 0, 0, 0, 0,
0, 0,
0, 0, 0,
0, 0, 0 )
// ----------------------------------------------------------------------------
};
@ -116,17 +116,17 @@ f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_2kcap,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_l_inc,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
f_prrel,f_prrel,f_prrel,
f_prrel, NULL,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel,
// right hand
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_l_inc,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_2kcap,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_l_inc,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_2kcap,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
NULL,f_prrel,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 1: function and symbol keys
@ -138,17 +138,17 @@ f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_np_on,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
f_prrel,f_prrel,f_prrel,
f_prrel, NULL,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel,
// right hand
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_np_to,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
NULL,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
NULL,f_prrel,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 2: numpad
@ -160,17 +160,17 @@ NULL,
NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL,
NULL,
NULL, NULL,
NULL, NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
NULL, NULL, NULL,
// right hand
NULL, NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL, NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL, NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL, NULL, NULL, NULL, NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
NULL, NULL, NULL )
// ----------------------------------------------------------------------------
};
@ -187,17 +187,17 @@ f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_2kcap,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_l_dec,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
f_prrel,f_prrel,f_prrel,
f_prrel, NULL,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel,
// right hand
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_l_dec,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_2kcap,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
NULL,f_prrel,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 1: function and symbol keys
@ -209,17 +209,17 @@ f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_np_of,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
f_prrel,f_prrel,f_prrel,
f_prrel, NULL,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel,
// right hand
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
NULL,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
NULL,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,
f_prrel,
f_prrel, f_prrel,
NULL,f_prrel,
f_prrel, NULL,f_prrel,
f_prrel,f_prrel,f_prrel ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 2: numpad
@ -231,17 +231,17 @@ NULL,
NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL,
NULL,
NULL, NULL,
NULL, NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
NULL, NULL, NULL,
// right hand
NULL, NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL, NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL, NULL,f_prrel,f_prrel,f_prrel,f_prrel, NULL,
NULL, NULL, NULL, NULL, NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
NULL, NULL, NULL ),
// ----------------------------------------------------------------------------
MATRIX_LAYER( // layer 3: nothing (just making sure unused functions
@ -249,17 +249,16 @@ NULL,
// unused
NULL,
// other
f_prrel, NULL, NULL, NULL, NULL, NULL, NULL,
f_toggl, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_inc, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_dec, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_iex, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_dex, NULL, NULL, NULL, NULL, NULL, NULL,
f_2kcap, NULL, NULL, NULL, NULL, NULL, NULL,
f_np_to, NULL, NULL, NULL, NULL, NULL, NULL,
f_np_on, NULL, NULL, NULL, NULL, NULL, NULL,
f_np_of, NULL, NULL, NULL, NULL, NULL, NULL,
f_btldr, NULL, NULL, NULL, NULL, NULL )
f_prrel,f_btldr, NULL, NULL, NULL, NULL, NULL, NULL,
f_toggl, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_inc, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_dec, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_iex, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_l_dex, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_2kcap, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_np_to, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_np_on, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
f_np_of, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
// ----------------------------------------------------------------------------
};

View File

@ -31,16 +31,18 @@
* labels used in the teensy and mcp23018 files)
* - coordinates not listed are unused
*
* - coordinates in the thumb group with row=1|7 are for optional keys
*
* --- other info -----------------------------------------------------
* rows x columns = positions; assigned, unassigned
* per hand: 6 x 7 = 42; 38, 4
* total: 12 x 7 = 84; 76, 8
* rows x columns = positions; used, unused
* per hand: 6 x 7 = 42; 40, 2
* total: 12 x 7 = 84; 80, 4
*
* left hand : cols 0..6, rows 6..B
* right hand : cols 0..6, rows 0..5
* --------------------------------------------------------------------
*/
#define MATRIX_LAYER( \
#define MATRIX_LAYER( \
/* for unused positions */ \
na, \
\
@ -50,9 +52,9 @@
k96,k95,k94,k93,k92,k91, \
k86,k85,k84,k83,k82,k81,k80, \
k76,k75,k74,k73,k72, \
k64, \
k63, k60, \
k65,k62,k61, \
k63,k71, \
k64,k70,k61, \
k65,k62,k60, \
\
/* right hand, spatial positions */ \
k50,k51,k52,k53,k54,k55,k56, \
@ -60,19 +62,19 @@
k31,k32,k33,k34,k35,k36, \
k20,k21,k22,k23,k24,k25,k26, \
k12,k13,k14,k15,k16, \
k04, \
k00, k03, \
k01,k02,k05 ) \
k11,k03, \
k01,k10,k04, \
k00,k02,k05 ) \
\
/* matrix positions */ \
{ { k00,k01,k02,k03,k04,k05, na,}, \
{ na, na,k12,k13,k14,k15,k16,}, \
{ k10,k11,k12,k13,k14,k15,k16,}, \
{ k20,k21,k22,k23,k24,k25,k26,}, \
{ na,k31,k32,k33,k34,k35,k36,}, \
{ k40,k41,k42,k43,k44,k45,k46,}, \
{ k50,k51,k52,k53,k54,k55,k56,}, \
{ k60,k61,k62,k63,k64,k65, na,}, \
{ na, na,k72,k73,k74,k75,k76,}, \
{ k70,k71,k72,k73,k74,k75,k76,}, \
{ k80,k81,k82,k83,k84,k85,k86,}, \
{ na,k91,k92,k93,k94,k95,k96,}, \
{ kA0,kA1,kA2,kA3,kA4,kA5,kA6,}, \
@ -88,8 +90,8 @@
kxx,kxx,kxx,kxx,kxx,kxx, \
kxx,kxx,kxx,kxx,kxx,kxx,kxx, \
kxx,kxx,kxx,kxx,kxx, \
kxx, \
kxx, kxx, \
kxx,kxx, \
kxx,kxx,kxx, \
kxx,kxx,kxx, \
\
kxx,kxx,kxx,kxx,kxx,kxx,kxx, \
@ -97,9 +99,9 @@
kxx,kxx,kxx,kxx,kxx,kxx, \
kxx,kxx,kxx,kxx,kxx,kxx,kxx, \
kxx,kxx,kxx,kxx,kxx, \
kxx, \
kxx, kxx, \
kxx,kxx,kxx )
kxx,kxx, \
kxx,kxx,kxx, \
kxx,kxx,kxx ) \
#endif

View File

@ -49,8 +49,8 @@ uint8_t mcp23018_init(void) {
ret = twi_send(TWI_ADDR_WRITE);
if (ret) goto out; // make sure we got an ACK
twi_send(IODIRA);
twi_send(0b11111111); // IODIRA
twi_send(0b10000000); // IODIRB
twi_send(0b10000000); // IODIRA
twi_send(0b11111111); // IODIRB
twi_stop();
// set pull-up
@ -61,8 +61,8 @@ uint8_t mcp23018_init(void) {
ret = twi_send(TWI_ADDR_WRITE);
if (ret) goto out; // make sure we got an ACK
twi_send(GPPUA);
twi_send(0b11111111); // GPPUA
twi_send(0b10000000); // GPPUB
twi_send(0b10000000); // GPPUA
twi_send(0b11111111); // GPPUB
twi_stop();
// set logical value (doesn't matter on inputs)
@ -109,18 +109,18 @@ uint8_t mcp23018_update_matrix(bool matrix[KB_ROWS][KB_COLUMNS]) {
// update our part of the matrix
for (uint8_t col=0; col<=6; col++) {
// set active column low : 0
// set active column low : 0
// set other columns high (hi-Z) : 1
twi_start();
twi_send(TWI_ADDR_WRITE);
twi_send(OLATB);
twi_send( 0xFF & ~(1<<col) );
twi_send(OLATA);
twi_send( 0xFF & ~(1<<(6-col)) );
twi_stop();
// read row data
twi_start();
twi_send(TWI_ADDR_WRITE);
twi_send(GPIOA);
twi_send(GPIOB);
twi_start();
twi_send(TWI_ADDR_READ);
twi_read(&data);
@ -128,13 +128,13 @@ uint8_t mcp23018_update_matrix(bool matrix[KB_ROWS][KB_COLUMNS]) {
// update matrix
for (uint8_t row=0x6; row<=0xB; row++)
matrix[row][col] = !( data & (1<<(row-6)) );
matrix[row][col] = !( data & (1<<(5-(row-6))) );
}
// set all columns high (hi-Z) : 1
twi_start();
twi_send(TWI_ADDR_WRITE);
twi_send(GPIOB);
twi_send(GPIOA);
twi_send(0xFF);
twi_stop();

View File

@ -2,10 +2,10 @@
## Pinout and Pin assignments
* `+` indicates pin
* `o` indicates unused pin
* `+` indicates connected pin
* `o` indicates unconnected pin
* '=' is used to list other things the pin is connected to
* `-`s inserted between some of the pin functions for readability
* `OC**` pins enclosed in parenthesis had lines over them in the pinout
### MCP23018
Vss(GND) +01---.---28+ NC
@ -27,25 +27,25 @@
power_negative Vss(GND) +01---.---28o NC
NC o02 27o GPA7
column0 GPB0 +03 26o GPA6
column1 GPB1 +04 25+ GPA5 rowB
column2 GPB2 +05 24+ GPA4 rowA
column3 GPB3 +06 23+ GPA3 row9
column4 GPB4 +07 22+ GPA2 row8
column5 GPB5 +08 21+ GPA1 row7
column6 GPB6 +09 20+ GPA0 row6
row_B GPB0 +03 26+ GPA6 column_0
row_A GPB1 +04 25+ GPA5 column_1
row_9 GPB2 +05 24+ GPA4 column_2
row_8 GPB3 +06 23+ GPA3 column_3
row_7 GPB4 +07 22+ GPA2 column_4
row_6 GPB5 +08 21+ GPA1 column_5
GPB6 o09 20+ GPA0 column_6
GPB7 o10 19o INTA
power_positive Vdd(Vcc) +11 18o INTB
I2C SCL +12 17o NC
I2C SDA +13 16+ RESET (see note)
NC o14-------15+ ADDR (see note)
I2C SDA +13 16+ RESET = Vdd(Vcc) (see note)
NC o14-------15+ ADDR = Vss(GND) (see note)
* notes:
* Row and column assignments are to matrix positions, which may or may
correspond to the physical position of the key: e.g. the key where `row4`
and `column2` cross will be scanned into the matrix at `[4][2]`, wherever
it happens to be located on the keyboard. Mapping from one to the other
(which only matters for defining layouts) is handled elsewhere.
correspond to the physical position of the key: e.g. the key where
`row_8` and `column_2` cross will be scanned into the matrix at `[8][2]`,
wherever it happens to be located on the keyboard. Mapping from one to
the other (which only matters for defining layouts) is handled elsewhere.
* ADDR (pin15): Set slave address to `0b0100000` by connecting to Vss(GND).
* The user-defined bits are the three least significant
* I2C addresses are 7 bits long (the last bit in the byte is used for

View File

@ -58,8 +58,7 @@
teensypin_write(register, operation, UNUSED_1); \
teensypin_write(register, operation, UNUSED_2); \
teensypin_write(register, operation, UNUSED_3); \
teensypin_write(register, operation, UNUSED_4); \
teensypin_write(register, operation, UNUSED_5); } \
teensypin_write(register, operation, UNUSED_4); } \
while(0)
#define teensypin_write_all_row(register, operation) \
@ -87,29 +86,28 @@
#define CLEAR &=~
// --- unused
#define UNUSED_0 B, 1 // SPI pin
#define UNUSED_1 B, 2 // SPI pin
#define UNUSED_2 B, 3 // SPI pin
#define UNUSED_3 D, 4 // hard to use with breadboard (on the end)
#define UNUSED_4 D, 5 // hard to use with breadboard (on the end)
#define UNUSED_5 E, 6 // hard to use with breadboard (internal)
#define UNUSED_0 C, 7
#define UNUSED_1 D, 7
#define UNUSED_2 D, 4 // hard to use with breadboard (on the end)
#define UNUSED_3 D, 5 // hard to use with breadboard (on the end)
#define UNUSED_4 E, 6 // hard to use with breadboard (internal)
// --- rows
#define ROW_0 F, 0
#define ROW_1 F, 1
#define ROW_2 F, 4
#define ROW_3 F, 5
#define ROW_4 F, 6
#define ROW_5 F, 7
#define ROW_0 F, 7
#define ROW_1 F, 6
#define ROW_2 F, 5
#define ROW_3 F, 4
#define ROW_4 F, 1
#define ROW_5 F, 0
// --- columns
#define COLUMN_0 B, 4
#define COLUMN_1 C, 6
#define COLUMN_2 C, 7
#define COLUMN_3 D, 2
#define COLUMN_4 D, 3
#define COLUMN_5 D, 7
#define COLUMN_6 B, 0
#define COLUMN_0 B, 0
#define COLUMN_1 B, 1
#define COLUMN_2 B, 2
#define COLUMN_3 B, 3
#define COLUMN_4 D, 2
#define COLUMN_5 D, 3
#define COLUMN_6 C, 6
/* returns
@ -122,6 +120,10 @@ uint8_t teensy_init(void) {
DDRD &= ~(1<<6); // set D(6) as input
PORTD &= ~(1<<6); // set D(6) internal pull-up disabled
// (tied to Vcc for hardware convenience)
DDRB &= ~(1<<4); // set B(4) as input
PORTB &= ~(1<<4); // set B(4) internal pull-up disabled
// keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
_kb_led_all_off(); // (just to put the pins in a known state)
TCCR1A = 0b10101001; // set and configure fast PWM

View File

@ -15,15 +15,15 @@
// LED control
#define _kb_led_1_on() (DDRB |= (1<<6))
#define _kb_led_1_off() (DDRB &= ~(1<<6))
#define _kb_led_1_set(n) (OCR1B = (uint8_t)(n))
#define _kb_led_1_set_percent(n) (OCR1B = (uint8_t)((n) * 0xFF))
#define _kb_led_1_on() (DDRB |= (1<<5))
#define _kb_led_1_off() (DDRB &= ~(1<<5))
#define _kb_led_1_set(n) (OCR1A = (uint8_t)(n))
#define _kb_led_1_set_percent(n) (OCR1A = (uint8_t)((n) * 0xFF))
//
#define _kb_led_2_on() (DDRB |= (1<<5))
#define _kb_led_2_off() (DDRB &= ~(1<<5))
#define _kb_led_2_set(n) (OCR1A = (uint8_t)(n))
#define _kb_led_2_set_percent(n) (OCR1A = (uint8_t)((n) * 0xFF))
#define _kb_led_2_on() (DDRB |= (1<<6))
#define _kb_led_2_off() (DDRB &= ~(1<<6))
#define _kb_led_2_set(n) (OCR1B = (uint8_t)(n))
#define _kb_led_2_set_percent(n) (OCR1B = (uint8_t)((n) * 0xFF))
//
#define _kb_led_3_on() (DDRB |= (1<<7))
#define _kb_led_3_off() (DDRB &= ~(1<<7))

View File

@ -2,8 +2,9 @@
## Pinout and Pin assignments
* `+` indicates pin
* `o` indicates unused pin
* `+` indicates connected pin
* `o` indicates unconnected pin
* '=' is used to list other things the pin is connected to
* `-`s inserted between some of the pin functions for readability
* `OC**` pins enclosed in parenthesis had lines over them in the pinout
@ -28,27 +29,27 @@
### Teensy 2.0 Pin Assignments
power_negative GND +---.....---+ Vcc power_positive
column6 PB0 + + PF0 row0
PB1 o + PF1 row1
PB2 o + PF4 row2
PB3 o o o + PF5 row3
(OC1C) LED3 PB7 + PE6 AREF + PF6 row4
(SCL) I2C PD0 + + PF7 row5
(SDA) I2C PD1 + + PB6 LED1 (OC1B)
column3 PD2 + + PB5 LED2 (OC1A)
column4 PD3 + + PB4 column0
column1 PC6 + + PD7 column5
column2 PC7 +-o-o-o-o-o-+ PD6 onboardLED
column_0 PB0 + + PF0 row_5
column_1 PB1 + + PF1 row_4
column_2 PB2 + + PF4 row_3
column_3 PB3 + o o + PF5 row_2
(OC1C) LED_3 PB7 + PE6 AREF + PF6 row_1
(SCL) I2C PD0 + + PF7 row_0
(SDA) I2C PD1 + + PB6 LED_2 (OC1B)
column_4 PD2 + + PB5 LED_1 (OC1A)
column_5 PD3 + + PB4 = Vcc
column_6 PC6 + o PD7
PC7 o-o-o-o-o-o-+ PD6 onboardLED = GND
PD5 --/ | | | \-- PD4
Vcc ----/ | \---- RST
GND-------/
* notes:
* Row and column assignments are to matrix positions, which may or may
correspond to the physical position of the key: e.g. the key where `row4`
and `column2` cross will be scanned into the matrix at `[4][2]`, wherever
it happens to be located on the keyboard. Mapping from one to the other
(which only matters for defining layouts) is handled elsewhere.
correspond to the physical position of the key: e.g. the key where
`row_4` and `column_2` cross will be scanned into the matrix at `[4][2]`,
wherever it happens to be located on the keyboard. Mapping from one to
the other (which only matters for defining layouts) is handled elsewhere.
* SCL and SDA: Need external pull-up resistors. Sometimes the Teensy
internal pull-ups are enough (see datasheet section 20.5.1), but i think
for this project we'll want external ones. The general recommendation

View File

@ -394,8 +394,8 @@ static bool L(layer_mask)[KB_ROWS][KB_COLUMNS] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0,
0, 0,
0, 0,
0, 0, 0,
0, 0, 0,
// right hand
@ -404,8 +404,8 @@ static bool L(layer_mask)[KB_ROWS][KB_COLUMNS] =
0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0,
0,
0, 0,
0, 0,
0, 0, 0,
0, 0, 0 );
// functions