Translate common key names in `key' RC keyword
This commit is contained in:
parent
f53ad53806
commit
56197c85f8
@ -8,3 +8,12 @@ Feature: `key' run control keyword
|
|||||||
And uhwm is running
|
And uhwm is running
|
||||||
When I press the alt+f keys
|
When I press the alt+f keys
|
||||||
Then the output must contain "trigger f key code"
|
Then the output must contain "trigger f key code"
|
||||||
|
|
||||||
|
Scenario: translates common key names to their X equivalent
|
||||||
|
Given a run control file with:
|
||||||
|
"""
|
||||||
|
key(:enter) { puts 'trigger return key code' }
|
||||||
|
"""
|
||||||
|
And uhwm is running
|
||||||
|
When I press the alt+Return keys
|
||||||
|
Then the output must contain "trigger return key code"
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
module Uh
|
module Uh
|
||||||
module WM
|
module WM
|
||||||
class RunControl
|
class RunControl
|
||||||
|
KEYSYM_TRANSLATIONS = {
|
||||||
|
backspace: :BackSpace,
|
||||||
|
enter: :Return,
|
||||||
|
return: :Return,
|
||||||
|
tab: :Tab
|
||||||
|
}.freeze
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def evaluate env
|
def evaluate env
|
||||||
rc_path = File.expand_path(env.rc_path)
|
rc_path = File.expand_path(env.rc_path)
|
||||||
@ -18,7 +25,14 @@ module Uh
|
|||||||
end
|
end
|
||||||
|
|
||||||
def key keysym, &block
|
def key keysym, &block
|
||||||
@env.keybinds[keysym] = block
|
@env.keybinds[translate_keysym keysym] = block
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def translate_keysym keysym
|
||||||
|
KEYSYM_TRANSLATIONS.key?(keysym) ? KEYSYM_TRANSLATIONS[keysym] : keysym
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -52,15 +52,20 @@ module Uh
|
|||||||
describe '#key' do
|
describe '#key' do
|
||||||
let(:code) { -> { :keybind_code } }
|
let(:code) { -> { :keybind_code } }
|
||||||
|
|
||||||
before { rc.key :f, &code }
|
|
||||||
|
|
||||||
it 'registers a key binding in the env' do
|
it 'registers a key binding in the env' do
|
||||||
|
rc.key :f, &code
|
||||||
expect(env.keybinds.keys).to include :f
|
expect(env.keybinds.keys).to include :f
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'registers given block with the key binding' do
|
it 'registers given block with the key binding' do
|
||||||
|
rc.key :f, &code
|
||||||
expect(env.keybinds[:f].call).to eq :keybind_code
|
expect(env.keybinds[:f].call).to eq :keybind_code
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'translates common key names to equivalent X keysym' do
|
||||||
|
rc.key :enter, &code
|
||||||
|
expect(env.keybinds.keys).to include :Return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user