Skip to content

Commit

Permalink
feat: Add parsing for tap-toggle layers
Browse files Browse the repository at this point in the history
  • Loading branch information
m-demare authored and caksoylar committed Apr 5, 2024
1 parent 7e8f84e commit 0c8c433
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
8 changes: 8 additions & 0 deletions CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,14 @@ _Type:_ `str`

_Default:_ `"toggle"`

#### `tap_toggle_label`

Display text to place in hold field for tap-toggle (TT) keys.

_Type:_ `str`

_Default:_ `"tap-toggle"`

#### `trans_legend`

Legend to output for transparent keys.[^2]
Expand Down
3 changes: 3 additions & 0 deletions keymap_drawer/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,9 @@ class ParseConfig(BaseSettings, env_prefix="KEYMAP_", extra="ignore"):
# display text to place in hold field for toggled keys
toggle_label: str = "toggle"

# display text to place in hold field for toggled keys
tap_toggle_label: str = "tap-toggle"

# legend to output for transparent keys
trans_legend: str | dict = {"t": "▽", "type": "trans"}

Expand Down
5 changes: 5 additions & 0 deletions keymap_drawer/parse/qmk.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class QmkJsonParser(KeymapParser):
_lt_re = re.compile(r"LT\((\d+), *(\S+)\)")
_osm_re = re.compile(r"OSM\(MOD_(\S+)\)")
_osl_re = re.compile(r"OSL\((\d+)\)")
_tt_re = re.compile(r"TT\((\d+)\)")

def __init__(
self,
Expand Down Expand Up @@ -77,6 +78,10 @@ def mapped(key: str) -> LayoutKey:
to_layer = int(m.group(1).strip())
self.update_layer_activated_from([current_layer], to_layer, key_positions)
return LayoutKey(tap=self.layer_names[to_layer], hold=self.cfg.sticky_label)
if m := self._tt_re.fullmatch(key_str): # tap-toggle layer
to_layer = int(m.group(1).strip())
self.update_layer_activated_from([current_layer], to_layer, key_positions)
return LayoutKey(tap=self.layer_names[to_layer], hold=self.cfg.tap_toggle_label)
return mapped(key_str)

def _parse(self, in_str: str, file_name: str | None = None) -> tuple[dict, KeymapData]:
Expand Down

0 comments on commit 0c8c433

Please sign in to comment.