From 99e368e4cbb4f82f4e9461c3fd43054add0c3c37 Mon Sep 17 00:00:00 2001 From: Rasmus Lindroth Date: Mon, 24 Oct 2022 19:00:35 +0200 Subject: [PATCH] 0.0.16 (#37) * cleanup leftover print * fix jumping keyboard heading * fix enterDown * remove old commented code * workaround for #26 * update version * fix selected layout in html Co-authored-by: elder-n00b --- i3keys.go | 2 +- i3parse/parse.go | 6 +++++- json/output.go | 34 ---------------------------------- web/handler.go | 12 +++++++----- web/res/index.css | 33 ++++++++++++++++++++------------- web/res/index.gohtml | 14 +++++++------- web/res/index.js | 3 +-- 7 files changed, 41 insertions(+), 63 deletions(-) diff --git a/i3keys.go b/i3keys.go index 8eff1b4..1fdf2c8 100644 --- a/i3keys.go +++ b/i3keys.go @@ -11,7 +11,7 @@ import ( "github.com/RasmusLindroth/i3keys/web" ) -const version string = "0.0.15" +const version string = "0.0.16" func helpText(exitCode int) { fmt.Print("Usage:\n\n\ti3keys [-i|-s] [arguments]\n") diff --git a/i3parse/parse.go b/i3parse/parse.go index 6b66d3e..fdcf273 100644 --- a/i3parse/parse.go +++ b/i3parse/parse.go @@ -322,7 +322,11 @@ func parseBindingParts(parts []string) ([]string, string, string) { if mod[0] == '$' { continue } - modifiers[i] = strings.Title(mod) + mod = strings.Title(mod) + if mod == "Alt" { + mod = "Mod1" // rough fix for #26 + } + modifiers[i] = mod } var cmdParts []string diff --git a/json/output.go b/json/output.go index 1b260e0..8765f14 100644 --- a/json/output.go +++ b/json/output.go @@ -37,42 +37,8 @@ func Output(wm string, layout string) { } modifiers := xlib.GetModifiers() - /* - groups := i3parse.GetModifierGroups(keys) - var keyboards []keyboard.Keyboard - for _, group := range groups { - kb, err := keyboard.MapKeyboard(layout, group, modifiers) - if err == nil { - keyboards = append(keyboards, kb) - } - } - */ var jsonBoards []KeyboardModesJSON - /* - defaultBoard := KeyboardModesJSON{ - Name: "Default", - } - for _, kb := range keyboards { - b := KeyboardModifierJSON{ - Modifiers: kb.Modifiers, - } - for i, keyRow := range kb.Keys { - for _, key := range keyRow { - binding := KeyJSON{ - Row: i, - Modifier: key.Modifier, - InUse: key.InUse, - Symbol: key.Symbol, - Command: key.Binding.Command, - } - b.Keys = append(b.Keys, binding) - } - } - defaultBoard.ModifierGroups = append(defaultBoard.ModifierGroups, b) - } - jsonBoards = append(jsonBoards, defaultBoard) - */ for _, mode := range modes { groups := i3parse.GetModifierGroups(mode.Bindings) diff --git a/web/handler.go b/web/handler.go index d47a832..a0c4e59 100644 --- a/web/handler.go +++ b/web/handler.go @@ -41,7 +41,6 @@ type KeyInfo struct { Key_size string Key_empty bool Key_usage int - Key_enter int Key keyboard.Key } @@ -65,12 +64,12 @@ var layoutMaps = LayoutMaps{ } func (h Handler) keyInfo(kbd keyboard.Keyboard) <-chan KeyInfo { - //kbLayout := h.Data.Layouts[h.Data.LayoutName] kbLayoutMap := h.Data.LayoutMaps[h.Data.LayoutName] ki := make(chan KeyInfo) go func() { enterHit := 0 + enterKey := keyboard.Key{} for i, rowMap := range kbLayoutMap { k := 0 for j, key_size := range rowMap { @@ -87,13 +86,16 @@ func (h Handler) keyInfo(kbd keyboard.Keyboard) <-chan KeyInfo { } if key_size == "enterUp" { enterHit = gHit + enterKey = key } k++ } if key_size == "enterDown" { gHit = enterHit + ki <- KeyInfo{i, j, k, key_size, false, gHit, enterKey} + } else { + ki <- KeyInfo{i, j, k, key_size, key_empty, gHit, key} } - ki <- KeyInfo{i, j, k, key_size, key_empty, gHit, enterHit, key} } } close(ki) @@ -125,10 +127,10 @@ func readResource(filename string) (string, bool) { pathname = realName(path.Join(pathname, filename)) if buf, err := os.ReadFile(pathname); err == nil { - println("read resource from '" + pathname + "'") + //println("read resource from '" + pathname + "'") return string(buf), true } else { - println("could not read resource from '" + pathname + "', using built-in") + //println("could not read resource from '" + pathname + "', using built-in") return "", false } } diff --git a/web/res/index.css b/web/res/index.css index 24edb8c..431da58 100644 --- a/web/res/index.css +++ b/web/res/index.css @@ -116,16 +116,17 @@ body { display: inline; } + #keyboard-holder { margin-left: var(--grid-gap-h); } -#keyboard-holder > div { +.keyboard { margin-bottom: 2em; height: 100vh; } -#keyboard-holder .keyboard-heading { +.keyboard-heading { position: sticky; height: 2.25em; top: 2em; @@ -133,17 +134,22 @@ body { background-color: var(--main-bg); } -#keyboard-holder .keyboard-heading > h2 { - display: inline; +.keyboard-heading span { + font-size: x-large; + margin-right: 1ch; +} + +.keyboard-heading .mode { color: var(--main-fg-max); - margin-right: 2ch; + font-weight: bold; } -#keyboard-holder .keyboard-heading > h3 { - display: inline; +.keyboard-heading .keyb { color: var(--main-fg-dim); - font-weight: normal; - font-size: larger; +} + +.keyboard-heading .default, #toc-panel .default { + font-style: italic; } #key-info { @@ -180,11 +186,8 @@ body { } -span.default { - font-style: italic; -} -.keyboard { +.keyboard-layout { display: grid; grid-template-columns: repeat(1000, calc(var(--key-size) / 4 - 0.4vw)); grid-template-rows: repeat(6, var(--key-size)); @@ -274,6 +277,10 @@ span.default { margin-top: calc(-1 * var(--grid-gap-v) - 1.25px); /* still needs the .25 ? */ } +.enterDown > .txt { + display: none; +} + .row-0 { grid-row-start: 1; } diff --git a/web/res/index.gohtml b/web/res/index.gohtml index 8dc7018..3e6f8ff 100644 --- a/web/res/index.gohtml +++ b/web/res/index.gohtml @@ -27,10 +27,10 @@
  • - {{- range $lmap_i,$lmap := .LayoutMaps -}} {{- $selected := eq $lmap_i $.LayoutName -}} - {{- end -}} @@ -52,12 +52,13 @@
    {{- range $mode_i,$mode := $layoutData -}} {{- range $keyb_i,$keyb := .Keyboards -}} -
    +
    -

    {{if ne $mode.Name ""}}{{$mode.Name}}{{else}}default{{end}}

    -

    {{if ne $keyb.Name ""}}{{$keyb.Name}}{{else}}no modifiers{{end}}

    + {{if ne $mode.Name ""}}{{$mode.Name}}{{else}}default{{end}} + {{if ne $keyb.Name ""}}{{$keyb.Name}}{{else}}no modifiers{{end}} +
    -
    +
    {{- $usage_classes := mkslice "" "key-modifier" "key-used" -}} {{- range keyinfo $keyb -}} {{- $usage := index $usage_classes .Key_usage -}} @@ -81,7 +82,6 @@
    - diff --git a/web/res/index.js b/web/res/index.js index 7c283e6..0b1931e 100644 --- a/web/res/index.js +++ b/web/res/index.js @@ -82,7 +82,7 @@ function keyCaption(s) { function splitSymbol(s) { return s - .replaceAll(/grave|acute|left|right|slash/g," $&") // TODO: smarter, more complete regex + .replaceAll(/grave|acute|left|right|slash/g," $&") .replaceAll("_"," ") ; } @@ -139,7 +139,6 @@ keyboardHolder.addEventListener('mouseover', event => { for (el of keyElements) { if (el == event.target) { if (key = event.target.firstChild) { // key is actually .txt - // TODO: somehow generate from range document.getElementById('key-command').innerHTML=key.dataset.bindcommand; document.getElementById('key-symbol').innerHTML=key.dataset.symbol; document.getElementById('key-symbolcode').innerHTML="0x"+parseInt(key.dataset.symbolcode).toString(16)+" ("+key.dataset.symbolcode+")";
    command
    identifier
    symbol