我正试图写一个克隆的鬼脚本,我不知道他们是怎么做到的,所以你可以输入到图形窗口,和按键显示在终端窗口,好像你键入他们开始所以在接收到keyrease事件后,我可以将字符以某种方式填充到stdin中,以便用普通的文件读取代码读取吗或者,我必须在stdin前面创建自己的内部缓冲区,这样我才能在其中破解新的字符或者有什么简单的方法可以将键盘事件从我的应用程序窗口映射到Xterm?
我愿意做这项工作,但我甚至不知道我在找什么帮忙?!!

最佳答案

我不认为gs会这么做(至少在linux上是这样)。
我尝试从SSH会话运行到我的linux机器,并将焦点切换到X11窗口,该窗口弹出渲染图像(tiger),我在那里按下的键不会转到远程主机上的应用程序。
strace的(结尾)显示GS等待stdin——读取fd=0
读取(3,“}如果\n psuserparams readonly p”…,4096)=3258
刹车(0x1124000)=0x1124000
读取(3,“,4096)=0
关闭(3)=0
munmap(0x7f8ccae5000,4096)=0
轮询([{fd=4,events=POLLIN | POLLOUT}),1,-1)=1([{fd=4,revents=POLLOUT})
writev(4,[{“+\2\1\0”,4},{NULL,0},{”“,0}],3)=4
轮询([{fd=4,events=POLLIN}),1,-1)=1([{fd=4,revents=POLLIN}])
读取(4,“\1\1”\0\0\0\0\0\1\0\200\0\0\0\0\1\0\0\0\264\2\0\0008\0A\2\4\0\0\0”,4096)=32
读取(4,0xc9bd54,4096)=-1 EAGAIN(资源暂时不可用)
fstat(1,{st_mode=S|IFREG | 0644,st_size=143204,…})=0
mmap(空,4096,PROT|u READ|PROT|u WRITE,MAP|u PRIVATE|MAP|u ANONYMOUS,-1,0)=0x7f8ccae5000
写入(1,“GS>”,3GS>)=3
读取(0,…未完成。。。
为了让按键(Ctrl-C)生效,我不得不将焦点切换回ssh窗口当焦点是图像X11窗口时,我尝试了“退出”和ctrl-C。

关于c - 如何将X11键盘事件像ghostscript一样路由到stdin中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6476116/

10-08 22:29