0

I'm making a macro keyboard with my rasperry pico and I'm trying to program a button that would automatically launch a timer using a powershell script. The powershell script is working correctly, and with a keypress I can automatically open the run dialog and enter it, but I can't execute it emulating enter. It works when i press enter with my real kb though. I tried adding delay but it still doesnt work... Any idea to make it work or maybe an alternative ? Thanks

if not s1.value:  # Button pressed (active low)
    keyboard.press(Keycode.WINDOWS)
    keyboard.press(Keycode.R)
    keyboard.release_all() 
    phrase = 'powershell -NoExit -Command "& {$sw=[Diagnostics.Stopwatch]::StartNew();while($true){Write-Host $sw.Elapsed.ToString(\'hh\:mm\:ss\.fff\');Start-Sleep -Milliseconds 1;if($Host.UI.RawUI.KeyAvailable){$null=$Host.UI.RawUI.ReadKey(\'NoEcho,IncludeKeyDown\');break;}}}"'
for char in phrase:
    keyboard.write(char) 

time.sleep(0.5)
keyboard.press(Keycode.ENTER)
keyboard.release_all()
time.sleep(0.3)  # Debounce delay

URBLO
  • 1

1 Answers1

0

Here is my solution to the problem for anyone having the same problem, it is heavy and slow to do because it is a big command but it works:

