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