Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

Mar 23, 2007 (Fri)

RubyCocoa で AppleRemote リッスンして Safariプレゼンツールうごかす 15:00 はてなブックマーク - 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.run

rbosa で JS 送ろうとおもったけど、in document の書きかたがわからなかったので NSAppleScript を読んでる。一応ストレスなしにうごくっぽい

 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク