feat: center key when draw

main
sudo pacman -Syu 2023-07-23 06:07:23 +07:00
parent 3add32406c
commit a9bd6bcd8a
2 changed files with 40 additions and 56 deletions

View File

@ -9,32 +9,22 @@ const (
scaleY = 3
)
// https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
var mapSpecialKey = map[string]string{
"KC_TRNS": " ",
"KC_NO": " ",
"KC_LGUI": "⌘",
"KC_RGUI": "⌘",
"KC_LALT": "⌥",
"KC_RALT": "⌥",
"KC_LSFT": "⇧",
"KC_RSFT": "⇧",
"KC_TAB": "↹ ",
"KC_CAPS": "⇪",
"QK_GESC": "⎋",
"CTL_T(KC_ESC)": "⌃",
}
var mapSpecialKeyWidthLimit = map[string]int{
"KC_LGUI": 1,
"KC_RGUI": 1,
"KC_LALT": 1,
"KC_RALT": 1,
"KC_LSFT": 1,
"KC_RSFT": 1,
"KC_TAB": 1,
"KC_CAPS": 1,
"QK_GESC": 1,
"CTL_T(KC_ESC)": 1,
"KC_ENT": "ENTER",
"KC_BSPC": "BACKSPACE",
"KC_SPC": "SPACE",
"KC_CAPS": "CAPSLOCK",
"KC_LALT": "ALT",
"KC_RALT": "ALT",
"KC_LGUI": "CMD",
"KC_RGUI": "CMD",
"KC_LSFT": "SHIFT",
"KC_RSFT": "SHIFT",
// Custom
"CTL_T(KC_ESC)": "CTRL ESC",
}
func Draw(
@ -90,7 +80,6 @@ func Draw(
// Fill layout
count := 0
for _, key := range keys {
originalKeyStr := layer[count]
keyStr := layer[count]
// Process keyStr
@ -102,16 +91,21 @@ func Draw(
keyStr = strings.TrimPrefix(keyStr, "QK_")
}
keyWidthLimit, existKeyWidthLimit := mapSpecialKeyWidthLimit[originalKeyStr]
if !existKeyWidthLimit {
keyWidthLimit = key.NewW - 3
// Always have 1 padding left and 1 padding right
if len(keyStr) > key.NewW-2 {
keyStr = keyStr[:key.NewW-2]
}
// New padding to center key
padding := (key.NewW - len(keyStr)) / 2
keyWidthLimit := key.NewW - 2*padding
if len(keyStr) > keyWidthLimit {
keyStr = keyStr[:keyWidthLimit]
} else {
keyWidthLimit = len(keyStr)
}
}
for i := key.NewY; i < key.NewY+key.NewH; i++ {
for j := key.NewX; j < key.NewX+key.NewW; j++ {
@ -125,18 +119,8 @@ func Draw(
// Write key in the middle
if j == key.NewX {
table[i][j] = "|"
} else if j > key.NewX+1 && j < key.NewX+keyWidthLimit+2 {
if existKeyWidthLimit {
// Special key can be Unicode
// So ignore get single character of keyStr
if j == key.NewX+2 {
table[i][j] = keyStr
} else {
table[i][j] = ""
}
} else {
table[i][j] = string(keyStr[j-key.NewX-2])
}
} else if j >= key.NewX+padding && j < key.NewX+keyWidthLimit+padding {
table[i][j] = string(keyStr[j-key.NewX-padding])
} else {
table[i][j] = " "
}

View File

@ -1,13 +1,13 @@
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| ⎋ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | MINS | EQL | BSLS | GRV |
| GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | MINS | EQL | BSLS | GRV |
+-----------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----------+
| ↹ | Q | W | E | R | T | Y | U | I | O | P | LBRC | RBRC | BSPC |
| TAB | Q | W | E | R | T | Y | U | I | O | P | LBRC | RBRC |BACKSPACE |
+-------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| | A | S | D | F | G | H | J | K | L | SCLN | QUOT | ENT |
| CTRL ESC | A | S | D | F | G | H | J | K | L | SCLN | QUOT | ENTER |
+-----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------------+-------+
| ⇧ | Z | X | C | V | B | N | M | COMM | DOT | SLSH | ⇧ | MO(1) |
| SHIFT | Z | X | C | V | B | N | M | COMM | DOT | SLSH | SHIFT |MO(1) |
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
| | ⌥ | ⌘ | SPC | ⌘ | ⌥ | |
| | ALT | CMD | SPACE | CMD | ALT | |
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
@ -27,10 +27,10 @@
+-----------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----------+
| | | | | | | | | | | | | | |
+-------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| ⇪ | RGB_H | RGB_S | RGB_V | | | | | HOME | PGUP | | | |
| CAPSLOCK |RGB_HU |RGB_SA |RGB_VA | | | | | HOME | PGUP | | | |
+-----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------------+-------+
| | | | | | | | | END | PGDN | | | |
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+
| | | | | RGB_TOG | RGB_M | |
| | | | | RGB_TOG |RGB_MO | |
+-----------+-------+-----------+-------------------------------------------------------+-----------+-------+-----------+