From 6c9ad9a77dd67145b9015bb13018534025e33a49 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Sat, 24 Jan 2026 23:44:54 -0800 Subject: move mapping definitions to main --- input.lua | 93 +++++++++------------------------------------------------------ main.lua | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++--- rt.lua | 11 ++++---- 3 files changed, 93 insertions(+), 90 deletions(-) diff --git a/input.lua b/input.lua index 746e6c0..df339b1 100644 --- a/input.lua +++ b/input.lua @@ -1,7 +1,6 @@ -- Copyright 2025 David Vazgenovich Shakaryan local config = require('config') -local rt = require('rt') local input = {} @@ -13,10 +12,20 @@ local clicks = {} local state local osd +local menu_btn_f -function input.init(_state, _osd, _bs) +function input.init(_state, _osd, _menu_btn_f) state = _state osd = _osd + menu_btn_f = _menu_btn_f +end + +function input.define_mapping(name, m) + mappings[name] = m +end + +function input.set_mapping(name) + active_mapping = mappings[name] end local function mouse_has_drifted(x1, y1, x2, y2) @@ -187,10 +196,6 @@ local function unbind_click() mp.command_native({'disable-section', 'click-nodrag'}) end -function input.set_key_mapping(m) - active_mapping = mappings[m] -end - local btn_timer; btn_timer = mp.add_periodic_timer(0.1, function() if osd.mpos and mp.get_time() - osd.mpos_time > config.btn_timeout then osd:show_menu_btn(false) @@ -226,7 +231,7 @@ function input.update_mpos(mpos) if (ms.target == 'menu_btn') ~= (ps.target == 'menu_btn') then if ms.target == 'menu_btn' then - bind_click(rt.toggle_menu) + bind_click(menu_btn_f) else unbind_click() end @@ -254,78 +259,4 @@ function input.on_resize() btn_timer:kill() end -mappings.MENU = { - ['BS'] = {rt.prev_menu}, - ['/'] = {rt.start_search}, - ['Ctrl+s'] = {rt.toggle_menu_sort}, - ['Ctrl+R'] = {rt.reload_data}, - - ['ENTER'] = {rt.select_option}, - ['Ctrl+f'] = {rt.favourite_option}, - ['g'] = {rt.goto_option}, - ['i'] = {rt.open_option_info}, - ['?'] = {rt.open_option_info}, - ['Ctrl+p'] = {rt.goto_playing}, - - ['k'] = {rt.cursor_up, 'repeat'}, - ['j'] = {rt.cursor_down, 'repeat'}, - ['K'] = {rt.cursor_page_up, 'repeat'}, - ['J'] = {rt.cursor_page_down, 'repeat'}, - ['UP'] = {rt.cursor_up, 'repeat'}, - ['DOWN'] = {rt.cursor_down, 'repeat'}, - ['Shift+UP'] = {rt.cursor_page_up, 'repeat'}, - ['Shift+DOWN'] = {rt.cursor_page_down, 'repeat'}, - ['PGUP'] = {rt.cursor_page_up, 'repeat'}, - ['PGDWN'] = {rt.cursor_page_down, 'repeat'}, - ['HOME'] = {rt.cursor_start}, - ['END'] = {rt.cursor_end}, - ['WHEEL_UP'] = {rt.cursor_wheel_up, 'repeat'}, - ['WHEEL_DOWN'] = {rt.cursor_wheel_down, 'repeat'}, - ['Shift+WHEEL_UP'] = {rt.cursor_wheel_page_up, 'repeat'}, - ['Shift+WHEEL_DOWN'] = {rt.cursor_wheel_page_down, 'repeat'}, - - ['Alt+k'] = {rt.move_option_up, 'repeat'}, - ['Alt+j'] = {rt.move_option_down, 'repeat'}, - ['Alt+K'] = {rt.move_option_page_up, 'repeat'}, - ['Alt+J'] = {rt.move_option_page_down, 'repeat'}, - ['Alt+UP'] = {rt.move_option_up, 'repeat'}, - ['Alt+DOWN'] = {rt.move_option_down, 'repeat'}, - ['Shift+Alt+UP'] = {rt.move_option_page_up, 'repeat'}, - ['Shift+Alt+DOWN'] = {rt.move_option_page_down, 'repeat'}, - ['Alt+PGUP'] = {rt.move_option_page_up, 'repeat'}, - ['Alt+PGDWN'] = {rt.move_option_page_down, 'repeat'}, - ['Alt+HOME'] = {rt.move_option_start}, - ['Alt+END'] = {rt.move_option_end}, - ['Alt+WHEEL_UP'] = {rt.move_option_wheel_up, 'repeat'}, - ['Alt+WHEEL_DOWN'] = {rt.move_option_wheel_down, 'repeat'}, - ['Shift+Alt+WHEEL_UP'] = {rt.move_option_wheel_page_up, 'repeat'}, - ['Shift+Alt+WHEEL_DOWN'] = {rt.move_option_wheel_page_down, 'repeat'}, - - _targets = { - scrollbar = { - ['MBTN_LEFT_DBL'] = {rt.dbl_click_scrollbar}, - }, - menu = { - ['MBTN_LEFT'] = {rt.click_menu}, - ['MBTN_LEFT_DBL'] = {rt.dbl_click_menu}, - ['MBTN_RIGHT_DBL'] = {rt.dbl_right_click_menu}, - }, - }, -} - -mappings.SEARCH = { - ['ANY_UNICODE'] = {rt.search_input_char, 'complex'}, - ['BS'] = {rt.search_input_bs, 'repeat'}, - ['DEL'] = {rt.search_input_del, 'repeat'}, - - ['ENTER'] = {rt.end_search}, - ['ESC'] = {rt.cancel_search}, - ['Ctrl+c'] = {rt.cancel_search}, - - ['LEFT'] = {rt.search_cursor_left, 'repeat'}, - ['RIGHT'] = {rt.search_cursor_right, 'repeat'}, - ['Ctrl+a'] = {rt.search_cursor_start}, - ['Ctrl+e'] = {rt.search_cursor_end}, -} - return input diff --git a/main.lua b/main.lua index 4c4dc6b..b92a193 100644 --- a/main.lua +++ b/main.lua @@ -77,7 +77,7 @@ local ctx = { epg = epg, xc = xc, } -rt.init(state, osd, input, ctx) +rt.init(state, osd, ctx) mp.observe_property('mouse-pos', 'native', function(_, mpos) input.update_mpos(mpos) @@ -116,8 +116,81 @@ state.saved_osc_visibility = mp.get_property_native( rt.set_osc_visibility() mp.add_forced_key_binding('TAB', 'toggle-menu', rt.toggle_menu) -input.init(state, osd) -input.set_key_mapping('MENU') + +input.init(state, osd, rt.toggle_menu) +input.define_mapping('MENU', { + ['BS'] = {rt.prev_menu}, + ['/'] = {rt.start_search}, + ['Ctrl+s'] = {rt.toggle_menu_sort}, + ['Ctrl+R'] = {rt.reload_data}, + + ['ENTER'] = {rt.select_option}, + ['Ctrl+f'] = {rt.favourite_option}, + ['g'] = {rt.goto_option}, + ['i'] = {rt.open_option_info}, + ['?'] = {rt.open_option_info}, + ['Ctrl+p'] = {rt.goto_playing}, + + ['k'] = {rt.cursor_up, 'repeat'}, + ['j'] = {rt.cursor_down, 'repeat'}, + ['K'] = {rt.cursor_page_up, 'repeat'}, + ['J'] = {rt.cursor_page_down, 'repeat'}, + ['UP'] = {rt.cursor_up, 'repeat'}, + ['DOWN'] = {rt.cursor_down, 'repeat'}, + ['Shift+UP'] = {rt.cursor_page_up, 'repeat'}, + ['Shift+DOWN'] = {rt.cursor_page_down, 'repeat'}, + ['PGUP'] = {rt.cursor_page_up, 'repeat'}, + ['PGDWN'] = {rt.cursor_page_down, 'repeat'}, + ['HOME'] = {rt.cursor_start}, + ['END'] = {rt.cursor_end}, + ['WHEEL_UP'] = {rt.cursor_wheel_up, 'repeat'}, + ['WHEEL_DOWN'] = {rt.cursor_wheel_down, 'repeat'}, + ['Shift+WHEEL_UP'] = {rt.cursor_wheel_page_up, 'repeat'}, + ['Shift+WHEEL_DOWN'] = {rt.cursor_wheel_page_down, 'repeat'}, + + ['Alt+k'] = {rt.move_option_up, 'repeat'}, + ['Alt+j'] = {rt.move_option_down, 'repeat'}, + ['Alt+K'] = {rt.move_option_page_up, 'repeat'}, + ['Alt+J'] = {rt.move_option_page_down, 'repeat'}, + ['Alt+UP'] = {rt.move_option_up, 'repeat'}, + ['Alt+DOWN'] = {rt.move_option_down, 'repeat'}, + ['Shift+Alt+UP'] = {rt.move_option_page_up, 'repeat'}, + ['Shift+Alt+DOWN'] = {rt.move_option_page_down, 'repeat'}, + ['Alt+PGUP'] = {rt.move_option_page_up, 'repeat'}, + ['Alt+PGDWN'] = {rt.move_option_page_down, 'repeat'}, + ['Alt+HOME'] = {rt.move_option_start}, + ['Alt+END'] = {rt.move_option_end}, + ['Alt+WHEEL_UP'] = {rt.move_option_wheel_up, 'repeat'}, + ['Alt+WHEEL_DOWN'] = {rt.move_option_wheel_down, 'repeat'}, + ['Shift+Alt+WHEEL_UP'] = {rt.move_option_wheel_page_up, 'repeat'}, + ['Shift+Alt+WHEEL_DOWN'] = {rt.move_option_wheel_page_down, 'repeat'}, + + _targets = { + scrollbar = { + ['MBTN_LEFT_DBL'] = {rt.dbl_click_scrollbar}, + }, + menu = { + ['MBTN_LEFT'] = {rt.click_menu}, + ['MBTN_LEFT_DBL'] = {rt.dbl_click_menu}, + ['MBTN_RIGHT_DBL'] = {rt.dbl_right_click_menu}, + }, + }, +}) +input.define_mapping('SEARCH', { + ['ANY_UNICODE'] = {rt.search_input_char, 'complex'}, + ['BS'] = {rt.search_input_bs, 'repeat'}, + ['DEL'] = {rt.search_input_del, 'repeat'}, + + ['ENTER'] = {rt.end_search}, + ['ESC'] = {rt.cancel_search}, + ['Ctrl+c'] = {rt.cancel_search}, + + ['LEFT'] = {rt.search_cursor_left, 'repeat'}, + ['RIGHT'] = {rt.search_cursor_right, 'repeat'}, + ['Ctrl+a'] = {rt.search_cursor_start}, + ['Ctrl+e'] = {rt.search_cursor_end}, +}) +input.set_mapping('MENU') input.set_key_bindings() mp.add_timeout(0, function() diff --git a/rt.lua b/rt.lua index e937dbc..fa3eddd 100644 --- a/rt.lua +++ b/rt.lua @@ -1,19 +1,18 @@ -- Copyright 2025 David Vazgenovich Shakaryan local config = require('config') +local input = require('input') local util = require('util') local rt = {} local state local osd -local input local ctx -function rt.init(_state, _osd, _input, _ctx) +function rt.init(_state, _osd, _ctx) state = _state osd = _osd - input = _input ctx = _ctx end @@ -911,7 +910,7 @@ function rt.start_search() end osd:dirty() - input.set_key_mapping('SEARCH') + input.set_mapping('SEARCH') end function rt.end_search() @@ -920,7 +919,7 @@ function rt.end_search() menu.title = 'Search results: ' .. ' (/)' osd:dirty() - input.set_key_mapping('MENU') + input.set_mapping('MENU') end function rt.cancel_search() @@ -938,7 +937,7 @@ function rt.cancel_search() menu.search_active = false state.depth = state.depth - 1 osd:dirty() - input.set_key_mapping('MENU') + input.set_mapping('MENU') end function rt.toggle_menu_sort() -- cgit v1.2.3-70-g09d2