[Keybinds] Change way of getting key data

This commit is contained in:
Azumgi 2018-09-27 15:05:48 +03:00
parent 1271b26dcf
commit 75fb26d3cf
3 changed files with 30 additions and 19 deletions

View file

@ -180,7 +180,7 @@ end
local keyboard_buton_name = Keyboard.button_name
local mouse_buton_name = Mouse.button_name
vmf.keys = {
local _keys = {
keyboard = {
[8] = {"Backspace", "backspace", keyboard_buton_name(8)},
[9] = {"Tab", "tab", keyboard_buton_name(9)},
@ -327,32 +327,43 @@ vmf.keys = {
}]]
}
vmf.readable_key_names = {}
local _readable_key_names = {}
function vmf.get_key_name(device, key_index)
local key_info = _keys[device][key_index]
return key_info and key_info[2]
end
function vmf.get_readable_key_name(key_name)
return _readable_key_names[key_name]
end
-- ####################################################################################################################
-- ##### Script #######################################################################################################
-- ####################################################################################################################
for _, controller_keys in pairs(vmf.keys) do
for _, controller_keys in pairs(_keys) do
for _, key_info in pairs(controller_keys) do
vmf.readable_key_names[key_info[2]] = key_info[1]
_readable_key_names[key_info[2]] = key_info[1]
end
end
vmf.readable_key_names["ctrl"] = "Ctrl"
vmf.readable_key_names["alt"] = "Alt"
vmf.readable_key_names["shift"] = "Shift"
_readable_key_names["ctrl"] = "Ctrl"
_readable_key_names["alt"] = "Alt"
_readable_key_names["shift"] = "Shift"
for _, key_info in pairs(vmf.keys.keyboard) do
for _, key_info in pairs(_keys.keyboard) do
VMFModsKeyMap.win32[key_info[2]] = {"keyboard", key_info[3], "held"}
end
for i = 0, 4 do
local key_info = vmf.keys.mouse[i]
local key_info = _keys.mouse[i]
VMFModsKeyMap.win32[key_info[2]] = {"mouse", key_info[3], "held"}
end
for i = 10, 13 do
local key_info = vmf.keys.mouse[i]
local key_info = _keys.mouse[i]
VMFModsKeyMap.win32[key_info[2]] = {"mouse", key_info[3], "pressed"}
end

View file

@ -339,7 +339,7 @@ local function validate_keybind_data(data)
vmf.throw_error("[widget \"%s\" (keybind)]: table stored in 'default_value' field can't exceed 4 elements",
data.setting_id)
end
if default_value[1] and (not vmf.readable_key_names[default_value[1]] or allowed_special_keys[default_value[1]]) then
if default_value[1] and (not vmf.get_readable_key_name(default_value[1]) or allowed_special_keys[default_value[1]]) then
vmf.throw_error("[widget \"%s\" (keybind)]: 'default_value[1]' must be a valid key name", data.setting_id)
end
if default_value[2] and not allowed_special_keys[default_value[2]] or

View file

@ -2488,9 +2488,9 @@ local function build_keybind_string(keys)
for i, key in ipairs(keys) do
if i == 1 then
keybind_string = keybind_string .. vmf.readable_key_names[key]
keybind_string = keybind_string .. vmf.get_readable_key_name(key)
else
keybind_string = keybind_string .. " + " .. vmf.readable_key_names[key]
keybind_string = keybind_string .. " + " .. vmf.get_readable_key_name(key)
end
end
@ -3307,25 +3307,25 @@ VMFOptionsView.callback_setting_keybind = function (self, widget_content)
if not widget_content.first_pressed_button and (Keyboard.any_pressed() or Mouse.any_pressed()) then
local first_pressed_button_info = nil
local first_pressed_button_name = nil
local first_pressed_button_index = nil
local first_pressed_button_type = nil
if Keyboard.any_pressed() then
first_pressed_button_info = vmf.keys.keyboard[Keyboard.any_pressed()]
first_pressed_button_name = vmf.get_key_name("keyboard", Keyboard.any_pressed())
first_pressed_button_index = Keyboard.any_pressed()
first_pressed_button_type = "keyboard"
elseif Mouse.any_pressed() then
first_pressed_button_info = vmf.keys.mouse[Mouse.any_pressed()]
first_pressed_button_name = vmf.get_key_name("mouse", Mouse.any_pressed())
first_pressed_button_index = Mouse.any_pressed()
first_pressed_button_type = "mouse"
end
if first_pressed_button_info then
widget_content.first_pressed_button = first_pressed_button_info[2]
if first_pressed_button_name then
widget_content.first_pressed_button = first_pressed_button_name
widget_content.first_pressed_button_index = first_pressed_button_index
widget_content.first_pressed_button_type = first_pressed_button_type
end
@ -3336,7 +3336,7 @@ VMFOptionsView.callback_setting_keybind = function (self, widget_content)
if widget_content.first_pressed_button then
table.insert(pressed_buttons, widget_content.first_pressed_button)
preview_string = vmf.readable_key_names[widget_content.first_pressed_button]
preview_string = vmf.get_readable_key_name(widget_content.first_pressed_button)
end
if Keyboard.button(Keyboard.button_index("left ctrl")) == 1 then
preview_string = preview_string .. " + Ctrl"