Compare commits
9 Commits
86232f5108
...
5f48c11f35
Author | SHA1 | Date |
---|---|---|
sudo pacman -Syu | 5f48c11f35 | |
sudo pacman -Syu | 49b70766f7 | |
sudo pacman -Syu | 50cc136d4c | |
sudo pacman -Syu | 6d61ef927b | |
sudo pacman -Syu | 449b9ebd0c | |
sudo pacman -Syu | dbe033f2ae | |
sudo pacman -Syu | c5c00fd2fc | |
sudo pacman -Syu | 0b4de29e5f | |
sudo pacman -Syu | d8b3a199ab |
5
Makefile
5
Makefile
|
@ -25,6 +25,11 @@ draw_qmkasciigen:
|
|||
$(MAKE) go
|
||||
go run ./cmd/qmkasciigen/*.go -qmk-keyboard dztech/dz60rgb_wkl/v2_1 -qmk-keymap-file dztech_dz60rgb_wkl/keymaps_json/haunt98/keymap.json -out dztech_dz60rgb_wkl/asciiart/haunt98.txt
|
||||
|
||||
draw_qmkasciigen_demo:
|
||||
go run ./cmd/qmkasciigen/*.go -print-out -allow-layers 0 -qmk-keyboard matthewdias/minim
|
||||
go run ./cmd/qmkasciigen/*.go -print-out -allow-layers 0 -qmk-keyboard moondrop/dash75
|
||||
go run ./cmd/qmkasciigen/*.go -print-out -allow-layers 0 -qmk-keyboard matthewdias/m3n3van
|
||||
|
||||
format_draw_caksoylar_keymap_drawer:
|
||||
bun upgrade
|
||||
bun install --global prettier
|
||||
|
|
|
@ -11,12 +11,28 @@ const (
|
|||
)
|
||||
|
||||
// https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
|
||||
var mapFromTo = []map[string]string{
|
||||
var mapRawBinding = []map[string]string{
|
||||
{
|
||||
// My custom
|
||||
"CTL_T(KC_ESC)": "ESC CTRL",
|
||||
"TD(TD_SAFE_BOOT)": "BOOT",
|
||||
},
|
||||
}
|
||||
|
||||
var mapTransform = []map[string]string{
|
||||
{
|
||||
// My custom
|
||||
"LAYER_QWERTY": "0",
|
||||
"LAYER_COMMON": "1",
|
||||
"LAYER_RARELY": "2",
|
||||
"LAYER_RECOVERY": "3",
|
||||
},
|
||||
{
|
||||
"MO(0)": "L0",
|
||||
"MO(1)": "L1",
|
||||
"MO(2)": "L2",
|
||||
"MO(3)": "L3",
|
||||
},
|
||||
{
|
||||
// Basic
|
||||
// Prefer OPT > ALT
|
||||
|
@ -57,9 +73,17 @@ var mapFromTo = []map[string]string{
|
|||
"RGB_SAI": "RGBS",
|
||||
"RGB_VAI": "RGBV",
|
||||
// Advance
|
||||
// Mod-Tap
|
||||
"LCTL_T": "CTRL",
|
||||
// Space cadet
|
||||
"SC_LSPO": "( SHIFT",
|
||||
"SC_RSPC": ") SHIFT",
|
||||
// Quantum
|
||||
"EE_CLR": "EECLR",
|
||||
},
|
||||
{
|
||||
// Mod-Tap
|
||||
"CTL_T": "CTRL",
|
||||
},
|
||||
{
|
||||
// Prefix
|
||||
|
@ -68,7 +92,15 @@ var mapFromTo = []map[string]string{
|
|||
},
|
||||
}
|
||||
|
||||
// Only use this as last resort
|
||||
var mapTransformTiny = []map[string]string{
|
||||
{
|
||||
"BACKSPACE": "BACK",
|
||||
},
|
||||
}
|
||||
|
||||
type DrawConfig struct {
|
||||
AllowLayers map[int]struct{}
|
||||
PrintLayout bool
|
||||
PrintLayer bool
|
||||
}
|
||||
|
@ -130,6 +162,14 @@ func Draw(
|
|||
// Each keymap has many layers
|
||||
layersStr := make([]string, 0, len(keymap.Layers))
|
||||
for iLayer, layer := range keymap.Layers {
|
||||
if len(cfg.AllowLayers) > 0 {
|
||||
// Only check if valid
|
||||
if _, ok := cfg.AllowLayers[iLayer]; !ok {
|
||||
// Skip if not in list
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
// PreProcess table with space
|
||||
table := make([][]string, newMaxY+1)
|
||||
for i := 0; i <= newMaxY; i++ {
|
||||
|
@ -146,9 +186,20 @@ func Draw(
|
|||
keyStr := layer[count]
|
||||
|
||||
// Convert keyStr
|
||||
for _, m := range mapFromTo {
|
||||
for from, to := range m {
|
||||
keyStr = strings.ReplaceAll(keyStr, from, to)
|
||||
isRaw := false
|
||||
for _, m := range mapRawBinding {
|
||||
if _, ok := m[keyStr]; ok {
|
||||
isRaw = true
|
||||
keyStr = m[keyStr]
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !isRaw {
|
||||
for _, m := range mapTransform {
|
||||
for from, to := range m {
|
||||
keyStr = strings.ReplaceAll(keyStr, from, to)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -160,6 +211,21 @@ func Draw(
|
|||
padding = 1
|
||||
}
|
||||
|
||||
if len(keyStr)+2*padding > key.NewW {
|
||||
// Make it smaller
|
||||
for _, m := range mapTransformTiny {
|
||||
for from, to := range m {
|
||||
keyStr = strings.ReplaceAll(keyStr, from, to)
|
||||
}
|
||||
}
|
||||
|
||||
// Re calc padding
|
||||
padding = (key.NewW-len(keyStr))/2 - 1
|
||||
if padding <= 0 {
|
||||
padding = 1
|
||||
}
|
||||
}
|
||||
|
||||
// Draw strategy
|
||||
// Draw 4 + in corner
|
||||
// Draw - on top and bottom
|
||||
|
@ -168,13 +234,16 @@ func Draw(
|
|||
for j := key.NewX; j <= key.NewX+key.NewW; j++ {
|
||||
if i == key.NewY || i == key.NewY+key.NewH {
|
||||
if j == key.NewX || j == key.NewX+key.NewW {
|
||||
// Draw corner
|
||||
table[i][j] = "+"
|
||||
} else if table[i][j] != "+" {
|
||||
// Draw top/bottom
|
||||
table[i][j] = "-"
|
||||
}
|
||||
} else if i == key.NewY+key.NewH/2 {
|
||||
// Write key in the middle
|
||||
if j == key.NewX || j == key.NewX+key.NewW {
|
||||
// Draw left/right
|
||||
table[i][j] = "|"
|
||||
} else if len(keyStr) > 0 && j > key.NewX+padding && j < key.NewX+len(keyStr)+padding+1 && j <= key.NewX+key.NewW-padding {
|
||||
// Only handle ASCII keyStr
|
||||
|
|
|
@ -10,6 +10,8 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -27,8 +29,10 @@ var (
|
|||
flagQMKInfoFile string
|
||||
flagQMKKeymapFile string
|
||||
flagOutput string
|
||||
flagPrintOutput bool
|
||||
flagPrintLayout bool
|
||||
flagPrintLayer bool
|
||||
flagAllowLayers string
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -38,8 +42,10 @@ func init() {
|
|||
flag.StringVar(&flagQMKInfoFile, "qmk-info-file", "", "QMK info json file")
|
||||
flag.StringVar(&flagQMKKeymapFile, "qmk-keymap-file", "", "QMK keymap json file")
|
||||
flag.StringVar(&flagOutput, "out", "", "Output file")
|
||||
flag.BoolVar(&flagPrintOutput, "print-out", false, "Print output")
|
||||
flag.BoolVar(&flagPrintLayout, "print-layout", false, "Print layout name")
|
||||
flag.BoolVar(&flagPrintLayer, "print-layer", false, "Print layer name")
|
||||
flag.StringVar(&flagAllowLayers, "allow-layers", "", "Allow layers to print aka 0 or 0,2,3. Use , to split. Empty mean all")
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -50,8 +56,22 @@ func main() {
|
|||
log.Printf("flagQMKInfoFile: [%s]\n", flagQMKInfoFile)
|
||||
log.Printf("flagQMKKeymapFile: [%s]\n", flagQMKKeymapFile)
|
||||
log.Printf("flagOutput: [%s]\n", flagOutput)
|
||||
log.Printf("flagPrintOutput: [%v]\n", flagPrintOutput)
|
||||
log.Printf("flagPrintLayout: [%v]\n", flagPrintLayout)
|
||||
log.Printf("flagPrintLayer: [%v]\n", flagPrintLayer)
|
||||
log.Printf("flagAllowLayers: [%s]\n", flagAllowLayers)
|
||||
}
|
||||
|
||||
// 0,2,3 -> [0, 2, 3]
|
||||
allowLayers := make(map[int]struct{})
|
||||
for _, l := range strings.Split(flagAllowLayers, ",") {
|
||||
l = strings.TrimSpace(l)
|
||||
if l == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
lInt := cast.ToInt(l)
|
||||
allowLayers[lInt] = struct{}{}
|
||||
}
|
||||
|
||||
qmkInfo, err := wrapGetQMKInfo(flagQMKKeyboard, flagQMKInfoFile, flagDebug)
|
||||
|
@ -68,12 +88,13 @@ func main() {
|
|||
qmkInfo.Layouts,
|
||||
qmkKeymap,
|
||||
DrawConfig{
|
||||
AllowLayers: allowLayers,
|
||||
PrintLayout: flagPrintLayout,
|
||||
PrintLayer: flagPrintLayer,
|
||||
},
|
||||
)
|
||||
if flagDebug {
|
||||
log.Printf("Result:\n%s\n", result)
|
||||
if flagPrintOutput {
|
||||
fmt.Println(result)
|
||||
}
|
||||
|
||||
// Optional
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
||||
| ESC CTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
|
||||
+-------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---------+-------+
|
||||
| ( SHIFT | Z | X | C | V | B | N | M | , | . | / | ) SHIFT | MO(1) |
|
||||
| ( SHIFT | Z | X | C | V | B | N | M | , | . | / | ) SHIFT | L1 |
|
||||
+-----------+-----+-+-----+-----+-+-------+-------+-------+-------+-------+-------+-----+-+-------+-+-------+---+-------+
|
||||
| | OPT | CMD | SPACE | CMD | OPT | |
|
||||
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
|
||||
|
@ -29,13 +29,13 @@
|
|||
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
||||
| CAPS | VOLD | VOLU | MUTE | | | | | HOME | PGUP | | | |
|
||||
+-------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---------+-------+
|
||||
| | RGBH | RGBS | RGBV | | | | | END | PGDN | | | MO(3) |
|
||||
| | RGBH | RGBS | RGBV | | | | | END | PGDN | | | L3 |
|
||||
+-----------+-----+-+-----+-----+-+-------+-------+-------+-------+-------+-------+-----+-+-------+-+-------+---+-------+
|
||||
| | | | | RGBTO | RGBMO | |
|
||||
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
|
||||
|
||||
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|
||||
| BOOT | EE_CLR| | | | | | | | | | | | | |
|
||||
| BOOT | EECLR | | | | | | | | | | | | | |
|
||||
+-------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
|
||||
| | | | | | | | | | | | | | |
|
||||
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
"KC_DOT",
|
||||
"KC_SLSH",
|
||||
"SC_RSPC",
|
||||
"MO(1)",
|
||||
"MO(LAYER_COMMON)",
|
||||
"KC_NO",
|
||||
"KC_LOPT",
|
||||
"KC_LCMD",
|
||||
|
@ -81,7 +81,7 @@
|
|||
"KC_F11",
|
||||
"KC_F12",
|
||||
"KC_NO",
|
||||
"TG(2)",
|
||||
"TG(LAYER_RARELY)",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
|
@ -145,7 +145,7 @@
|
|||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"TO(0)",
|
||||
"TO(LAYER_QWERTY)",
|
||||
"KC_NO",
|
||||
"KC_BRMD",
|
||||
"KC_BRMU",
|
||||
|
@ -185,7 +185,7 @@
|
|||
"KC_PGDN",
|
||||
"KC_NO",
|
||||
"KC_TRNS",
|
||||
"MO(3)",
|
||||
"MO(LAYER_RECOVERY)",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
|
|
2
go.mod
2
go.mod
|
@ -1,3 +1,5 @@
|
|||
module github.com/haunt98/qmk_keymaps
|
||||
|
||||
go 1.20
|
||||
|
||||
require github.com/spf13/cast v1.5.1
|
||||
|
|
7
go.sum
7
go.sum
|
@ -0,0 +1,7 @@
|
|||
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||
github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
|
||||
github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48=
|
Loading…
Reference in New Issue