如何读取R(交互模式)中的任意按键,例如上移或上移,并返回按下的实际按键?
理想情况下,与设备无关,独立于操作系统的方式(我在Mac OS 10.8.x上)
我正在谈论读取任何实际的任意按键,包括光标键或修饰键,因此scan()
和readline()
将不会这样做 - 光标键被交互式控制台拦截。而不只是waiting for a keypress。
目前尚不清楚这是简单的还是与设备无关的。我查看了文档:
interactive()
,options('device')
,R_INTERACTIVE_DEVICE,R_DEFAULT_DEVICE
我读了R-internals,其中说“图形设备......可以处理请求/机会采取行动,例如......等待事件,例如鼠标点击或按键。” 但它没有多说。
我尝试了grDevices::getGraphicsEvent()
但得到了:
> getGraphicsEvent('waiting for cursor keys', onKeybd=function(key) { print(key) } )
Error in setGraphicsEventEnv(which, as.environment(list(...))) :
this graphics device does not support event handling
如果你挖得足够深,你可以使用特定于工具包和/或特定于操作系统的黑客攻击,例如与石英。 This guy建议Sudoku::playSudoku()
,它使用Quartz来处理鼠标和键输入。我有石英。但是特定于Quartz的解决方案不适用于Windows。这一切看起来都很混乱。
有人可以揭开这一切的神秘面纱吗?