diff --git a/data/key-mapper.glade b/data/key-mapper.glade
index 18aebdd9..5f206f17 100644
--- a/data/key-mapper.glade
+++ b/data/key-mapper.glade
@@ -487,6 +487,42 @@
2
+
+
+
+ True
+ True
+ 3
+
+
True
diff --git a/keymapper/config.py b/keymapper/config.py
index 65bbbd59..2e2f66d9 100644
--- a/keymapper/config.py
+++ b/keymapper/config.py
@@ -44,12 +44,16 @@ class _Config:
self._config = {}
self.load_config()
- def set_autoload_preset(self, device, preset):
+ def set_autoload_preset(self, device, preset, load=True):
"""Set a preset to be automatically applied on start."""
if self._config.get('autoload') is None:
self._config['autoload'] = {}
- self._config['autoload'][device] = preset
+ if load:
+ self._config['autoload'][device] = preset
+ elif self._config['autoload'].get(device) is not None:
+ # TODO test
+ del self._config['autoload'][device]
def iterate_autoload_presets(self):
"""get tuples of (device, preset)."""
diff --git a/keymapper/daemon.py b/keymapper/daemon.py
index 995428ee..35bfc856 100644
--- a/keymapper/daemon.py
+++ b/keymapper/daemon.py
@@ -80,9 +80,11 @@ class Daemon(service.Object):
"""
def __init__(self, *args, autoload=True, **kwargs):
"""Constructs the daemon. You still need to run the GLib mainloop."""
+ print(autoload)
self.injectors = {}
if autoload:
for device, preset in config.iterate_autoload_presets():
+ print(device, preset)
mapping = Mapping()
mapping.load(device, preset)
self.injectors[device] = KeycodeInjector(device, mapping)
diff --git a/keymapper/gtk/window.py b/keymapper/gtk/window.py
index 8cbd1ca6..ff481ed7 100755
--- a/keymapper/gtk/window.py
+++ b/keymapper/gtk/window.py
@@ -37,7 +37,7 @@ from keymapper.gtk.row import Row
from keymapper.gtk.unsaved import unsaved_changes_dialog, GO_BACK
from keymapper.dev.reader import keycode_reader
from keymapper.daemon import get_dbus_interface
-from keymapper.paths import get_config_path
+from keymapper.config import config
def gtk_iteration():
@@ -288,6 +288,14 @@ class Window:
# changes a bit
keycode_reader.start_reading(self.selected_device)
+ def on_preset_autoload_switch_activate(self, _, active):
+ """Load the preset automatically next time the user logs in."""
+ device = self.selected_device
+ preset = self.selected_preset
+ # TODO test call this and then check config
+ config.set_autoload_preset(device, preset, active)
+ config.save_config()
+
def on_select_device(self, dropdown):
"""List all presets, create one if none exist yet."""
if dropdown.get_active_id() == self.selected_device: