使用 Perl 脚本模拟按下键盘 F 键

Imitate pressing keyboard F-keys using a Perl script

有没有一种方法可以让我在 Windows 7 上模仿按 Perl 脚本中的功能键 (F1-F12)?

我有一个程序需要按 F7 才能停止它。

我试过终止程序进程,但这并没有完全停止进程。

如果您正在 Windows、Win32::GuiTest can do what you want. They have several examples 使用 SendKeys 按功能键。

在 Unix 上,情况既容易又困难。功能键通常映射在终端中以发送多个字符。您可以找出他们使用 ord 和 sprintf 来获取十六进制值的内容(更易于使用)。这里以"kj"作为简单例子,然后F1到F7.

$ perl -wle 'while(<>) { chomp; print join ", ", map { sprintf "%x", ord } split //, $_ }'
kj
6b, 6a
^[OP
1b, 4f, 50
^[OQ
1b, 4f, 51
^[OR
1b, 4f, 52
^[OS
1b, 4f, 53
^[[15~
1b, 5b, 31, 35, 7e
^[[17~
1b, 5b, 31, 37, 7e
^[[18~
1b, 5b, 31, 38, 7e
^[[19~
1b, 5b, 31, 39, 7e

ASCII 1b 是转义字符(在终端上用 ^[ 表示)。 5b是[,依此类推。因此,您可以将这些字符串打印到程序的输入或 tty。例如,F8 将是“\x{1b}[19~”。

为什么F1-F4不一样? VT100 terminal, upon which this is all based, only had four function keys. The later VT220 添加了其余部分。

可能有一个模块可以帮你解决这个问题,但我找不到。