simple_wiimote 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+