Skip to content

v2026.07.13

Latest

Choose a tag to compare

@o-sdn-o o-sdn-o released this 14 Jul 22:42
86b7899

GitHub all current

Changes

  • Provide uniform access to keyboard key properties from Lua. #957
    ObjectID/ClassID Role Methods Method description
    keys Keyboard key properties vtm.keys[string key_name] -> key_record Get keyboard key properties.
    Available properties:
    keycode(int): ALL (Abstract Latin Layout) specific key code
    generic(string): Generic key name (no distinction between left/right/numpad)
    virtcod(int): Virtual key code
    scancod(int): Scancode
    extflag(bool): Extended flag (abstract)
    is_editkey(bool): Involvement in text editing
    is_functional(bool): Functional or not
    <config>
        <events>
          <terminal>
              <script=ExclusiveKeyboardMode on="preview: Ctrl-Alt | Alt-Ctrl"/>
              <script="vtm.gear.SetHandled()" on="Esc"/>
              <script                         on="-Esc">
                  vtm.terminal.ClearSelection()
                  -- No more magic key codes (e.g. keycode=118)
                  local EscCode=vtm.keys["Esc"].keycode;
                  -- log("EscCode=", EscCode);
                  vtm.terminal.KeyEvent({ virtcod=0x1b, scancod=1, keystat=1, cluster='\\u{1b}', keycode=EscCode, shifted='\\u{1b}', unshift='\\u{1b}' },
                                        { virtcod=0x1b, scancod=1, keystat=0, cluster='\\u{1b}', keycode=EscCode, shifted='\\u{1b}', unshift='\\u{1b}' })
              </script>
          </terminal>
        </events>
    </config>
  • Fix 'vtm.*' objects referencing in Lua.
    Test:
    <config>
      <events>
          <desktop>
              <script on="F1">
                  local cfg=vtm.config
                  local term=vtm.terminal
                  log("/config/gui/winstate=", cfg["/config/gui/winstate"]);
                  log("term.CodePage()=", term.CodePage());
                  log("term.CodePage=", term.CodePage);
                  log("term=", term);
                  log("terminal.CodePage()=", terminal.CodePage());
                  log("terminal=", terminal);
                  log("vtm.gear=", vtm.gear);
                  log("tostring(term)=", tostring(term))
                  log("tostring(vtm.gear)=", tostring(vtm.gear))
              </script>
          </desktop>
      </events>
    </config>