Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Hans Fugal
Denis Knauf
11 changes: 0 additions & 11 deletions README

This file was deleted.

35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Description
===========

lircr (pronounced 'lurker') is a LIRC client library for Ruby. It is simple,
it is easy, it is fun. If you got LIRC, get lircr. I am not responsible if you
grow more hair on your index finger or thumb.

Usage
=====

require 'lirc'
lirc = LIRC::Client.new
event = lirc.next
p event
if event.name == "play"
system "xmms", "/av/music/3.mod"
end

Control your MPD:

require 'lirc'
require 'librmpd'
lirc = LIRC::Client.new
mpd = MPD.new 'localhost', 6600
mpd.connect
lirc.each do |event|
case event.name
when "play"
mpc.play
when "pause"
mpd.pause = !mpd.pause
when "stop"
mpd.stop
end
end
55 changes: 54 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,57 @@
require 'rubygems'
require 'rake'

begin
require 'jeweler'
Jeweler::Tasks.new do |gem|
gem.name = "lircr"
gem.summary = %Q{LIRC client for Ruby}
gem.description = %Q{}
gem.email = "Denis.Knauf@gmail.com"
gem.homepage = "http://github.com/DenisKnauf/lircr"
gem.authors = ["Denis Knauf", "Hans Fugal"]
gem.files = %w[AUTHORS README.md VERSION lib/**/*.rb test/**/*.rb]
gem.require_paths = %w[test lib]
end
Jeweler::GemcutterTasks.new
rescue LoadError
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
end

require 'rake/testtask'
Rake::TestTask.new(:test) do |test|
test.libs << 'lib' << 'test' << 'ext'
test.pattern = 'test/**/*_test.rb'
test.verbose = true
end

begin
require 'rcov/rcovtask'
Rcov::RcovTask.new do |test|
test.libs << 'test'
test.pattern = 'test/**/*_test.rb'
test.verbose = true
end
rescue LoadError
task :rcov do
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
end
end

task :test => :check_dependencies

task :default => :test

require 'rake/rdoctask'
Rake::RDocTask.new do |rdoc|
if File.exist?('VERSION')
version = File.read('VERSION')
else
version = ""
end

Rake::TestTask.new do |t|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = "sbdb #{version}"
rdoc.rdoc_files.include('README*')
rdoc.rdoc_files.include('lib/**/*.rb')
end
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.0.3
56 changes: 34 additions & 22 deletions lib/lirc.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,38 @@
require 'socket'

module LIRC
class Client
def initialize(dev="/dev/lircd")
@sock = UNIXSocket.open(dev)
end
def next
Event.new(@sock.readline)
end
end
class Event
attr_reader :code, :repeat, :name, :remote
def initialize(str)
code, repeat, @name, @remote = str.split(' ', 4)
@code = code.hex
@repeat = repeat.hex
end
def repeat?
@repeat > 0
end
def to_s
sprintf("%016x %02x %s %s", @code, @repeat, @name, @remote)
end
end
class Client
def initialize dev = nil
dev ||= "/dev/lircd"
@sock = UNIXSocket.new dev
end

def next
Event.new @sock.gets
end

def each_event
return Enumerator.new( self, :each_event) unless block_given?
loop { yield self.next }
end
alias each each_event
end

class Event
attr_reader :code, :repeat, :name, :remote

def initialize str
code, repeat, @name, @remote = str.split(' ', 4)
@code = code.hex
@repeat = repeat.hex
end

def repeat?
@repeat > 0
end

def to_s
"%016x %02x %s %s" % [@code, @repeat, @name, @remote]
end
end
end
Loading