from kivy.app import App
from kivy.core.window import Window
from kivy.uix.button import Button
try:
from android import log
except ImportError:
def log(tag, msg): print(f"[{tag}] {msg}") # fallback for desktop
#
KEYCODE_MAP = {
19: 'up', # KEYCODE_DPAD_UP
20: 'down', # KEYCODE_DPAD_DOWN
21: 'left', # KEYCODE_DPAD_LEFT
22: 'right', # KEYCODE_DPAD_RIGHT
23: 'select', # KEYCODE_DPAD_CENTER
273: 'up',
274: 'down',
275: 'right',
276: 'left',
13: 'select',
96: 'select',
97: 'back',
99: 'select',
100: 'menu',
109: 'back',
110: 'back',
108: 'select',
106: 'right',
105: 'left',
66: 'select',
160: 'select',
4: 'back',
82: 'menu',
111: 'escape',
7: 'select',
8: 'select',
9: 'select',
10: 'select',
11: 'select',
12: 'select',
13: 'select',
14: 'select',
15: 'select',
16: 'select',
85: 'pause',
126: 'play',
127: 'pause',
86: 'stop',
87: 'next',
88: 'prev',
165: 'info',
}
class TVKeyHandler:
def __init__(self, app):
self.app = app # Pass in SportsApp instance
def handle_key(self, keycode):
action = KEYCODE_MAP.get(keycode)
log("remote-event", f"KEY RECEIVED: {keycode} → {action}")
focused = self.get_focused()
if not focused:
log("remote-event", "
try:
screen = self.app.root.get_screen('MainScreen')
screen.ids.today_button.focus = True
log("remote-event", "
return True
except Exception as e:
log("remote-event", f"
return False
if not action:
log("remote-event", f"Unhandled keycode: {keycode}")
return False
if action == 'up':
focused.focus_previous('up')
elif action == 'down':
focused.focus_next('down')
elif action == 'right':
focused.focus_next('right')
elif action == 'left':
focused.focus_previous('left')
elif action == 'select':
if isinstance(focused, Button):
focused.trigger_action(duration=0.1)
elif action == 'back' or action == 'escape':
App.get_running_app().stop()
elif action == 'menu':
log("remote-event", "Menu button pressed — implement overlay or settings")
else:
log("remote-event", f"Unhandled mapped action: {action}")
return False
return True
def get_focused(self):
from kivy.core.window import Window
return Window.focused_widget or None
< /code>
Я попытался установить пользовательский список ключей Android. Если я отправляю команды через ADB, работа в меню, но использование пульта дистанционного управления просто ничего не делает. Есть решение? Я попробовал Google, и я просто не могу найти много задокументированных при использовании DPAD или удаленных управления, так что это даже возможно? Я упускаю что -то очень простое?
Подробнее здесь: https://stackoverflow.com/questions/796 ... te-control
Мобильная версия