if not s1.value:  # Button pressed (active low)
    keyboard.press(Keycode.WINDOWS)
    keyboard.press(Keycode.R)
    keyboard.release_all()
    time.sleep(0.1)
    command = [Keycode.P, Keycode.O, Keycode.W, Keycode.E, Keycode.R, Keycode.S, Keycode.H, Keycode.E,Keycode.L,Keycode.L, Keycode.SPACE, Keycode.MINUS, Keycode.N, 
               Keycode.O, Keycode.E, Keycode.X, Keycode.I, Keycode.T, Keycode.SPACE, Keycode.MINUS, Keycode.C, Keycode.O, Keycode.M, Keycode.M, Keycode.A, Keycode.N, 
               Keycode.D, Keycode.SPACE, Keycode.SHIFT, Keycode.QUOTE, Keycode.SHIFT, Keycode.SEVEN, Keycode.SPACE, Keycode.SHIFT, Keycode.LEFT_BRACKET, Keycode.SHIFT, 
               Keycode.FOUR, Keycode.S, Keycode.W, Keycode.EQUALS, Keycode.LEFT_BRACKET, Keycode.D, Keycode.I, Keycode.A, Keycode.G, Keycode.N, Keycode.O, Keycode.S, 
               Keycode.T, Keycode.I, Keycode.C, Keycode.S, Keycode.PERIOD, Keycode.S, Keycode.T, Keycode.O, Keycode.P, Keycode.W, Keycode.A, Keycode.T, Keycode.C, 
                Keycode.H, Keycode.RIGHT_BRACKET, Keycode.SHIFT, Keycode.SEMICOLON, Keycode.SHIFT, Keycode.SEMICOLON, Keycode.S, Keycode.T, Keycode.A, Keycode.R, 
                Keycode.T, Keycode.N, Keycode.E, Keycode.W, Keycode.SHIFT, Keycode.NINE, Keycode.SHIFT, Keycode.ZERO, Keycode.SEMICOLON, Keycode.W, Keycode.H, 
                Keycode.I, Keycode.L, Keycode.E, Keycode.SHIFT, Keycode.NINE,  Keycode.SHIFT, Keycode.FOUR, Keycode.T, Keycode.R, Keycode.U, Keycode.E, 
                Keycode.SHIFT, Keycode.ZERO, Keycode.SHIFT, Keycode.LEFT_BRACKET, Keycode.W, Keycode.R, Keycode.I, Keycode.T, Keycode.E, Keycode.MINUS, Keycode.H, 
                Keycode.O, Keycode.S, Keycode.T, Keycode.SPACE, Keycode.SHIFT, Keycode.FOUR, Keycode.S, Keycode.W, Keycode.PERIOD, Keycode.E, Keycode.L, Keycode.A, 
                Keycode.P, Keycode.S, Keycode.E, Keycode.D, Keycode.PERIOD,Keycode.T, Keycode.O, Keycode.S, Keycode.T, Keycode.R, Keycode.I, Keycode.N, Keycode.G, 
                Keycode.SHIFT, Keycode.NINE, Keycode.QUOTE, Keycode.H, Keycode.H, Keycode.BACKSLASH, Keycode.SHIFT, Keycode.SEMICOLON, Keycode.M, Keycode.M, 
                Keycode.BACKSLASH, Keycode.SHIFT, Keycode.SEMICOLON, Keycode.S, Keycode.S, Keycode.BACKSLASH, Keycode.PERIOD, Keycode.F, Keycode.F, Keycode.F,
                Keycode.QUOTE, Keycode.SHIFT, Keycode.ZERO, Keycode.SEMICOLON, Keycode.S, Keycode.T, Keycode.A, Keycode.R, Keycode.T, Keycode.MINUS, Keycode.S, Keycode.L, 
                Keycode.E, Keycode.E, Keycode.P, Keycode.SPACE, Keycode.MINUS,Keycode.M, Keycode.I, Keycode.L, Keycode.L, Keycode.I, Keycode.S, Keycode.E, Keycode.C, 
                Keycode.O, Keycode.N, Keycode.D, Keycode.S, Keycode.SPACE , Keycode.ONE, Keycode.SEMICOLON, Keycode.I, Keycode.F, Keycode.SHIFT, Keycode.NINE, 
                Keycode.SHIFT, Keycode.FOUR,Keycode.H, Keycode.O, Keycode.S, Keycode.T, Keycode.PERIOD, Keycode.U, Keycode.I, Keycode.PERIOD, 
                Keycode.R, Keycode.A, Keycode.W, Keycode.U, Keycode.I, Keycode.PERIOD, Keycode.K, Keycode.E, Keycode.Y, Keycode.A, Keycode.V, Keycode.A, 
                Keycode.I, Keycode.L, Keycode.A, Keycode.B, Keycode.L, Keycode.E, Keycode.SHIFT, Keycode.ZERO, Keycode.SHIFT, Keycode.LEFT_BRACKET, Keycode.SHIFT, Keycode.FOUR, 
                Keycode.N, Keycode.U, Keycode.L, Keycode.L, Keycode.EQUALS, Keycode.SHIFT, Keycode.FOUR, Keycode.H, Keycode.O, Keycode.S, Keycode.T, Keycode.PERIOD, Keycode.U, 
                Keycode.I,  Keycode.PERIOD, Keycode.R, Keycode.A, Keycode.W, Keycode.U, Keycode.I, Keycode.PERIOD,Keycode.R,Keycode.E,Keycode.A,Keycode.D,Keycode.K,Keycode.E,Keycode.Y, 
                Keycode.SHIFT, Keycode.NINE, Keycode.QUOTE, Keycode.N,Keycode.O, Keycode.E,Keycode.C,Keycode.H,Keycode.O, Keycode.COMMA, Keycode.I,Keycode.N,Keycode.C,
                Keycode.L,Keycode.U,Keycode.D, Keycode.E,Keycode.K,Keycode.E,Keycode.Y,Keycode.D,Keycode.O,Keycode.W,Keycode.N, Keycode.QUOTE, Keycode.SHIFT, Keycode.ZERO, 
                Keycode.SEMICOLON, Keycode.B,Keycode.R,Keycode.E,Keycode.A,Keycode.K,Keycode.SEMICOLON,
                Keycode.SHIFT, Keycode.RIGHT_BRACKET, Keycode.SHIFT, Keycode.RIGHT_BRACKET, Keycode.SHIFT, Keycode.RIGHT_BRACKET, Keycode.SHIFT, Keycode.QUOTE
                ]
    for key in command:
        if key == Keycode.SHIFT:
            keyboard.press(key)  # special characters like {, :, "
        else:
            keyboard.press(key)  # Type each character
            keyboard.release_all()
    time.sleep(3)
    keyboard.press(Keycode.ENTER)
    keyboard.release_all()       # Release both keys
    time.sleep(0.3)  # Debounce delay
URBLO
  • 1