Logitech MX Master: Difference between revisions

Likivik (talk | contribs)
m links, formatting, added {{expand}} - kind of complicated how to setup systemd service and config. I haven't done it and don't understand it.
Correct syntax highlighting in logiops notes
 
(6 intermediate revisions by 3 users not shown)
Line 3: Line 3:
There are 2 main configuration paths for specific MX Master options:
There are 2 main configuration paths for specific MX Master options:


* [https://search.nixos.org/packages?channel=unstable&query=solaar Solaar] - GUI
*[https://search.nixos.org/packages?query=solaar Solaar] - GUI application using the <code>hidapi</code> library


* [https://search.nixos.org/packages?channel=unstable&query=Logio LogiOps] - Command Line
* [https://search.nixos.org/packages?query=logiops LogiOps] - Command Line controlled systemd service
*


== [https://search.nixos.org/packages?channel=unstable&query=solaar Solaar] ==
== Solaar ==
It is possible to quickly run Solaar with nix run, set device settings and have them persist.<syntaxhighlight lang="nixos">
[https://search.nixos.org/packages?query=solaar Solaar] is a program that runs as a user process for configuring devices using Logitech's HID++ protocol.
 
=== Installation ===
It is possible to quickly test Solaar with nix run. Settings will not persist across reboots without proper installation.
 
<syntaxhighlight lang="nixos">
sudo nix run nixpkgs#solaar
sudo nix run nixpkgs#solaar


# sudo needed to detect mouse
# sudo needed to detect mouse
</syntaxhighlight>For more extensive configuration, gesture support, etc perform a proper install.
</syntaxhighlight>
 
To install on NixOS:
 
<syntaxhighlight lang="nixos">
  environment.systemPackages = with pkgs; [
    solaar
  ];
</syntaxhighlight>
 
Additionally, to use Solaar without  `sudo` you will have to add a udev rule. Read the warning and apply caution.
 
<syntaxhighlight lang="nixos">
services.udev.extraRules = ''
# This rule was added by Solaar.
#
# Allows non-root users to have raw access to Logitech devices.
# Allowing users to write to the device is potentially dangerous
# because they could perform firmware updates.
 
ACTION == "remove", GOTO="solaar_end"
SUBSYSTEM != "hidraw", GOTO="solaar_end"
 
# USB-connected Logitech receivers and devices
ATTRS{idVendor}=="046d", GOTO="solaar_apply"
 
# Lenovo nano receiver
ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="6042", GOTO="solaar_apply"
 
# Bluetooth-connected Logitech devices
KERNELS == "0005:046D:*", GOTO="solaar_apply"
 
GOTO="solaar_end"
 
LABEL="solaar_apply"
 
# Allow any seated user to access the receiver.
# uaccess: modern ACL-enabled udev
TAG+="uaccess"
 
# Grant members of the "plugdev" group access to receiver (useful for SSH users)
#MODE="0660", GROUP="plugdev"
 
LABEL="solaar_end"
# vim: ft=udevrules
    '';
</syntaxhighlight>
 
For further configuration, see: [https://pwr-solaar.github.io/Solaar/index project documentation] or section on udev rule specifically [https://pwr-solaar.github.io/Solaar/installation/#installing-solaars-udev-rule-manually installing udev rule manually]
 
== LogiOps ==
[https://search.nixos.org/packages?query=LogiOps LogiOps] a userspace driver running as a [[Systemd/User Services|systemd service]]. Default location for the configuration file is <code>/etc/logid.cfg</code>, but another can be specified using the <code>-c</code> flag.
 
<syntaxhighlight lang="nixos">
# Adds `pkgs.logitech-udev-rules` and `pkgs.ltunify`
hardware.logitech.wireless.enable = true;
 
services.logiops = {
  enable = true;
  config = {
    devices = [
      {
        name = "MX Keys for Business";
        buttons = [
          {
            cid = (fromTOML "hex = 0x0103").hex; # Dictation / Fn+F5
            action = {
              type = "Keypress";
              keys = ["KEY_DICTATE"];
            };
          }
          {
            cid = (fromTOML "hex = 0x0108").hex; # Emoji / Fn+F6
            action = {
              type = "Keypress";
              keys = ["KEY_EMOJI_PICKER"];
            };
          }
          {
            cid = (fromTOML "hex = 0x011C").hex; # Mic Mute /Fn+F7
            action = {
              type = "Keypress";
              keys = ["KEY_MICMUTE"];
            };
          }
          {
            cid = (fromTOML "hex = 0x010A").hex; # Screenshot / Print screen
            action = {
              type = "Keypress";
              keys = ["KEY_PRINT"];
            };
          }
          {
            cid = (fromTOML "hex = 0x006F").hex; # Lock screen / Numpad padlock
            action = {
              type = "Keypress";
              keys = ["KEY_SCREENSAVER"];
            };
          }
        ];
      }
 
      {
        name = "MX Vertical Advanced Ergonomic Mouse";
        dpi = 1500; # max=4000
        hiresscroll = {
          hires = true;
          invert = false;
          target = true;
        };
        # buttons = [{}];
      }
    ];
  };
};
</syntaxhighlight>


See: [https://pwr-solaar.github.io/Solaar/index extensive documentation]
Additional recommendations:


== [https://search.nixos.org/packages?channel=unstable&query=Logio LogiOps] ==
* Use a dedicated file for trial-and-error, i.e. <code>sudo logid -c ./logid.cfg -v</code>
Is a userspace driver running as a systemd service. Default location for the configuration file is /etc/logid.cfg, but another can be specified using the <code>-c</code> flag.
* If auto-detection fails, turn Off/On device while <code>logid</code> is running.


See [https://github.com/PixlOne/logiops/wiki/Configuration project documentation]  and [https://wiki.archlinux.org/title/Logitech_MX_Master Arch Wiki] for usage and configuration details.{{expand}}
See [https://github.com/PixlOne/logiops/wiki/Configuration project documentation]  and [https://wiki.archlinux.org/title/Logitech_MX_Master Arch Wiki] for usage and configuration details.{{expand}}


== Tips ==
== Tips and Tricks ==


=== Smoother Scrolling (Scroll Wheel Resolution) ===
=== Smoother Scrolling (Scroll Wheel Resolution) ===