Configure upcased key as combination with shift mod

This commit is contained in:
Thibault Jouan
2015-04-15 01:09:18 +00:00
parent 56197c85f8
commit 9c9aa1dabb
7 changed files with 63 additions and 9 deletions

View File

@@ -21,8 +21,10 @@ module Uh
@events.emit :connected, args: @display
end
def grab_key keysym
@display.grab_key keysym.to_s, KEY_MODIFIERS[:mod1]
def grab_key keysym, mod = nil
mod_mask = KEY_MODIFIERS[:mod1]
mod_mask |= KEY_MODIFIERS[mod] if mod
@display.grab_key keysym.to_s, mod_mask
end
def handle_pending_events
@@ -31,7 +33,11 @@ module Uh
def handle event
case event.type
when :key_press then @events.emit :key, event.key.to_sym
when :key_press
key_selector = event.modifier_mask & KEY_MODIFIERS[:shift] == 1 ?
[event.key.to_sym, :shift] :
event.key.to_sym
@events.emit :key, *key_selector
end
end

View File

@@ -32,7 +32,11 @@ module Uh
private
def translate_keysym keysym
KEYSYM_TRANSLATIONS.key?(keysym) ? KEYSYM_TRANSLATIONS[keysym] : keysym
translate_key = keysym.to_s.downcase.to_sym
translated_keysym = KEYSYM_TRANSLATIONS.key?(translate_key) ?
KEYSYM_TRANSLATIONS[translate_key] :
translate_key
keysym =~ /[A-Z]/ ? [translated_keysym, :shift] : translated_keysym
end
end
end

View File

@@ -74,7 +74,7 @@ module Uh
def register_key_bindings_hooks
@events.on(:key, :q) { stop! }
@env.keybinds.each do |keysym, code|
@events.on :key, keysym, &code
@events.on :key, *keysym, &code
end
end
end