Gem Ruby 有没有模拟键盘操作的 gem?

loveky · 2013年04月27日 · 最后由 sevk 回复于 2013年05月15日 · 4996 次阅读

比如模拟用户按下了 ctrl+c?

linux 下有无类似的系统命令?

你要干什么呢,输出 Ctrl+c 可以这样输出:print "\003",但是这样可能不会出现你所期望的结果——向前台进程发送一个 SIGINT,因为这个是终端驱动程序干的事情,除非你用 ruby 写实现个终端,否则 ruby 干不了这事,什么编程语言都干不了

是在什么场景用啊? 应该有啊,比如打开 irb,输入 ctrl+c,就显示^C

搜一下应该会有很多吧 http://stackoverflow.com/questions/7297753/how-to-capture-a-key-press-in-ruby http://www.ruby-doc.org/stdlib-2.0/libdoc/curses/rdoc/Curses.html

#1 楼 @lululau #2 楼 @Tony612

是这样的,cygwin 里默认没有 clear 命令,但是可以通过 crtrl+L 清屏,我想写一个 clear 命令,代替用户发送 ctrl+L 消息实现清屏效果。

system( 'cls' ) || system( 'clear' ) || system( "cmd", "/c", "cls" )

猜的,没试过

#4 楼 @qhwa

已经试过了。。。均不 work

6 楼 已删除

print "\x1b\x5b\x48\x1b\x5b\x32\x4a"

#7 楼 @lululau Cool man!

ruby -e 'print "\x1b\x5b\x48\x1b\x5b\x32\x4a"' works!

#7 楼 @lululau 你的控制字符是怎么来的?

s=WIN32OLE.new("WScript.Shell")
p s.AppActivate("SketchUp") # return is true ...
sleep(5)
p s.SendKeys("y") # should trigger Y shortcut
sleep(5)

win32- sendkey: http://stackoverflow.com/questions/6908662/sending-ctrlc-using-sendkeys-in-ruby

浏览器里面 sendkey : https://github.com/markgandolfo/send-keys

linux 下面 sendkey 没找到 ...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号