有没有一种方法可以模拟在Windows7上从Perl脚本中按功能键(F1-F12)?
我有一个程序需要按F7才能停止。
我试过终止程序进程,但这并不能彻底停止进程。
最佳答案
如果你在windows上,Win32::GuiTest可以做你想做的事。他们使用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
several examples是转义字符(在终端上用
^[
表示)。5b是[
,依此类推。所以可以将这些字符串打印到程序的输入或tty。例如,f8将是“\x{1b}[19~”。为什么F1-F4不同?所有这些都基于ASCII 1b,它只有四个功能键。后面的VT100 terminal加上了其余的。
可能有个模块可以帮你处理,但我找不到。