summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-01-24 23:44:54 -0800
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2026-01-24 23:44:54 -0800
commit6c9ad9a77dd67145b9015bb13018534025e33a49 (patch)
tree600e18f5fde7b5da9f118cae85f9257c39cd8281
parent204f1e0933d122d0ef3147e1086e54fd4d6c7964 (diff)
downloadmpv-iptv-menu-6c9ad9a77dd67145b9015bb13018534025e33a49.tar.gz
mpv-iptv-menu-6c9ad9a77dd67145b9015bb13018534025e33a49.tar.xz
move mapping definitions to main
-rw-r--r--input.lua93
-rw-r--r--main.lua79
-rw-r--r--rt.lua11
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: <text>' ..
' <colour.info>(<num_matches>/<num_total>)'
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()