diff --git a/src/tfscript/__init__.py b/src/tfscript/__init__.py index 6627375..e255836 100644 --- a/src/tfscript/__init__.py +++ b/src/tfscript/__init__.py @@ -177,12 +177,12 @@ def listHold(key, options): oldBindOrAlias = bindOrAlias bindOrAlias = 'alias' - ret = impulse(f'+{key}_press', options["press"]) +\ - impulse(f'-{key}_press', options["release"]) + plus = impulse(f'+{key}_press', options["press"]) + minus = impulse(f'-{key}_press', options["release"]) bindOrAlias = oldBindOrAlias - ret += f'{bindOrAlias} {key} "+{key}_press"\n' + ret = plus + minus + f'{bindOrAlias} {key} "+{key}_press"\n' return ret @@ -201,9 +201,10 @@ def toggle(key, instruction): return ret def double(key, options): - primaryAction = options["primary"] + typeName = options["type"] + primaryAction = {typeName: options.pop("primary")} - secAction = options["secondary"] + secAction = {typeName: options.pop("secondary")} mainStr = f'{key}_main' altStr = f'{key}_alt' @@ -213,11 +214,24 @@ def double(key, options): global bindOrAlias oldBindOrAlias = bindOrAlias bindOrAlias = "alias" - recursiveCode = branch(mainStr, primaryAction) +\ - branch(altStr, secAction) + + mainCode = branch(mainStr, primaryAction) + altCode = branch(altStr, secAction) + cancelBoth = ("cancel" in options and options["cancel"] == "both") + if cancelBoth: + if isinstance(primaryAction["hold"], dict): + lines = mainCode.splitlines() + minusCmd = lines[1] + _, minusStr, previousMinus = minus.split(' ', 2) + newMinus = previousMinus[0:-2] + ';' + + '"\n' + lines[1] = f'alias {minusStr} "{newMinus}"\n' + else: + # simple + pass + bindOrAlias = oldBindOrAlias - ret = recursiveCode +\ + ret = mainCode + altCode +\ f'alias {pShiftStr} "{bindOrAlias} {key} {altStr}"\n' +\ f'alias {mShiftStr} "{bindOrAlias} {key} {mainStr}"\n'+\ f'{bindOrAlias} {key} "{mainStr}"\n'