Preview generator: generating a preview by layer number

This commit is contained in:
He4eT 2021-08-27 17:59:49 +05:00
commit a5d894b84a
3 changed files with 31 additions and 10 deletions

View file

@ -1,3 +1,6 @@
# Flashing the keyboard:
# make flash
qmk_dir = qmk_firmware qmk_dir = qmk_firmware
keyboard = handwired/dactyl_manuform/5x6 keyboard = handwired/dactyl_manuform/5x6
@ -22,14 +25,20 @@ flash:
@make qmk_flash @make qmk_flash
@make keymap_clean @make keymap_clean
# Creating layer previews:
# make preview[_copy] [layer=number]
layer = -1
preview_cmd = node \ preview_cmd = node \
./preview_generator/preview_generator.js \ ./preview_generator/preview_generator.js \
"${PWD}/keymap/keymap.c" "${PWD}/keymap/keymap.c" \
"$(layer)"
preview: preview:
@${preview_cmd} @${preview_cmd}
preview_and_copy: preview_copy:
@${preview_cmd} | xclip -sel clipboard @${preview_cmd} | xclip -sel clipboard
@echo 'Copied to the clipboard! Paste it in the "Raw data" tab:' @echo 'The layout has been copied to the clipboard!'
@echo 'Paste it into the "Raw Data" tab here:'
@echo 'http://www.keyboard-layout-editor.com/' @echo 'http://www.keyboard-layout-editor.com/'

View file

@ -1,4 +1,5 @@
const HALVES_GAP = 5 const HALVES_GAP = 5
const NUMBER_OF_ROWS = 8
const row = (keys, start, gapOffset) => [ const row = (keys, start, gapOffset) => [
{x: start}, {x: start},
@ -15,13 +16,22 @@ const row4 = (keys, rowIndex) => ({
5: row(keys, 4, 0), 5: row(keys, 4, 0),
6: row(keys, 6, -4), 6: row(keys, 6, -4),
7: row(keys, 6, -4), 7: row(keys, 6, -4),
}[rowIndex % 8]) }[rowIndex % NUMBER_OF_ROWS])
const buildRow = (keys, rowIndex) => ({ const buildRow = (keys, rowIndex) => ({
12: row12(keys), 12: row12(keys),
4: row4(keys, rowIndex) 4: row4(keys, rowIndex)
}[keys.length] || ['Oh no...']) }[keys.length] || ['Oh no...'])
const layerRange = layerIndex =>
layerIndex === -1
? []
: Array(2)
.fill(layerIndex)
.map((x, i) => x + i)
.map(x => x * NUMBER_OF_ROWS)
module.exports = { module.exports = {
layerRange,
buildRow buildRow
} }

View file

@ -5,26 +5,28 @@
const fs = require('fs') const fs = require('fs')
const {buildRow} = require('./parts/rows') const {buildRow, layerRange} = require('./parts/rows')
const {cleanKeys, printLegends} = require('./parts/keys') const {cleanKeys, printLegends} = require('./parts/keys')
const keymapToKLERawData = fileContent => const keymapToKLERawData = (fileContent, layerIndex) =>
fileContent fileContent
.split('\n') .split('\n')
.map(row => row.split(',')) .map(row => row.split(','))
.filter(keys => keys.length > 1) .filter(keys => keys.length > 1)
.slice(...layerRange(layerIndex))
.map(cleanKeys) .map(cleanKeys)
.map(printLegends) .map(printLegends)
.map(buildRow) .map(buildRow)
.map(JSON.stringify) .map(JSON.stringify)
// .slice(0, 8)
// .slice(8, 16)
// .slice(16)
.join(',\n') .join(',\n')
/* */
const keymapFilePath = process.argv[2] const keymapFilePath = process.argv[2]
const layerIndex = Number(process.argv[3])
const fileContent = fs.readFileSync(keymapFilePath, 'utf8') const fileContent = fs.readFileSync(keymapFilePath, 'utf8')
const rawData = keymapToKLERawData(fileContent) const rawData = keymapToKLERawData(fileContent, layerIndex)
console.log(rawData) console.log(rawData)