yep, more dotfiles
1{ self
2, config
3, lib
4, pkgs
5, ...
6}:
7
8let
9 inherit (self.outputs) nixosModules;
10
11 cfg = config.local.fragment.logiops;
12in
13{
14 imports = [ nixosModules.logiops ];
15
16 options.local.fragment.logiops.enable = lib.mkEnableOption ''
17 LogiOps related
18 '';
19
20 config.services.logiops = lib.mkIf cfg.enable {
21 enable = true;
22 package = pkgs.logiops_0_2_3;
23
24 settings =
25 let
26 cid = {
27 # Control IDs │ reprog? │ fn key? │ mouse key? │ gesture support?
28 leftMouse = 80; # 0x50 │ │ │ YES │
29 rightMouse = 81; # 0x51 │ │ │ YES │
30 middleMouse = 81; # 0x52 │ YES │ │ YES │ YES
31 back = 83; # 0x53 │ YES │ │ YES │ YES
32 forward = 86; # 0x56 │ YES │ │ YES │ YES
33 switchReceivers = 215; # 0xD7 │ YES │ │ │ YES
34 mouseSensitivity = 253; # 0xFD │ YES │ │ YES │ YES
35 };
36 in
37 {
38 devices = [{
39 name = "MX Vertical Advanced Ergonomic Mouse";
40
41 dpi = 1500;
42
43 hiresscroll = {
44 hires = true;
45 invert = false;
46 target = false;
47 };
48
49 buttons = [
50 {
51 cid = cid.forward;
52 action = {
53 type = "Keypress";
54 keys = [ "KEY_FORWARD" ];
55 # type = "Gestures";
56 # gestures = [
57 # {
58 # direction = "Left";
59 # mode = "OnThreshold";
60 # action = {
61 # type = "Keypress";
62 # keys = ["KEY_LEFTMETA" "KEY_LEFTCTRL" "KEY_LEFTSHIFT" "KEY_TAB"];
63 # };
64 # }
65 # ];
66 };
67 }
68 {
69 cid = cid.back;
70 action = {
71 type = "Keypress";
72 keys = [ "KEY_BACK" ];
73 };
74 }
75 {
76 cid = cid.mouseSensitivity;
77 action = {
78 type = "Keypress";
79 keys = [ "KEY_LEFTMETA" ];
80 };
81 }
82 {
83 cid = cid.switchReceivers;
84 action.type = "None";
85 }
86 ];
87 }];
88 };
89 };
90}
91