класс Reline::Windows::KeyEventRecord
Атрибуты
char_code[R]
control_key_state[R]
control_keys[R]
virtual_key_code[R]
Публичные методы класса
# File lib/reline/windows.rb, line 467
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 Публичные методы экземпляра
# File lib/reline/windows.rb, line 481 def char @char_code.chr(Encoding::UTF_8) end
# File lib/reline/windows.rb, line 485 def enhanced? @enhanced end
# File lib/reline/windows.rb, line 492 def matches?(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
Проверяет, соответствуют ли переданные аргументы этому событию нажатия клавиши. Аргументы со значением nil игнорируются, но хотя бы один из них должен быть не nil. Для проверки того, что не были нажаты никакие клавиши управления, передайте пустой массив: ‘control_keys: []`.
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.