improved the svg/html layout description generator output

partial-rewrite
Ben Blazak 2012-12-11 15:10:45 -08:00
parent 632a5d0ba1
commit 63f1ee22df
5 changed files with 99 additions and 26 deletions

View File

@ -74,6 +74,55 @@ def main():
<body> <body>
<h1>Firmware Layout</h1>
<ul>
<li>git commit date:
<code>""" + info.all['miscellaneous']['git-commit-date'] + """</code></li>
<li>git commit id:
<code>""" + info.all['miscellaneous']['git-commit-id'] + """</code></li>
</ul>
<h2>Notes</h2>
<ul>
<li>Layer keys are labeled e.g. <code>la 2 +- 2</code>
<ul>
<li><code>la</code> is for "layer"</li>
<li><code>2</code> indicates that the second pair of push|pop functions is
being used (differently numbered pairs won't interfere with each
other)</li>
<li><code>+</code> indicates that the layer is being "pushed" onto the
stack at some point, either when the key is pressed or when it is
released</li>
<li><code>-</code> indicates that the layer is being "popped" off of the
stack at some point</li>
<li>the last <code>2</code> indicates the layer-number that will be
activated on "push".</li>
</ul>
See the project 'readme.md' file on <a
href='https://github.com/benblazak/ergodox-firmware'>the github page</a> as a
starting point for learning more about how this firmware implements
layers.</li>
<br>
<li>Shifted keys are labeled with an <code>sh</code> at the beginning. This
indicates that a 'Shift' is generated with that keypress, the same as if you
had held down 'Shift', and pressed that key.</li>
<br>
<li><code>(null)</code> indicates that no keypress or keyrelease will be
generated for that key, on that layer.</li>
<br>
<li>Blank keys indicate "transparency": if you press that key on that layer,
the key will act as if it was on whatever layer is active below the current
one.</li>
<br>
<li>Some keys may be labled with special functions (like
<code>[btldr]</code>, which tells the Teensy to wait for the host to send it
a new firmware).</li>
</ul>
<br>
""")[1:-1] """)[1:-1]
# suffix # suffix
@ -84,16 +133,36 @@ def main():
""")[1:-1] """)[1:-1]
# substitute into template # substitute into template
# -------
# note: this is not general enough to handle any possible layout well, at
# the moment. but it should handle more standard ones well. (hopefully
# minor) modifications may be necessary on a case by case basis
# -------
layer_number = -1
for (layout, layer) in zip( info.matrix_layout, for (layout, layer) in zip( info.matrix_layout,
range(len(info.matrix_layout))): range(len(info.matrix_layout))):
layer_number += 1
svg = template.svg svg = template.svg
for (name, (code, press, release)) \ for (name, (code, press, release)) \
in zip(info.matrix_positions, layout): in zip(info.matrix_positions, layout):
replace = '' replace = ''
if press == 'kbfun_jump_to_bootloader': if press == 'kbfun_transparent':
replace = ''
elif press == 'kbfun_shift_press_release':
replace = 'sh ' + keycode_to_string.get(code, '[n/a]')
elif press == 'kbfun_jump_to_bootloader':
replace = '[btldr]' replace = '[btldr]'
elif re.search(r'layer', press): elif press == 'NULL' and release == 'NULL':
replace = '[layer]' replace = '(null)'
elif re.search(r'numpad', press+release):
replace = '[num]'
elif re.search(r'layer', press+release):
replace = 'la ' + re.findall(r'\d+', press+release)[0] + ' '
if re.search(r'push', press+release):
replace += '+'
if re.search(r'pop', press+release):
replace += '-'
replace += ' ' + str(code)
else: else:
replace = keycode_to_string.get(code, '[n/a]') replace = keycode_to_string.get(code, '[n/a]')
@ -104,7 +173,10 @@ def main():
r"('\1', " + str(layer) + r")", r"('\1', " + str(layer) + r")",
svg ) svg )
doc.main += svg doc.main += '<h2>Layer ' + str(layer_number) + '</h2>\n' + svg
# change the font size
doc.main = re.sub(r'22.5px', '15px', doc.main)
print(doc.prefix + doc.main + doc.suffix) print(doc.prefix + doc.main + doc.suffix)

View File

@ -31,6 +31,7 @@ var ui_info = {
".meta-data": { // for the JSON file ".meta-data": { // for the JSON file
"version": "<number>", "version": "<number>",
"date-generated": "<string>", // format: RFC 3339 "date-generated": "<string>", // format: RFC 3339
"description": "<string>",
}, },
"keyboard-functions": { "keyboard-functions": {
"<(function name)>": { "<(function name)>": {

View File

@ -94,6 +94,20 @@ A few concepts that might be different:
active before them). active before them).
## Dependencies (for building from source)
* See the PJRC [Getting Started] (http://pjrc.com/teensy/first_use.html) page
for instructions on how to set up an AVR programming environment (be sure to
click through all the subsections (in the navigation bar on the left), as
there is essential information in each one). This project uses C (not
Arduino), and Make. I'm compiling with GNU tools under OS X, but other
environments (especially Linux, appropriately set up, or [WinAVR]
(http://winavr.sourceforge.net/) under Windows) should work too.
* I also assume that you are using [git] (http://git-scm.com/) (for `make
clean`).
## HowTo ## HowTo
@ -267,20 +281,6 @@ That is, how to change whether the rows or the columns are being driven. This c
## Dependencies (for building from source)
* See the PJRC [Getting Started] (http://pjrc.com/teensy/first_use.html) page
for instructions on how to set up an AVR programming environment (be sure to
click through all the subsections (in the navigation bar on the left), as
there is essential information in each one). This project uses C (not
Arduino), and Make. I'm compiling with GNU tools under OS X, but other
environments (especially Linux, appropriately set up, or [WinAVR]
(http://winavr.sourceforge.net/) under Windows) should work too.
* I also assume that you are using [git] (http://git-scm.com/) (for `make
clean`).
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright &copy; 2012 Ben Blazak <benblazak.dev@gmail.com> Copyright &copy; 2012 Ben Blazak <benblazak.dev@gmail.com>

View File

@ -247,9 +247,9 @@ NULL,
ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, ktrans,
ktrans, kprrel, ktrans, ktrans,
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
ktrans, ktrans, ktrans ), ktrans, ktrans, kprrel ),
}; };
@ -345,9 +345,9 @@ NULL,
ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, ktrans,
ktrans, kprrel, ktrans, ktrans,
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
ktrans, ktrans, ktrans ), ktrans, ktrans, kprrel ),
KB_MATRIX_LAYER( // release: layer 3: nothing (just making sure unused KB_MATRIX_LAYER( // release: layer 3: nothing (just making sure unused

View File

@ -247,9 +247,9 @@ NULL,
ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, ktrans,
ktrans, kprrel, ktrans, ktrans,
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
ktrans, ktrans, ktrans ), ktrans, ktrans, kprrel ),
}; };
@ -345,9 +345,9 @@ NULL,
ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, kprrel, kprrel, ktrans,
ktrans, ktrans, kprrel, kprrel, ktrans, ktrans, ktrans, kprrel, kprrel, ktrans,
ktrans, kprrel, ktrans, ktrans,
ktrans, ktrans, ktrans, ktrans, ktrans, ktrans,
ktrans, ktrans, ktrans ), ktrans, ktrans, kprrel ),
KB_MATRIX_LAYER( // release: layer 3: nothing (just making sure unused KB_MATRIX_LAYER( // release: layer 3: nothing (just making sure unused