我有一個小控制檯應用程序,其中包括檢查另一個操作的狀態。一秒鐘後,它使用Term :: ReadKey檢查按鍵。如果按下'r'鍵,則刷新顯示屏:如何確定F15是否被按下?
{ # generate display ...
print "Press 'r' to refresh, any other key to exit: ";
my $resp = readkey();
print $resp;
redo if $resp =~ /r/i;
}
exit;
sub readkey {
my $key;
ReadMode('cbreak');
while (not defined $key) {
if (defined ($key = ReadKey(-1))) {
exit if $key =~ /\cC/i; # allow Ctrl-C to behave normally
return $key;
} else {
sleep 1;
}
}
ReadMode('normal');
}
這一切完全按照預期工作。但是,我也使用Caffeine來保持我的Win 7顯示屏不進入睡眠狀態。該實用程序通過每59秒模擬一次F15的按鍵來工作,因此絕不允許屏幕保護程序啓動。雖然咖啡因的方法非常糟糕,但它對我來說多年來一直很好。但是,就像Windows一樣,我的控制檯應用程序也會將F15的模擬按鍵讀取爲真正的按鍵,導致控制檯應用程序退出。如果我能匹配F15,我可以將它濾掉。所以,我的問題:
如何確定F15是否被按下,使用Term :: ReadKey?
這是在Windows 7 Pro,草莓5.12.3,Term :: ReadKey v。2.30.02。我知道可能有一個重要的x-y problem組件對我的問題,我歡迎其他解決方案,但我很好奇如何做這件事,我可以看到爲什麼我可能想看看什麼時候功能鍵被按下的其他情形。)
感謝@ikegami,那將令人欽佩的服務。 [另外,感謝回答問題儘管其x-y性質:)] – Twixi