Sha256: 3e74eb263833e566a59060c112e054591a9884241311bec942aeaac4e312df49
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
# frozen_string_literal: true require 'fusuma/device' module Fusuma module Plugin module Filters # Filter keyboard events from libinput_command_input class KeypressFilter < Filter DEFAULT_SOURCE = 'libinput_command_input' def config_param_types { source: String, keep_device_names: [Array, String] } end # NOTE: example of line# Select keyboard devices for filtering devices pressed/released # event4 KEYBOARD_KEY +4.81s KEY_LEFTSHIFT (42) pressed # event4 KEYBOARD_KEY +4.90s KEY_LEFTSHIFT (42) released # event4 KEYBOARD_KEY +7.39s KEY_CAPSLOCK (58) pressed # event4 KEYBOARD_KEY +7.52s KEY_CAPSLOCK (58) released # event4 KEYBOARD_KEY +8.98s KEY_LEFTCTRL (29) pressed # event4 KEYBOARD_KEY +9.14s KEY_LEFTCTRL (29) released # @return [TrueClass] when keeping it # @return [FalseClass] when discarding it def keep?(record) keep_devices.any? do |d| record.to_s =~ /#{d.id}\s+KEYBOARD_KEY\s/ end end private # @return [Array<Fusuma::Device>] def keep_devices @keep_devices ||= KeepDevice.new(config_params(:keep_device_names)).select end # Devices to detect key presses and releases class KeepDevice def initialize(names) @names = names end # @return [Array<Fusuma::Device>] def select if @names Fusuma::Device.all.select do |d| Array(config_params(:keep_device_names)).any? do |name| d.name =~ name end end else Fusuma::Device.all.select { |d| d.capabilities =~ /keyboard/ } end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fusuma-plugin-keypress-0.5.0 | lib/fusuma/plugin/filters/keypress_filter.rb |