Spa*_*man 11
非常依赖OS的解决方案.首先在getkey3.c中使用一些C代码:
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
void mygetch ( int *ch )
{
struct termios oldt, newt;
tcgetattr ( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr ( STDIN_FILENO, TCSANOW, &newt );
*ch = getchar();
tcsetattr ( STDIN_FILENO, TCSANOW, &oldt );
return;
}
Run Code Online (Sandbox Code Playgroud)
使用R CMD SHLIB getkey3.c编译R
这会产生getkey3.so.启动R.
> dyn.load("getkey3.so")
> .C("mygetch",as.integer(0))
Run Code Online (Sandbox Code Playgroud)
然后按一个键,它应该返回一个列表,第一个元素作为该键的ASCII码的整数值.如果需要,将其存储在R变量中.
在Ubuntu上为我工作,你可以自己为任何其他操作系统.
巴里