class TTY::Prompt::Reader::KeyEvent
Represents key event emitted during keyboard press
@api public
Public Class Methods
from(keys, char)
click to toggle source
@param [Hash] keys
the keys and codes mapping
@param [Array] codes
@return [KeyEvent]
@api public
# File lib/tty/prompt/reader/key_event.rb, line 28 def self.from(keys, char) key = Key.new ctrls = keys.keys.grep(/ctrl/) case char when keys[:return] then key.name = :return when keys[:enter] then key.name = :enter when keys[:tab] then key.name = :tab when keys[:backspace] then key.name = :backspace when keys[:delete] then key.name = :delete when keys[:space] then key.name = :space when keys[:escape] then key.name = :escape when proc { |c| c =~ /^[a-z]{1}$/ } key.name = :alpha when proc { |c| c =~ /^[A-Z]{1}$/ } key.name = :alpha key.shift = true when proc { |c| c =~ /^\d+$/ } key.name = :num # arrows when keys[:up] then key.name = :up when keys[:down] then key.name = :down when keys[:left] then key.name = :left when keys[:right] then key.name = :right # editing when keys[:clear] then key.name = :clear when keys[:end] then key.name = :end when keys[:home] then key.name = :home when keys[:insert] then key.name = :insert when keys[:page_up] then key.name = :page_up when keys[:page_down] then key.name = :page_down when proc { |cs| ctrls.any? { |name| keys[name] == cs } } key.name = keys.key(char) key.ctrl = true # f1 - f12 when keys[:f1], keys[:f1_xterm] then key.name = :f1 when keys[:f2], keys[:f2_xterm] then key.name = :f2 when keys[:f3], keys[:f3_xterm] then key.name = :f3 when keys[:f4], keys[:f4_xterm] then key.name = :f4 when keys[:f5] then key.name = :f5 when keys[:f6] then key.name = :f6 when keys[:f7] then key.name = :f7 when keys[:f8] then key.name = :f8 when keys[:f9] then key.name = :f9 when keys[:f10] then key.name = :f10 when keys[:f11] then key.name = :f11 when keys[:f12] then key.name = :f12 end new(char, key) end
Public Instance Methods
trigger?()
click to toggle source
Check if key event can be triggered
@return [Boolean]
@api public
# File lib/tty/prompt/reader/key_event.rb, line 85 def trigger? !key.nil? && !key.name.nil? end