# class Reline::Windows::KeyEventRecord

### Attributes

char_code [R]
control_key_state [R]
control_keys [R]
virtual_key_code [R]

### Public Class Methods

new (virtual_key_code, char_code, control_key_state)
Source

    # File lib/reline/io/windows.rb, line 496
    def initialize(virtual_key_code, char_code, control_key_state)
      @virtual_key_code = virtual_key_code
      @char_code = char_code
      @control_key_state = control_key_state
      @enhanced = control_key_state & ENHANCED_KEY != 0

      (@control_keys = []).tap do |control_keys|
        # symbols must be sorted to make comparison is easier later on
        control_keys << :ALT   if control_key_state & (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED) != 0
        control_keys << :CTRL  if control_key_state & (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED) != 0
        control_keys << :SHIFT if control_key_state & SHIFT_PRESSED != 0
      end.freeze
    end

### Public Instance Methods

char ()
Source

    # File lib/reline/io/windows.rb, line 510
    def char
      @char_code.chr(Encoding::UTF_8)
    end

enhanced? ()
Source

    # File lib/reline/io/windows.rb, line 514
    def enhanced?
      @enhanced
    end

match? (control_keys: nil, virtual_key_code: nil, char_code: nil)
Source

    # File lib/reline/io/windows.rb, line 521
    def match?(control_keys: nil, virtual_key_code: nil, char_code: nil)
      raise ArgumentError, 'No argument was passed to match key event' if control_keys.nil? && virtual_key_code.nil? && char_code.nil?

      (control_keys.nil? || [*control_keys].sort == @control_keys) &&
      (virtual_key_code.nil? || @virtual_key_code == virtual_key_code) &&
      (char_code.nil? || char_code == @char_code)
    end

Verifies if the arguments match with this key event. Nil arguments are ignored, but at least one must be passed as non-nil. To verify that no control keys were pressed, pass an empty array: ‘control_keys: []`.