lg-lcd 0.0.1

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.
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 theldoria
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,33 @@
1
+ # LgLcd
2
+
3
+ Ruby binding to the 'Logitech LCD SDK Package'
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'lg-lcd'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install lg-lcd
18
+
19
+ ## Usage
20
+
21
+
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
30
+
31
+ ## Copyright
32
+
33
+ Copyright (c) 2012 theldoria. See LICENSE for further details.
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'lg-lcd/lglcd'
4
+
5
+ LgLcd::LgLcd.new do |lg_lcd|
6
+ puts "-" * 80
7
+
8
+ lg_lcd.connect("Ruby") do |ctx|
9
+ puts "Connection: #{ctx.connection}"
10
+ puts "-" * 40
11
+
12
+ dd = LgLcd::Lib::DeviceDesc.new
13
+ index = 0
14
+ while 0 == ret = LgLcd::Lib.enumerate(ctx.connection, index, dd)
15
+ puts "Index: #{index}"
16
+ puts "Family id: #{dd[:family_id]}"
17
+ puts "Display name: #{dd[:display_name]}"
18
+ puts "Width: #{dd[:width]}"
19
+ puts "Height: #{dd[:height]}"
20
+ puts "Bpp: #{dd[:bpp]}"
21
+ puts "Buttons: #{dd[:num_soft_buttons]}"
22
+ index = index + 1
23
+ end
24
+ STDOUT.flush
25
+ end
26
+ end
Binary file
@@ -0,0 +1,7 @@
1
+ Feature: lblcd
2
+ bundle exec cucumber features/
3
+
4
+ @announce
5
+ Scenario: Run
6
+ When I run `lglcd`
7
+ Then the output should contain "Display name: Logitech Monochrome LCD"
@@ -0,0 +1,4 @@
1
+ require 'aruba/cucumber'
2
+
3
+ PROJECT_ROOT = File.join(File.dirname(__FILE__),'..','..')
4
+ ENV['PATH'] = "#{File.join(PROJECT_ROOT,'bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
@@ -0,0 +1,5 @@
1
+ require "lg-lcd/version"
2
+
3
+ module LgLcd
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,39 @@
1
+ require 'ffi'
2
+ require_relative 'lib'
3
+ require_relative 'open'
4
+
5
+ module LgLcd
6
+ class Connection
7
+ def initialize name
8
+ @ctx = Lib::ConnectionContext.new
9
+ @ctx[:app_friendly_name] = string_pointer(name)
10
+ @ctx[:is_persistent] = false
11
+ @ctx[:is_autostartable] = false
12
+ @ctx[:connection] = Lib::LGLCD_INVALID_CONNECTION
13
+
14
+ raise "Connecting failed" unless Lib::LGLCD_RET_OK == Lib.connect(@ctx)
15
+
16
+ begin
17
+ yield(self)
18
+ ensure
19
+ Lib.disconnect(connection)
20
+ end
21
+ end
22
+
23
+ def connection
24
+ return @ctx[:connection]
25
+ end
26
+
27
+ def open &block
28
+ return Open.new(connection, &block)
29
+ end
30
+
31
+ private
32
+
33
+ def string_pointer string
34
+ mem_buf = FFI::MemoryPointer.new(:char, string.size)
35
+ mem_buf.put_bytes(0, string)
36
+ return mem_buf
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'lib'
2
+ require_relative 'connection'
3
+
4
+ module LgLcd
5
+ class LgLcd
6
+ def initialize
7
+ raise "Initialization failed" unless Lib::LGLCD_RET_OK == Lib.init()
8
+
9
+ begin
10
+ yield(self)
11
+ ensure
12
+ Lib.deinit()
13
+ end
14
+ end
15
+
16
+ def connect name, &block
17
+ return Connection.new(name, &block)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,273 @@
1
+ require 'ffi'
2
+
3
+ module LgLcd
4
+ module Lib
5
+ extend FFI::Library
6
+
7
+ LGLCD_RET_OK = 0
8
+
9
+ # Invalid handle definitions
10
+ LGLCD_INVALID_CONNECTION = -1
11
+ LGLCD_INVALID_DEVICE = -1
12
+
13
+ # Common Soft-Buttons available through the SDK
14
+ LGLCDBUTTON_LEFT = 0x00000100
15
+ LGLCDBUTTON_RIGHT = 0x00000200
16
+ LGLCDBUTTON_OK = 0x00000400
17
+ LGLCDBUTTON_CANCEL = 0x00000800
18
+ LGLCDBUTTON_UP = 0x00001000
19
+ LGLCDBUTTON_DOWN = 0x00002000
20
+ LGLCDBUTTON_MENU = 0x00004000
21
+
22
+ # Soft-Button masks. Kept for backwards compatibility
23
+ LGLCDBUTTON_BUTTON0 = 0x00000001
24
+ LGLCDBUTTON_BUTTON1 = 0x00000002
25
+ LGLCDBUTTON_BUTTON2 = 0x00000004
26
+ LGLCDBUTTON_BUTTON3 = 0x00000008
27
+ LGLCDBUTTON_BUTTON4 = 0x00000010
28
+ LGLCDBUTTON_BUTTON5 = 0x00000020
29
+ LGLCDBUTTON_BUTTON6 = 0x00000040
30
+ LGLCDBUTTON_BUTTON7 = 0x00000080
31
+
32
+ # Bitmap
33
+ LGLCD_BMP_FORMAT_160x43x1 = 0x00000001
34
+ LGLCD_BMP_FORMAT_QVGAx32 = 0x00000003
35
+ LGLCD_BW_BMP_WIDTH = 160
36
+ LGLCD_BW_BMP_HEIGHT = 43
37
+ LGLCD_BW_BMP_BPP = 1
38
+ LGLCD_QVGA_BMP_WIDTH = 320
39
+ LGLCD_QVGA_BMP_HEIGHT = 240
40
+ LGLCD_QVGA_BMP_BPP = 4
41
+
42
+ # Priorities
43
+ LGLCD_PRIORITY_IDLE_NO_SHOW = 0
44
+ LGLCD_PRIORITY_BACKGROUND = 64
45
+ LGLCD_PRIORITY_NORMAL = 128
46
+ LGLCD_PRIORITY_ALERT = 255
47
+ LGLCD_SYNC_UPDATE = 0x80000000
48
+ LGLCD_SYNC_COMPLETE_WITHIN_FRAME = 0xC0000000
49
+ LGLCD_ASYNC_UPDATE = 0
50
+
51
+ # Foreground mode for client applications
52
+ LGLCD_LCD_FOREGROUND_APP_NO = 0
53
+ LGLCD_LCD_FOREGROUND_APP_YES = 1
54
+
55
+ # Device family definitions
56
+ LGLCD_DEVICE_FAMILY_BW_160x43_GAMING = 0x00000001
57
+ LGLCD_DEVICE_FAMILY_KEYBOARD_G15 = 0x00000001
58
+ LGLCD_DEVICE_FAMILY_BW_160x43_AUDIO = 0x00000002
59
+ LGLCD_DEVICE_FAMILY_SPEAKERS_Z10 = 0x00000002
60
+ LGLCD_DEVICE_FAMILY_JACKBOX = 0x00000004
61
+ LGLCD_DEVICE_FAMILY_BW_160x43_BASIC = 0x00000008
62
+ LGLCD_DEVICE_FAMILY_LCDEMULATOR_G15 = 0x00000008
63
+ LGLCD_DEVICE_FAMILY_RAINBOW = 0x00000010
64
+ LGLCD_DEVICE_FAMILY_QVGA_BASIC = 0x00000020
65
+ LGLCD_DEVICE_FAMILY_QVGA_GAMING = 0x00000040
66
+ LGLCD_DEVICE_FAMILY_GAMEBOARD_G13 = 0x00000080
67
+ LGLCD_DEVICE_FAMILY_KEYBOARD_G510 = 0x00000100
68
+ LGLCD_DEVICE_FAMILY_OTHER = 0x80000000
69
+
70
+ # Combinations of device families (device clans?)
71
+ LGLCD_DEVICE_FAMILY_ALL_BW_160x43 = (LGLCD_DEVICE_FAMILY_BW_160x43_GAMING |
72
+ LGLCD_DEVICE_FAMILY_BW_160x43_AUDIO |
73
+ LGLCD_DEVICE_FAMILY_JACKBOX |
74
+ LGLCD_DEVICE_FAMILY_BW_160x43_BASIC |
75
+ LGLCD_DEVICE_FAMILY_RAINBOW |
76
+ LGLCD_DEVICE_FAMILY_GAMEBOARD_G13 |
77
+ LGLCD_DEVICE_FAMILY_KEYBOARD_G510)
78
+
79
+ LGLCD_DEVICE_FAMILY_ALL_QVGA = (LGLCD_DEVICE_FAMILY_QVGA_BASIC |
80
+ LGLCD_DEVICE_FAMILY_QVGA_GAMING)
81
+
82
+ LGLCD_DEVICE_FAMILY_ALL = (LGLCD_DEVICE_FAMILY_ALL_BW_160x43 |
83
+ LGLCD_DEVICE_FAMILY_ALL_QVGA)
84
+
85
+ # Capabilities of applets connecting to LCD Manager.
86
+ LGLCD_APPLET_CAP_BASIC = 0x00000000
87
+ LGLCD_APPLET_CAP_BW = 0x00000001
88
+ LGLCD_APPLET_CAP_QVGA = 0x00000002
89
+
90
+ # Notifications sent by LCD Manager to applets connected to it.
91
+ LGLCD_NOTIFICATION_DEVICE_ARRIVAL = 0x00000001
92
+ LGLCD_NOTIFICATION_DEVICE_REMOVAL = 0x00000002
93
+ LGLCD_NOTIFICATION_CLOSE_CONNECTION = 0x00000003
94
+ LGLCD_NOTIFICATION_APPLET_DISABLED = 0x00000004
95
+ LGLCD_NOTIFICATION_APPLET_ENABLED = 0x00000005
96
+ LGLCD_NOTIFICATION_TERMINATE_APPLET = 0x00000006
97
+
98
+ # Device types used in notifications
99
+ LGLCD_DEVICE_BW = 0x00000001
100
+ LGLCD_DEVICE_QVGA = 0x00000002
101
+
102
+ # From WinDef.h
103
+ MAX_PATH = 260
104
+
105
+ # struct lgLcdConfigureContext
106
+ class ConfigureContext < FFI::Struct
107
+ layout config_callback: :pointer,
108
+ config_context: :pointer
109
+ end
110
+
111
+ # struct lgLcdNotificationContext
112
+ class NotificationContext < FFI::Struct
113
+ layout notification_callback: :pointer,
114
+ notification_context: :pointer
115
+ end
116
+
117
+ # struct lgLcdConnectContextExA
118
+ class ConnectionContext < FFI::Struct
119
+ # "Friendly name" display in the listing
120
+ # LPCSTR
121
+ layout app_friendly_name: :pointer,
122
+ # isPersistent determines whether this connection persists in the list
123
+ is_persistent: :bool,
124
+ # isAutostartable determines whether the client can be started by
125
+ # LCDMon
126
+ is_autostartable: :bool,
127
+ on_configure: ConfigureContext,
128
+ # Need this x, otherwise connection is not filled.
129
+ # Possibly a padding problem...
130
+ x: :int,
131
+ # --> Connection handle
132
+ connection: :int,
133
+ # Or'd combination of LGLCD_APPLET_CAP_... defines
134
+ applet_capabilities_supported: :long,
135
+ reserved: :long,
136
+ on_notify: NotificationContext
137
+ end
138
+
139
+ # struct lgLcdDeviceDescExA
140
+ class DeviceDesc < FFI::Struct
141
+ layout family_id: :long,
142
+ display_name: [:uint8, MAX_PATH],
143
+ width: :long,
144
+ height: :long,
145
+ bpp: :long,
146
+ num_soft_buttons: :long,
147
+ reserved1: :long,
148
+ reserved2: :long
149
+ end
150
+
151
+ class SoftbuttonsChangedContext < FFI::Struct
152
+ # Set to NULL if no softbutton notifications are needed
153
+ layout softbuttons_changed_callback: :pointer,
154
+ softbuttons_changed_context: :pointer
155
+ end
156
+
157
+ class OpenContext < FFI::Struct
158
+ layout connection: :int,
159
+ # Device type to open (either LGLCD_DEVICE_BW or LGLCD_DEVICE_QVGA)
160
+ index: :int,
161
+ on_softbuttons_changed: SoftbuttonsChangedContext,
162
+ # --> Device handle
163
+ device: :int
164
+ end
165
+
166
+ class OpenByTypeContext < FFI::Struct
167
+ layout connection: :int,
168
+ # Device type to open (either LGLCD_DEVICE_BW or LGLCD_DEVICE_QVGA)
169
+ device_type: :int,
170
+ on_softbuttons_changed: SoftbuttonsChangedContext,
171
+ # --> Device handle
172
+ device: :int
173
+ end
174
+
175
+ class BitmapHeader < FFI::Struct
176
+ layout format: :long
177
+ end
178
+
179
+ class Bitmap160x43x1 < FFI::Struct
180
+ layout hdr: BitmapHeader, # LGLCD_BMP_FORMAT_160x43x1
181
+ pixels: [:uint8, LGLCD_BW_BMP_WIDTH * LGLCD_BW_BMP_HEIGHT * LGLCD_BW_BMP_BPP]
182
+ end
183
+
184
+ ffi_lib File.join(File.dirname(__FILE__), '..\..\ext\LgLcdDll')
185
+ ffi_convention :stdcall
186
+
187
+ attach_function :init, :lgLcdInit, [], :long
188
+ attach_function :deinit, :lgLcdDeInit, [], :long
189
+
190
+ attach_function :connect, :lgLcdConnectExA, [:pointer], :long
191
+ attach_function :disconnect, :lgLcdDisconnect, [:int], :long
192
+
193
+ attach_function :open_by_type, :lgLcdOpenByType, [:pointer], :long
194
+ attach_function :close, :lgLcdClose, [:int], :long
195
+
196
+ attach_function :set_as_lcd_foreground_app, :lgLcdSetAsLCDForegroundApp, [:int, :int], :long
197
+ attach_function :update_bitmap, :lgLcdUpdateBitmap, [:int, :pointer, :long], :long
198
+
199
+ # Deprecated
200
+ attach_function :enumerate, :lgLcdEnumerateExA, [:int, :int, :pointer], :long
201
+ end
202
+
203
+ class Open
204
+ def initialize connection
205
+ @ctx = Lib::OpenByTypeContext.new
206
+ @ctx[:connection] = connection
207
+ @ctx[:device_type] = Lib::LGLCD_DEVICE_BW
208
+ @ctx[:device] = Lib::LGLCD_INVALID_DEVICE
209
+ raise "Open by type failes" unless Lib::LGLCD_RET_OK == Lib.open_by_type(@ctx)
210
+
211
+ begin
212
+ yield(self)
213
+ ensure
214
+ puts "Close"
215
+ Lib.close(@ctx[:device])
216
+ end
217
+ end
218
+
219
+ def device
220
+ return @ctx[:device]
221
+ end
222
+ end
223
+
224
+ class Connection
225
+ def initialize name
226
+ @ctx = Lib::ConnectionContext.new
227
+ @ctx[:app_friendly_name] = string_pointer(name)
228
+ @ctx[:is_persistent] = false
229
+ @ctx[:is_autostartable] = false
230
+ @ctx[:connection] = Lib::LGLCD_INVALID_CONNECTION
231
+
232
+ raise "Connecting failed" unless Lib::LGLCD_RET_OK == Lib.connect(@ctx)
233
+
234
+ begin
235
+ yield(self)
236
+ ensure
237
+ Lib.disconnect(connection)
238
+ end
239
+ end
240
+
241
+ def connection
242
+ return @ctx[:connection]
243
+ end
244
+
245
+ def open &block
246
+ return Open.new(connection, &block)
247
+ end
248
+
249
+ private
250
+
251
+ def string_pointer string
252
+ mem_buf = FFI::MemoryPointer.new(:char, string.size)
253
+ mem_buf.put_bytes(0, string)
254
+ return mem_buf
255
+ end
256
+ end
257
+
258
+ class LgLcd
259
+ def initialize
260
+ raise "Initialization failed" unless Lib::LGLCD_RET_OK == Lib.init()
261
+
262
+ begin
263
+ yield(self)
264
+ ensure
265
+ Lib.deinit()
266
+ end
267
+ end
268
+
269
+ def connect name, &block
270
+ return Connection.new(name, &block)
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'lib'
2
+
3
+ module LgLcd
4
+ class Open
5
+ def initialize connection
6
+ @ctx = Lib::OpenByTypeContext.new
7
+ @ctx[:connection] = connection
8
+ @ctx[:device_type] = Lib::LGLCD_DEVICE_BW
9
+ @ctx[:device] = Lib::LGLCD_INVALID_DEVICE
10
+ raise "Open by type failes" unless Lib::LGLCD_RET_OK == Lib.open_by_type(@ctx)
11
+
12
+ begin
13
+ yield(self)
14
+ ensure
15
+ puts "Close"
16
+ Lib.close(@ctx[:device])
17
+ end
18
+ end
19
+
20
+ def device
21
+ return @ctx[:device]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ module LgLcd
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../lib/lg-lcd/lib'
2
+
3
+ LgLcd::LgLcd.new do |lg_lcd|
4
+ puts "-" * 80
5
+
6
+ lg_lcd.connect("Ruby") do |ctx|
7
+ puts "Connection: #{ctx.connection}"
8
+ puts "-" * 40
9
+
10
+ dd = LgLcd::Lib::DeviceDesc.new
11
+ index = 0
12
+ while 0 == ret = LgLcd::Lib.enumerate(ctx.connection, index, dd)
13
+ puts "Index: #{index}"
14
+ puts "Family id: #{dd[:family_id]}"
15
+ puts "Display name: #{dd[:display_name]}"
16
+ puts "Width: #{dd[:width]}"
17
+ puts "Height: #{dd[:height]}"
18
+ puts "Bpp: #{dd[:bpp]}"
19
+ puts "Buttons: #{dd[:num_soft_buttons]}"
20
+ index = index + 1
21
+ end
22
+ STDOUT.flush
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lg-lcd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - theldoria
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ffi
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.5
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.1.5
30
+ - !ruby/object:Gem::Dependency
31
+ name: methadone
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.2.1
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.2.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: cucumber
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: aruba
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Ruby binding to the 'Logitech LCD SDK Package'
79
+ email:
80
+ - theldoria@hotmail.com
81
+ executables:
82
+ - lglcd
83
+ extensions: []
84
+ extra_rdoc_files: []
85
+ files:
86
+ - lib/lg-lcd/connection.rb
87
+ - lib/lg-lcd/lglcd.rb
88
+ - lib/lg-lcd/lib.rb
89
+ - lib/lg-lcd/open.rb
90
+ - lib/lg-lcd/version.rb
91
+ - lib/lg-lcd.rb
92
+ - ext/LgLcdDll.dll
93
+ - bin/lglcd
94
+ - README.md
95
+ - LICENSE
96
+ - test/test.rb
97
+ - features/lglcd.feature
98
+ - features/support/env.rb
99
+ homepage: ''
100
+ licenses: []
101
+ post_install_message:
102
+ rdoc_options: []
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.9.2
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: 1.3.6
117
+ requirements: []
118
+ rubyforge_project:
119
+ rubygems_version: 1.8.24
120
+ signing_key:
121
+ specification_version: 3
122
+ summary: This binding provides low level access to the LCD of some Logitech products
123
+ like the G19, G15 or G510
124
+ test_files:
125
+ - test/test.rb
126
+ - features/lglcd.feature
127
+ - features/support/env.rb
128
+ has_rdoc: