# -*- coding: utf-8 -*- # input-remapper - GUI for device specific keyboard mappings # Copyright (C) 2025 sezanzeb # # This file is part of input-remapper. # # input-remapper is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # input-remapper is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with input-remapper. If not, see . """A fallback backend used when no focus detection is possible. This is selected for example on GNOME-Wayland, where the focused window cannot be queried without a shell extension. The feature is effectively inactive, but the focus-service still runs and reports a clear status. """ from __future__ import annotations from typing import Optional from inputremapper.focus.focus_backend import FocusBackend, FocusEvent, OnFocus from inputremapper.logging.logger import logger class NullBackend(FocusBackend): """Does nothing. Always available as the last-resort fallback.""" name = "null" @staticmethod def is_available() -> bool: return True def start(self, on_focus: OnFocus) -> None: logger.warning( "No supported focus detection is available for this session " "(GNOME-Wayland is not supported). Focus-driven preset binding is " "inactive." ) def stop(self) -> None: pass def get_current(self) -> Optional[FocusEvent]: return None