class Twiddler::Config::Chord

Attributes

mods[R]
rows[R]

Public Class Methods

new() click to toggle source
# File lib/twiddler/config.rb, line 216
def initialize
  @rows = [:open, :open, :open, :open]
  @mods = {:num => false, 
    :shift => false, :ctrl => false, :alt => false}
end

Public Instance Methods

extract_key(bits, idx, mod, range) click to toggle source
# File lib/twiddler/config.rb, line 224
def extract_key(bits, idx, mod, range)
  @rows[idx] = case bits[range]
               when /1.../; :left
               when /.1../; :middle
               when /..1./; :right
               else :open
               end
  @mods[mod] = (bits[range.last] == ?1)

end
keydata=(bits) click to toggle source
# File lib/twiddler/config.rb, line 235
def keydata=(bits)
  extract_key(bits, 0, :num,    4..7)
  extract_key(bits, 1, :alt,    0..3)
  extract_key(bits, 2, :ctrl,  12..15)
  extract_key(bits, 3, :shift,  8..11)
end
render() click to toggle source
# File lib/twiddler/config.rb, line 269
def render
  "#{render_keys} => #{render_action}"
end
render_action() click to toggle source
# File lib/twiddler/config.rb, line 265
def render_action
  ""
end
render_keys() click to toggle source
# File lib/twiddler/config.rb, line 242
def render_keys
  mods = 
    (@mods[:num] ?   "N" : "") +
    (@mods[:alt] ?   "A" : "") +
    (@mods[:ctrl] ?  "C" : "") +
    (@mods[:shift] ? "S" : "")
  if mods.empty?
    mods = "O"
  end

  chord = rows.map do |row|
    case row
    when :open;   "O"
    when :left;   "L"
    when :right;  "R"
    when :middle; "M"
    else "wtf?"
    end
  end.join("")

  return "#{mods} #{chord}"
end