RubyCocoa で AppleRemote リッスンして Safari のプレゼンツールうごかす
http://rubycocoa.com/appleremote/1 にあるとおりに framework をビルドして配置
require "osx/cocoa"
include OSX
OSX.require_framework "AppleRemote"
OSX.ns_import :AppleRemote
class AppleRemoteDelegate < NSObject
addRubyMethod_withType('appleRemoteButton:pressedDown:', 'v@:ii')
def appleRemoteButton_pressedDown(buttonIdentifier, pressedDown)
puts "button #{buttonIdentifier}, pressed #{pressedDown}"
return if pressedDown == 0
case buttonIdentifier
when 1 # down
call_safari_js "$presentation.fold($presentation.page);$presentation.scrollTo($presentation.pages[$presentation.page]);"
when 3, 4 # middle, right
call_safari_js "$presentation.next();"
when 5 # left
call_safari_js "$presentation.prev();"
end
end
def call_safari_js(script)
errinfo = NSDictionary.alloc.init
NSAppleScript.alloc.initWithSource(<<-EOS).executeAndReturnError(errinfo)
tell application "Safari"
do JavaScript "#{script.gsub(/¥n/, ";")}" in document 1
end tell
EOS
end
end
a = AppleRemote.alloc.init
d = AppleRemoteDelegate.alloc.init
a.setDelegate d
a.startListening 0
trap (:INT) { exit }
NSApplication.sharedApplication.runrbosa で JS 送ろうとおもったけど、in document の書きかたがわからなかったので NSAppleScript を読んでる。一応ストレスなしにうごくっぽい