Class: Fusuma::Plugin::Inputs::RemapKeyboardInput

Inherits:
Input
  • Object
show all
Defined in:
lib/fusuma/plugin/inputs/remap_keyboard_input.rb

Overview

Get keyboard events from remapper

Defined Under Namespace

Classes: KeyboardSelector, TouchpadSelector

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRemapKeyboardInput

Returns a new instance of RemapKeyboardInput.



21
22
23
24
# File 'lib/fusuma/plugin/inputs/remap_keyboard_input.rb', line 21

def initialize
  super
  setup_remapper
end

Instance Attribute Details

#pidObject (readonly)

Returns the value of attribute pid.



19
20
21
# File 'lib/fusuma/plugin/inputs/remap_keyboard_input.rb', line 19

def pid
  @pid
end

Instance Method Details

#config_param_typesObject



12
13
14
15
16
17
# File 'lib/fusuma/plugin/inputs/remap_keyboard_input.rb', line 12

def config_param_types
  {
    keyboard_name_patterns: [Array, String],
    touchpad_name_patterns: [Array, String]
  }
end

#create_event(record:) ⇒ Event

Parameters:

  • record (String)

Returns:

  • (Event)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/fusuma/plugin/inputs/remap_keyboard_input.rb', line 32

def create_event(record:)
  data = MessagePack.unpack(record) # => {"key"=>"J", "status"=>1}

  unless data.is_a? Hash
    MultiLogger.error("Invalid record: #{record}", data: data)
    return
  end

  code = data["key"]
  status = (data["status"] == 1) ? "pressed" : "released"
  record = Events::Records::KeypressRecord.new(status: status, code: code)

  e = Events::Event.new(tag: tag, record: record)
  MultiLogger.debug(input_event: e)
  e
end

#ioObject



26
27
28
# File 'lib/fusuma/plugin/inputs/remap_keyboard_input.rb', line 26

def io
  @keyboard_reader
end