modified for flippable PCB (as of 2012-07-15)
parent
9e7af882a4
commit
3328f02a62
|
@ -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 |
|
@ -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 )
|
||||
// ----------------------------------------------------------------------------
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue