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
|
$(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
|
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:
|
format_draw_caksoylar_keymap_drawer:
|
||||||
bun upgrade
|
bun upgrade
|
||||||
bun install --global prettier
|
bun install --global prettier
|
||||||
|
|
|
@ -11,12 +11,28 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
|
// https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
|
||||||
var mapFromTo = []map[string]string{
|
var mapRawBinding = []map[string]string{
|
||||||
{
|
{
|
||||||
// My custom
|
// My custom
|
||||||
"CTL_T(KC_ESC)": "ESC CTRL",
|
"CTL_T(KC_ESC)": "ESC CTRL",
|
||||||
"TD(TD_SAFE_BOOT)": "BOOT",
|
"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
|
// Basic
|
||||||
// Prefer OPT > ALT
|
// Prefer OPT > ALT
|
||||||
|
@ -57,9 +73,17 @@ var mapFromTo = []map[string]string{
|
||||||
"RGB_SAI": "RGBS",
|
"RGB_SAI": "RGBS",
|
||||||
"RGB_VAI": "RGBV",
|
"RGB_VAI": "RGBV",
|
||||||
// Advance
|
// Advance
|
||||||
|
// Mod-Tap
|
||||||
|
"LCTL_T": "CTRL",
|
||||||
// Space cadet
|
// Space cadet
|
||||||
"SC_LSPO": "( SHIFT",
|
"SC_LSPO": "( SHIFT",
|
||||||
"SC_RSPC": ") SHIFT",
|
"SC_RSPC": ") SHIFT",
|
||||||
|
// Quantum
|
||||||
|
"EE_CLR": "EECLR",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// Mod-Tap
|
||||||
|
"CTL_T": "CTRL",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Prefix
|
// 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 {
|
type DrawConfig struct {
|
||||||
|
AllowLayers map[int]struct{}
|
||||||
PrintLayout bool
|
PrintLayout bool
|
||||||
PrintLayer bool
|
PrintLayer bool
|
||||||
}
|
}
|
||||||
|
@ -130,6 +162,14 @@ func Draw(
|
||||||
// Each keymap has many layers
|
// Each keymap has many layers
|
||||||
layersStr := make([]string, 0, len(keymap.Layers))
|
layersStr := make([]string, 0, len(keymap.Layers))
|
||||||
for iLayer, layer := range 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
|
// PreProcess table with space
|
||||||
table := make([][]string, newMaxY+1)
|
table := make([][]string, newMaxY+1)
|
||||||
for i := 0; i <= newMaxY; i++ {
|
for i := 0; i <= newMaxY; i++ {
|
||||||
|
@ -146,11 +186,22 @@ func Draw(
|
||||||
keyStr := layer[count]
|
keyStr := layer[count]
|
||||||
|
|
||||||
// Convert keyStr
|
// Convert keyStr
|
||||||
for _, m := range mapFromTo {
|
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 {
|
for from, to := range m {
|
||||||
keyStr = strings.ReplaceAll(keyStr, from, to)
|
keyStr = strings.ReplaceAll(keyStr, from, to)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Padding to center key
|
// Padding to center key
|
||||||
// Why / 2, why - 1 ?
|
// Why / 2, why - 1 ?
|
||||||
|
@ -160,6 +211,21 @@ func Draw(
|
||||||
padding = 1
|
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 strategy
|
||||||
// Draw 4 + in corner
|
// Draw 4 + in corner
|
||||||
// Draw - on top and bottom
|
// Draw - on top and bottom
|
||||||
|
@ -168,13 +234,16 @@ func Draw(
|
||||||
for j := key.NewX; j <= key.NewX+key.NewW; j++ {
|
for j := key.NewX; j <= key.NewX+key.NewW; j++ {
|
||||||
if i == key.NewY || i == key.NewY+key.NewH {
|
if i == key.NewY || i == key.NewY+key.NewH {
|
||||||
if j == key.NewX || j == key.NewX+key.NewW {
|
if j == key.NewX || j == key.NewX+key.NewW {
|
||||||
|
// Draw corner
|
||||||
table[i][j] = "+"
|
table[i][j] = "+"
|
||||||
} else if table[i][j] != "+" {
|
} else if table[i][j] != "+" {
|
||||||
|
// Draw top/bottom
|
||||||
table[i][j] = "-"
|
table[i][j] = "-"
|
||||||
}
|
}
|
||||||
} else if i == key.NewY+key.NewH/2 {
|
} else if i == key.NewY+key.NewH/2 {
|
||||||
// Write key in the middle
|
// Write key in the middle
|
||||||
if j == key.NewX || j == key.NewX+key.NewW {
|
if j == key.NewX || j == key.NewX+key.NewW {
|
||||||
|
// Draw left/right
|
||||||
table[i][j] = "|"
|
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 {
|
} 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
|
// Only handle ASCII keyStr
|
||||||
|
|
|
@ -10,6 +10,8 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/spf13/cast"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -27,8 +29,10 @@ var (
|
||||||
flagQMKInfoFile string
|
flagQMKInfoFile string
|
||||||
flagQMKKeymapFile string
|
flagQMKKeymapFile string
|
||||||
flagOutput string
|
flagOutput string
|
||||||
|
flagPrintOutput bool
|
||||||
flagPrintLayout bool
|
flagPrintLayout bool
|
||||||
flagPrintLayer bool
|
flagPrintLayer bool
|
||||||
|
flagAllowLayers string
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -38,8 +42,10 @@ func init() {
|
||||||
flag.StringVar(&flagQMKInfoFile, "qmk-info-file", "", "QMK info json file")
|
flag.StringVar(&flagQMKInfoFile, "qmk-info-file", "", "QMK info json file")
|
||||||
flag.StringVar(&flagQMKKeymapFile, "qmk-keymap-file", "", "QMK keymap json file")
|
flag.StringVar(&flagQMKKeymapFile, "qmk-keymap-file", "", "QMK keymap json file")
|
||||||
flag.StringVar(&flagOutput, "out", "", "Output 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(&flagPrintLayout, "print-layout", false, "Print layout name")
|
||||||
flag.BoolVar(&flagPrintLayer, "print-layer", false, "Print layer 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() {
|
func main() {
|
||||||
|
@ -50,8 +56,22 @@ func main() {
|
||||||
log.Printf("flagQMKInfoFile: [%s]\n", flagQMKInfoFile)
|
log.Printf("flagQMKInfoFile: [%s]\n", flagQMKInfoFile)
|
||||||
log.Printf("flagQMKKeymapFile: [%s]\n", flagQMKKeymapFile)
|
log.Printf("flagQMKKeymapFile: [%s]\n", flagQMKKeymapFile)
|
||||||
log.Printf("flagOutput: [%s]\n", flagOutput)
|
log.Printf("flagOutput: [%s]\n", flagOutput)
|
||||||
|
log.Printf("flagPrintOutput: [%v]\n", flagPrintOutput)
|
||||||
log.Printf("flagPrintLayout: [%v]\n", flagPrintLayout)
|
log.Printf("flagPrintLayout: [%v]\n", flagPrintLayout)
|
||||||
log.Printf("flagPrintLayer: [%v]\n", flagPrintLayer)
|
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)
|
qmkInfo, err := wrapGetQMKInfo(flagQMKKeyboard, flagQMKInfoFile, flagDebug)
|
||||||
|
@ -68,12 +88,13 @@ func main() {
|
||||||
qmkInfo.Layouts,
|
qmkInfo.Layouts,
|
||||||
qmkKeymap,
|
qmkKeymap,
|
||||||
DrawConfig{
|
DrawConfig{
|
||||||
|
AllowLayers: allowLayers,
|
||||||
PrintLayout: flagPrintLayout,
|
PrintLayout: flagPrintLayout,
|
||||||
PrintLayer: flagPrintLayer,
|
PrintLayer: flagPrintLayer,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if flagDebug {
|
if flagPrintOutput {
|
||||||
log.Printf("Result:\n%s\n", result)
|
fmt.Println(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Optional
|
// Optional
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
||||||
| ESC CTRL | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
|
| 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 | |
|
| | OPT | CMD | SPACE | CMD | OPT | |
|
||||||
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
|
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
|
||||||
|
@ -29,13 +29,13 @@
|
||||||
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
||||||
| CAPS | VOLD | VOLU | MUTE | | | | | HOME | PGUP | | | |
|
| CAPS | VOLD | VOLU | MUTE | | | | | HOME | PGUP | | | |
|
||||||
+-------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---------+-------+
|
+-------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---------+-------+
|
||||||
| | RGBH | RGBS | RGBV | | | | | END | PGDN | | | MO(3) |
|
| | RGBH | RGBS | RGBV | | | | | END | PGDN | | | L3 |
|
||||||
+-----------+-----+-+-----+-----+-+-------+-------+-------+-------+-------+-------+-----+-+-------+-+-------+---+-------+
|
+-----------+-----+-+-----+-----+-+-------+-------+-------+-------+-------+-------+-----+-+-------+-+-------+---+-------+
|
||||||
| | | | | RGBTO | RGBMO | |
|
| | | | | RGBTO | RGBMO | |
|
||||||
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
|
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
|
||||||
|
|
||||||
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|
||||||
| BOOT | EE_CLR| | | | | | | | | | | | | |
|
| BOOT | EECLR | | | | | | | | | | | | | |
|
||||||
+-------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
|
+-------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
|
||||||
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
||||||
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
+-----------+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-+-----+-----------+
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
"KC_DOT",
|
"KC_DOT",
|
||||||
"KC_SLSH",
|
"KC_SLSH",
|
||||||
"SC_RSPC",
|
"SC_RSPC",
|
||||||
"MO(1)",
|
"MO(LAYER_COMMON)",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_LOPT",
|
"KC_LOPT",
|
||||||
"KC_LCMD",
|
"KC_LCMD",
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
"KC_F11",
|
"KC_F11",
|
||||||
"KC_F12",
|
"KC_F12",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"TG(2)",
|
"TG(LAYER_RARELY)",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"TO(0)",
|
"TO(LAYER_QWERTY)",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_BRMD",
|
"KC_BRMD",
|
||||||
"KC_BRMU",
|
"KC_BRMU",
|
||||||
|
@ -185,7 +185,7 @@
|
||||||
"KC_PGDN",
|
"KC_PGDN",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_TRNS",
|
"KC_TRNS",
|
||||||
"MO(3)",
|
"MO(LAYER_RECOVERY)",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
"KC_NO",
|
"KC_NO",
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -1,3 +1,5 @@
|
||||||
module github.com/haunt98/qmk_keymaps
|
module github.com/haunt98/qmk_keymaps
|
||||||
|
|
||||||
go 1.20
|
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