diff --git a/bin/key-mapper-gtk b/bin/key-mapper-gtk index 7cb3b1b5..1964becb 100755 --- a/bin/key-mapper-gtk +++ b/bin/key-mapper-gtk @@ -50,7 +50,7 @@ if __name__ == '__main__': log_info() # import key-mapper stuff after setting the log verbosity - from keymapper.gtk.window import Window + from keymapper.gui.window import Window from keymapper.daemon import Daemon window = Window() diff --git a/bin/key-mapper-service b/bin/key-mapper-service index 206dc72d..05a41851 100755 --- a/bin/key-mapper-service +++ b/bin/key-mapper-service @@ -33,7 +33,7 @@ from pydbus import SystemBus from keymapper.logger import update_verbosity, log_info, \ add_filehandler, logger -from keymapper.dev.permissions import can_read_devices +from keymapper.permissions import can_read_devices if __name__ == '__main__': diff --git a/keymapper/daemon.py b/keymapper/daemon.py index 63a2b395..60b7d94a 100644 --- a/keymapper/daemon.py +++ b/keymapper/daemon.py @@ -35,7 +35,7 @@ from pydbus import SystemBus from gi.repository import GLib from keymapper.logger import logger -from keymapper.dev.injector import Injector, UNKNOWN +from keymapper.injection.injector import Injector, UNKNOWN from keymapper.mapping import Mapping from keymapper.config import config from keymapper.state import system_mapping diff --git a/keymapper/dev/__init__.py b/keymapper/gui/__init__.py similarity index 100% rename from keymapper/dev/__init__.py rename to keymapper/gui/__init__.py diff --git a/keymapper/dev/reader.py b/keymapper/gui/reader.py similarity index 99% rename from keymapper/dev/reader.py rename to keymapper/gui/reader.py index 4317d1aa..e31c1fcb 100644 --- a/keymapper/dev/reader.py +++ b/keymapper/gui/reader.py @@ -35,8 +35,7 @@ from keymapper.logger import logger from keymapper.key import Key from keymapper.state import custom_mapping from keymapper.getdevices import get_devices -from keymapper.dev import utils - +from keymapper import utils CLOSE = 1 diff --git a/keymapper/gtk/row.py b/keymapper/gui/row.py similarity index 99% rename from keymapper/gtk/row.py rename to keymapper/gui/row.py index 81b1d734..be73b162 100644 --- a/keymapper/gtk/row.py +++ b/keymapper/gui/row.py @@ -28,7 +28,7 @@ from gi.repository import Gtk, GLib, Gdk from keymapper.state import custom_mapping, system_mapping from keymapper.logger import logger from keymapper.key import Key -from keymapper.dev.reader import keycode_reader +from keymapper.gui.reader import keycode_reader CTX_KEYCODE = 2 diff --git a/keymapper/gtk/window.py b/keymapper/gui/window.py similarity index 98% rename from keymapper/gtk/window.py rename to keymapper/gui/window.py index c556dd98..b52be3ac 100755 --- a/keymapper/gtk/window.py +++ b/keymapper/gui/window.py @@ -33,13 +33,13 @@ from keymapper.presets import get_presets, find_newest_preset, \ delete_preset, rename_preset, get_available_preset_name from keymapper.logger import logger from keymapper.getdevices import get_devices -from keymapper.gtk.row import Row, to_string -from keymapper.dev.reader import keycode_reader -from keymapper.dev.injector import RUNNING, FAILED, NO_GRAB +from keymapper.gui.row import Row, to_string +from keymapper.gui.reader import keycode_reader +from keymapper.injection.injector import RUNNING, FAILED, NO_GRAB from keymapper.daemon import get_dbus_interface from keymapper.config import config -from keymapper.dev.macros import is_this_a_macro, parse -from keymapper.dev import permissions +from keymapper.injection.macros import is_this_a_macro, parse +from keymapper import permissions def gtk_iteration(): diff --git a/keymapper/gtk/__init__.py b/keymapper/injection/__init__.py similarity index 100% rename from keymapper/gtk/__init__.py rename to keymapper/injection/__init__.py diff --git a/keymapper/dev/event_producer.py b/keymapper/injection/event_producer.py similarity index 99% rename from keymapper/dev/event_producer.py rename to keymapper/injection/event_producer.py index 8247c49d..25ba53e8 100644 --- a/keymapper/dev/event_producer.py +++ b/keymapper/injection/event_producer.py @@ -30,8 +30,7 @@ from evdev.ecodes import EV_REL, REL_X, REL_Y, REL_WHEEL, REL_HWHEEL, \ from keymapper.logger import logger from keymapper.config import MOUSE, WHEEL -from keymapper.dev import utils - +from keymapper import utils # miniscule movements on the joystick should not trigger a mouse wheel event WHEEL_THRESHOLD = 0.15 diff --git a/keymapper/dev/injector.py b/keymapper/injection/injector.py similarity index 98% rename from keymapper/dev/injector.py rename to keymapper/injection/injector.py index 742b906e..69986342 100644 --- a/keymapper/dev/injector.py +++ b/keymapper/injection/injector.py @@ -33,10 +33,10 @@ from evdev.ecodes import EV_KEY, EV_REL from keymapper.logger import logger from keymapper.getdevices import get_devices, is_gamepad -from keymapper.dev.keycode_mapper import KeycodeMapper -from keymapper.dev import utils -from keymapper.dev.event_producer import EventProducer -from keymapper.dev.macros import parse, is_this_a_macro +from keymapper.injection.keycode_mapper import KeycodeMapper +from keymapper import utils +from keymapper.injection.event_producer import EventProducer +from keymapper.injection.macros import parse, is_this_a_macro from keymapper.state import system_mapping from keymapper.mapping import DISABLE_CODE from keymapper.config import NONE, MOUSE, WHEEL diff --git a/keymapper/dev/keycode_mapper.py b/keymapper/injection/keycode_mapper.py similarity index 99% rename from keymapper/dev/keycode_mapper.py rename to keymapper/injection/keycode_mapper.py index cbbdeb52..b077d9e5 100644 --- a/keymapper/dev/keycode_mapper.py +++ b/keymapper/injection/keycode_mapper.py @@ -29,8 +29,7 @@ from evdev.ecodes import EV_KEY, EV_ABS from keymapper.logger import logger from keymapper.mapping import DISABLE_CODE -from keymapper.dev import utils - +from keymapper import utils # this state is shared by all KeycodeMappers of this process diff --git a/keymapper/dev/macros.py b/keymapper/injection/macros.py similarity index 100% rename from keymapper/dev/macros.py rename to keymapper/injection/macros.py diff --git a/keymapper/injection/readme.md b/keymapper/injection/readme.md new file mode 100644 index 00000000..cec4892d --- /dev/null +++ b/keymapper/injection/readme.md @@ -0,0 +1,12 @@ +# Injection + +This folder contains all classes that are only relevant for the injection +process. There is one process for each device that is being injected for, +and one context object that is being passed around everywhere for all to use. + +The benefit of the context object over regular parameters is that the same +parameters don't have to be passed to classes and stored redundantly all +the time. The context is like the processes global configuration and you +can use whatever is inside. Just don't modify it. If you access a context +member in two classes you definitely know that those two are working with +the same thing without having to rely on scattering your pointers everywhere. diff --git a/keymapper/dev/permissions.py b/keymapper/permissions.py similarity index 100% rename from keymapper/dev/permissions.py rename to keymapper/permissions.py diff --git a/keymapper/dev/utils.py b/keymapper/utils.py similarity index 98% rename from keymapper/dev/utils.py rename to keymapper/utils.py index 7addfb4d..f3152389 100644 --- a/keymapper/dev/utils.py +++ b/keymapper/utils.py @@ -19,7 +19,7 @@ # along with key-mapper. If not, see . -"""Utility functions for all other modules in keymapper.dev""" +"""Utility functions.""" import math diff --git a/setup.py b/setup.py index b2e7c195..a8ec71be 100644 --- a/setup.py +++ b/setup.py @@ -55,8 +55,8 @@ setup( license='GPL-3.0', packages=[ 'keymapper', - 'keymapper.dev', - 'keymapper.gtk' + 'keymapper.gui', + 'keymapper.injection' ], data_files=[ # see development.md#files diff --git a/tests/test.py b/tests/test.py index 45df9720..40c83d8e 100644 --- a/tests/test.py +++ b/tests/test.py @@ -401,13 +401,13 @@ patch_select() patch_events() from keymapper.logger import update_verbosity -from keymapper.dev.injector import Injector +from keymapper.injection.injector import Injector from keymapper.config import config -from keymapper.dev.reader import keycode_reader +from keymapper.gui.reader import keycode_reader from keymapper.getdevices import refresh_devices from keymapper.state import system_mapping, custom_mapping from keymapper.paths import get_config_path -from keymapper.dev.keycode_mapper import active_macros, unreleased +from keymapper.injection.keycode_mapper import active_macros, unreleased # no need for a high number in tests Injector.regrab_timeout = 0.15 diff --git a/tests/testcases/test_daemon.py b/tests/testcases/test_daemon.py index deda85f5..cd2d60fa 100644 --- a/tests/testcases/test_daemon.py +++ b/tests/testcases/test_daemon.py @@ -37,7 +37,7 @@ from keymapper.getdevices import get_devices from keymapper.paths import get_preset_path, get_config_path from keymapper.key import Key from keymapper.mapping import Mapping -from keymapper.dev.injector import STARTING, RUNNING, STOPPED, UNKNOWN +from keymapper.injection.injector import STARTING, RUNNING, STOPPED, UNKNOWN from keymapper.daemon import Daemon, get_dbus_interface, BUS_NAME, \ path_to_device_name diff --git a/tests/testcases/test_dev_utils.py b/tests/testcases/test_dev_utils.py index c7c24ec4..29d6b5c3 100644 --- a/tests/testcases/test_dev_utils.py +++ b/tests/testcases/test_dev_utils.py @@ -27,7 +27,7 @@ from evdev.ecodes import EV_KEY, EV_ABS, ABS_HAT0X, KEY_A, \ from keymapper.config import config, BUTTONS from keymapper.mapping import Mapping -from keymapper.dev import utils +from keymapper import utils from tests.test import new_event, InputDevice, MAX_ABS @@ -38,10 +38,13 @@ class TestDevUtils(unittest.TestCase): self.assertIsNone(utils.get_max_abs(InputDevice('/dev/input/event10'))) def test_will_report_key_up(self): - self.assertFalse(utils.will_report_key_up(new_event(EV_REL, REL_WHEEL, 1))) - self.assertFalse(utils.will_report_key_up(new_event(EV_REL, REL_HWHEEL, -1))) + self.assertFalse( + utils.will_report_key_up(new_event(EV_REL, REL_WHEEL, 1))) + self.assertFalse( + utils.will_report_key_up(new_event(EV_REL, REL_HWHEEL, -1))) self.assertTrue(utils.will_report_key_up(new_event(EV_KEY, KEY_A, 1))) - self.assertTrue(utils.will_report_key_up(new_event(EV_ABS, ABS_HAT0X, -1))) + self.assertTrue( + utils.will_report_key_up(new_event(EV_ABS, ABS_HAT0X, -1))) def test_is_wheel(self): self.assertTrue(utils.is_wheel(new_event(EV_REL, REL_WHEEL, 1))) diff --git a/tests/testcases/test_event_producer.py b/tests/testcases/test_event_producer.py index 85f84371..a194bcf0 100644 --- a/tests/testcases/test_event_producer.py +++ b/tests/testcases/test_event_producer.py @@ -27,7 +27,7 @@ from evdev.ecodes import EV_REL, REL_X, REL_Y, REL_WHEEL, REL_HWHEEL, \ from keymapper.config import config from keymapper.mapping import Mapping -from keymapper.dev.event_producer import EventProducer, MOUSE, WHEEL +from keymapper.injection.event_producer import EventProducer, MOUSE, WHEEL from tests.test import InputDevice, UInput, MAX_ABS, clear_write_history, \ uinput_write_history, quick_cleanup, new_event diff --git a/tests/testcases/test_injector.py b/tests/testcases/test_injector.py index 74c14b4b..3aa268af 100644 --- a/tests/testcases/test_injector.py +++ b/tests/testcases/test_injector.py @@ -28,15 +28,15 @@ from evdev.ecodes import EV_REL, EV_KEY, EV_ABS, ABS_HAT0X, BTN_LEFT, KEY_A, \ REL_X, REL_Y, REL_WHEEL, REL_HWHEEL, BTN_A, ABS_X, ABS_Y, \ ABS_Z, ABS_RZ, ABS_VOLUME -from keymapper.dev.injector import is_numlock_on, set_numlock, \ +from keymapper.injection.injector import is_numlock_on, set_numlock, \ ensure_numlock, Injector, is_in_capabilities, \ STARTING, RUNNING, STOPPED, NO_GRAB, UNKNOWN from keymapper.state import custom_mapping, system_mapping from keymapper.mapping import Mapping, DISABLE_CODE, DISABLE_NAME from keymapper.config import config, NONE, MOUSE, WHEEL, BUTTONS from keymapper.key import Key -from keymapper.dev.macros import parse -from keymapper.dev import utils +from keymapper.injection.macros import parse +from keymapper import utils from keymapper.getdevices import get_devices, is_gamepad from tests.test import new_event, pending_events, fixtures, \ diff --git a/tests/testcases/test_integration.py b/tests/testcases/test_integration.py index 809a7bc8..74713a55 100644 --- a/tests/testcases/test_integration.py +++ b/tests/testcases/test_integration.py @@ -40,10 +40,10 @@ from gi.repository import Gtk, Gdk from keymapper.state import custom_mapping, system_mapping, XMODMAP_FILENAME from keymapper.paths import CONFIG_PATH, get_preset_path, get_config_path from keymapper.config import config, WHEEL, MOUSE, BUTTONS -from keymapper.dev.reader import keycode_reader, FILTER_THRESHOLD -from keymapper.dev.injector import RUNNING -from keymapper.gtk.row import to_string, HOLDING, IDLE -from keymapper.dev import permissions +from keymapper.gui.reader import keycode_reader, FILTER_THRESHOLD +from keymapper.injection.injector import RUNNING +from keymapper.gui.row import to_string, HOLDING, IDLE +from keymapper import permissions from keymapper.key import Key from tests.test import tmp, pending_events, new_event, spy, cleanup, \ diff --git a/tests/testcases/test_keycode_mapper.py b/tests/testcases/test_keycode_mapper.py index fc6ac9ae..5fde94ee 100644 --- a/tests/testcases/test_keycode_mapper.py +++ b/tests/testcases/test_keycode_mapper.py @@ -26,10 +26,10 @@ import time from evdev.ecodes import EV_KEY, EV_ABS, KEY_A, BTN_TL, \ ABS_HAT0X, ABS_HAT0Y, ABS_HAT1X, ABS_HAT1Y, ABS_Y -from keymapper.dev.keycode_mapper import active_macros, KeycodeMapper, \ +from keymapper.injection.keycode_mapper import active_macros, KeycodeMapper, \ unreleased, subsets from keymapper.state import system_mapping -from keymapper.dev.macros import parse +from keymapper.injection.macros import parse from keymapper.config import config, BUTTONS from keymapper.mapping import Mapping, DISABLE_CODE diff --git a/tests/testcases/test_macros.py b/tests/testcases/test_macros.py index d07d456b..74e984c1 100644 --- a/tests/testcases/test_macros.py +++ b/tests/testcases/test_macros.py @@ -23,7 +23,7 @@ import time import unittest import asyncio -from keymapper.dev.macros import parse, _Macro, _extract_params, \ +from keymapper.injection.macros import parse, _Macro, _extract_params, \ is_this_a_macro, _parse_recurse, handle_plus_syntax from keymapper.config import config from keymapper.mapping import Mapping diff --git a/tests/testcases/test_permissions.py b/tests/testcases/test_permissions.py index c08ee73a..8612756f 100644 --- a/tests/testcases/test_permissions.py +++ b/tests/testcases/test_permissions.py @@ -25,7 +25,7 @@ import getpass import subprocess import unittest -from keymapper.dev.permissions import check_injection_rights, check_group, \ +from keymapper.permissions import check_injection_rights, check_group, \ can_read_devices from keymapper.paths import USER from keymapper.daemon import is_service_running diff --git a/tests/testcases/test_reader.py b/tests/testcases/test_reader.py index d312b5ec..cb7b55a1 100644 --- a/tests/testcases/test_reader.py +++ b/tests/testcases/test_reader.py @@ -27,7 +27,7 @@ from evdev.ecodes import EV_KEY, EV_ABS, ABS_HAT0X, ABS_HAT0Y, KEY_COMMA, \ BTN_LEFT, BTN_TOOL_DOUBLETAP, ABS_Z, ABS_Y, ABS_MISC, KEY_A, \ EV_REL, REL_WHEEL, REL_X, ABS_X, ABS_RZ -from keymapper.dev.reader import keycode_reader, will_report_up, \ +from keymapper.gui.reader import keycode_reader, will_report_up, \ event_unix_time from keymapper.state import custom_mapping from keymapper.config import BUTTONS, MOUSE