simple_wiimote 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/simple_wiimote.rb +76 -0
  2. metadata +66 -0
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: simple_wiimote.rb
4
+
5
+ require 'cwiid'
6
+
7
+ class WiiMote
8
+ attr_accessor :active
9
+ end
10
+
11
+ class SimpleWiimote
12
+
13
+ attr_accessor :terminator, :events, :led, :rumble
14
+
15
+ def initialize()
16
+
17
+ puts 'Put Wiimote in discoverable mode now (press 1+2)...'
18
+ @wiimote = WiiMote.new
19
+ @wiimote.rpt_mode = WiiMote::RPT_BTN | WiiMote::RPT_ACC
20
+ def @wiimote.active=(bool)
21
+ @active = bool
22
+ end
23
+
24
+ @wiimote.active = false
25
+ @events = {}
26
+ @events[WiiMote::BTN_PLUS] = -> {puts 'you pressed plus'}
27
+ @events[WiiMote::BTN_UP] = -> {puts 'you pressed up'}
28
+ @events[WiiMote::BTN_DOWN] = -> {puts 'you pressed down'}
29
+ @events[WiiMote::BTN_RIGHT] =-> {puts 'you pressed right'}
30
+ @events[WiiMote::BTN_LEFT] = -> {puts 'you pressed left'}
31
+ @events[WiiMote::BTN_HOME] = -> {puts 'you pressed home'}
32
+ @events[WiiMote::BTN_MINUS] = -> {puts 'you pressed minus'}
33
+ @events[WiiMote::BTN_A] = -> {puts 'you pressed a'}
34
+ @events[WiiMote::BTN_B] = -> {puts 'you pressed b'}
35
+ @events[WiiMote::BTN_1] = -> {puts 'you pressed 1'}
36
+ @events[WiiMote::BTN_2] = -> {puts 'you pressed 2'}
37
+
38
+ @terminator = WiiMote::BTN_A
39
+ end
40
+
41
+ def activate()
42
+
43
+ begin
44
+ @wiimote.get_state
45
+ @wiimote.active = true
46
+ yield(@wiimote) if block_given?
47
+
48
+ old_btn ||= @wiimote.buttons
49
+ if @wiimote.buttons > 0 then
50
+ if @wiimote.buttons != old_btn then
51
+ r = @events[@wiimote.buttons]
52
+ r.call if r
53
+ old_btn = @wiimote.buttons
54
+
55
+ else
56
+ sleep 0.2
57
+ old_btn = 0
58
+ end
59
+ end
60
+ end until (@wiimote.buttons & @terminator ) != 0 || !@wiimote.active
61
+ end
62
+
63
+ def led=(val)
64
+ @led = val
65
+ @wiimote.led = val
66
+ end
67
+
68
+ def rumble=(bool)
69
+ @rumble = bool
70
+ @wiimote.rumble = bool
71
+ end
72
+
73
+ def close()
74
+ @wiimote.close
75
+ end
76
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_wiimote
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - James Robertson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-12-16 00:00:00 +00:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: cwiid
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ description:
28
+ email:
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files: []
34
+
35
+ files:
36
+ - lib/simple_wiimote.rb
37
+ has_rdoc: true
38
+ homepage:
39
+ licenses: []
40
+
41
+ post_install_message:
42
+ rdoc_options: []
43
+
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ requirements: []
59
+
60
+ rubyforge_project:
61
+ rubygems_version: 1.5.2
62
+ signing_key:
63
+ specification_version: 3
64
+ summary: simple_wiimote
65
+ test_files: []
66
+