Reputation: 1
I wrote a simple script to track keys being pressed and released as shown below:
$j = 0
while($j -lt 10000){
$PressedKey = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown,IncludeKeyUp")
$PressedKey
continue
}
When I run it and start pressing keys, it works. However when I switch to a different Instance or Window and start pressing keys, it stops giving an output. I assume this is because it stops tracking the keystrokes, can't produce an output, or both. Does anyone know any good alternatives to ReadKey() to how to make it track keystrokes on other Windows and/or Instances
I believe this is PowerShell 7
thx.
Upvotes: 0
Views: 58
Reputation: 13453
The object $Host
refers to the current PowerShell console host. Therefore, connecting to the ReadKey()
method will only return the current PowerShell host keystrokes, and that is the point of the ReadKey()
method, return the current host's keystrokes so that other functions (e.g. PSReadline
) can act on them.
If you want to globally respond to keystrokes across applications, I personally recommend AutoHotKey. It is fairly easy to create a script that will detect a key combination and perform an action. It is fast and easy to use and I have dozens of key combinations that I have scripted and use every day.
It is possible to create PowerShell scripts that globally hook into keyboard keystrokes and respond to events, but this is beyond the scope of a SO post.
Upvotes: 1