Class: Fusuma::Plugin::Detectors::KeypressDetector

Inherits:
Detector
  • Object
show all
Defined in:
lib/fusuma/plugin/detectors/keypress_detector.rb

Overview

Detect KeypressEvent from KeypressBuffer

Constant Summary collapse

SOURCES =
%w[keypress].freeze
BUFFER_TYPE =
"keypress"
MODIFIER_KEYS =
Set.new(%w[
  CAPSLOCK
  LEFTALT
  LEFTCTRL
  LEFTMETA
  LEFTSHIFT
  RIGHTALT
  RIGHTCTRL
  RIGHTSHIFT
  RIGHTMETA
])

Instance Method Summary collapse

Instance Method Details

#detect(buffers) ⇒ Event, NilClass

Parameters:

  • buffers (Array<Event>)

Returns:

  • (Event)

    if event is detected

  • (NilClass)

    if event is NOT detected



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

def detect(buffers)
  keypress_buffer = find_buffer(buffers)

  return if keypress_buffer.empty?

  codes = pressed_codes(keypress_buffer.events.map(&:record))

  return unless codes.any? { |code| MODIFIER_KEYS.include?(code) }

  record = Events::Records::IndexRecord.new(
    index: create_index(codes: codes),
    position: :surfix
  )

  create_event(record: record)
end

#watch?Boolean

Always watch buffers and detect them.

Returns:

  • (Boolean)


26
27
28
# File 'lib/fusuma/plugin/detectors/keypress_detector.rb', line 26

def watch?
  true
end