[{"data":1,"prerenderedAt":309},["ShallowReactive",2],{"i-lucide:menu":3,"i-simple-icons:github":8,"device-\u002Fdevices\u002Fmx-master":10,"device-others-\u002Fdevices\u002Fmx-master":296,"i-lucide:scan-search":303,"i-lucide:arrow-right":305,"i-lucide:info":307},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"id":11,"title":12,"body":13,"description":285,"extension":286,"meta":287,"models":288,"navigation":289,"order":220,"path":290,"seo":291,"seoTitle":292,"status":293,"stem":294,"__hash__":295},"devices\u002Fdevices\u002F1.mx-master.md","MX Master on Linux",{"type":14,"value":15,"toc":276},"minimark",[16,20,33,38,41,58,62,73,83,89,93,96,185,200,204,207,224,227,245,252,256,272],[17,18,19],"p",{},"Logitech's MX Master mice have more buttons than Linux knows what to do with:\na thumb gesture button, a mode-shift button behind the wheel, back and forward,\nand a horizontal thumb wheel. Options+, the software that configures them on\nWindows and macOS, has no Linux version. OpenLogi talks to the mouse over\nHID++, the same protocol Options+ uses, so the mouse's own firmware does the\nwork it would do on any other system.",[21,22,24],"callout",{"icon":23},"lucide:info",[17,25,26,27,32],{},"No MX Master capture has been published from real hardware yet — the only\nfully measured device is the ",[28,29,31],"a",{"href":30},"\u002Fdevices\u002Fsignature-m650","Signature M650",". What\nfollows is what OpenLogi does with the HID++ features an MX Master reports.\nRun the probe on yours to see exactly what it reports.",[34,35,37],"h2",{"id":36},"connections","Connections",[17,39,40],{},"OpenLogi handles every connection these mice ship with through one code path,\nbecause it finds the device by the shape of its HID++ endpoint rather than by\nproduct id:",[42,43,44,52],"ul",{},[45,46,47,51],"li",{},[48,49,50],"strong",{},"MX Master 3S"," — the Logi Bolt receiver, or Bluetooth",[45,53,54,57],{},[48,55,56],{},"MX Master 3 and MX Master 2S"," — the Unifying receiver, or Bluetooth",[34,59,61],{"id":60},"what-works-today","What works today",[17,63,64,67,68,72],{},[48,65,66],{},"Button remapping."," Every control the firmware marks as divertable can be\nbound to a keystroke, a media key, a mouse button, a shell command, a URL, or a\nworkspace or window-switcher action. OpenLogi names the MX-specific controls —\nthe thumb gesture button and the mode-shift (Smart Shift) button — when the\nmouse reports them. Back, forward and middle click are the other usual\ncandidates. Remapped buttons are emitted through ",[69,70,71],"code",{},"uinput",", so they behave the\nsame on Wayland and X11.",[17,74,75,78,79,82],{},[48,76,77],{},"DPI."," If the mouse reports adjustable DPI (HID++ feature ",[69,80,81],{},"0x2201","), the\nvalue is written to the mouse's own flash, so it stays set after a reboot and\nwith OpenLogi closed.",[17,84,85,88],{},[48,86,87],{},"Battery and device details."," Charge level and charging state, model name,\nfirmware version and serial number, read from the mouse rather than estimated.",[34,90,92],{"id":91},"what-does-not-work-yet","What does not work yet",[17,94,95],{},"These are real features of the mouse that OpenLogi does not implement today:",[97,98,99,115],"table",{},[100,101,102],"thead",{},[103,104,105,109,112],"tr",{},[106,107,108],"th",{},"Feature",[106,110,111],{},"HID++",[106,113,114],{},"Status",[116,117,118,136,148,160,174],"tbody",{},[103,119,120,124,133],{},[121,122,123],"td",{},"SmartShift (ratchet to free-spin switching)",[121,125,126,129,130],{},[69,127,128],{},"0x2110"," \u002F ",[69,131,132],{},"0x2111",[121,134,135],{},"Not implemented",[103,137,138,141,146],{},[121,139,140],{},"Thumb wheel customisation",[121,142,143],{},[69,144,145],{},"0x2150",[121,147,135],{},[103,149,150,153,158],{},[121,151,152],{},"Hi-res scrolling settings",[121,154,155],{},[69,156,157],{},"0x2121",[121,159,135],{},[103,161,162,165,172],{},[121,163,164],{},"Gestures (hold the thumb button and move)",[121,166,167,168,171],{},"via ",[69,169,170],{},"0x1B04"," raw XY",[121,173,135],{},[103,175,176,179,182],{},[121,177,178],{},"Per-application profiles",[121,180,181],{},"—",[121,183,184],{},"Designed, not implemented",[17,186,187,188,194,195,199],{},"Until they land, ",[28,189,193],{"href":190,"rel":191},"https:\u002F\u002Fgithub.com\u002Fpwr-Solaar\u002FSolaar",[192],"nofollow","Solaar"," can set\nSmartShift and scrolling while OpenLogi handles the buttons — the two share\nthe device without conflict. See\n",[28,196,198],{"href":197},"\u002Fdocs\u002Falternatives","Compared with Solaar and logiops",".",[34,201,203],{"id":202},"check-your-mouse","Check your mouse",[17,205,206],{},"The probe lists the connection path, firmware, battery feature and every\ncontrol with its divertable flag:",[208,209,214],"pre",{"className":210,"code":211,"language":212,"meta":213,"style":213},"language-bash shiki shiki-themes github-light github-dark-dimmed",".\u002Ftarget\u002Frelease\u002Flogi-probe\n","bash","",[69,215,216],{"__ignoreMap":213},[217,218,221],"span",{"class":219,"line":220},"line",1,[217,222,211],{"class":223},"sOLd2",[17,225,226],{},"To see which buttons OpenLogi can take over, divert them all for 30 seconds\nand press each one:",[208,228,230],{"className":210,"code":229,"language":212,"meta":213,"style":213},".\u002Ftarget\u002Frelease\u002Flogi-probe watch 30\n",[69,231,232],{"__ignoreMap":213},[217,233,234,237,241],{"class":219,"line":220},[217,235,236],{"class":223},".\u002Ftarget\u002Frelease\u002Flogi-probe",[217,238,240],{"class":239},"s-HuK"," watch",[217,242,244],{"class":243},"sviXB"," 30\n",[17,246,247,248,199],{},"A button that prints a notification can be remapped; a silent one cannot on\nthat mouse. Both commands come from the source build — see\n",[28,249,251],{"href":250},"\u002Fdocs\u002Finstallation","Installation",[34,253,255],{"id":254},"other-mx-mice","Other MX mice",[17,257,258,259,262,263,266,267,199],{},"The ",[48,260,261],{},"MX Anywhere"," and ",[48,264,265],{},"MX Vertical"," speak the same protocol and go through\nthe same discovery, so the same rules apply: what the firmware reports is what\nOpenLogi offers. If you have one, the probe output is a welcome addition to the\n",[28,268,271],{"href":269,"rel":270},"https:\u002F\u002Fgithub.com\u002Fmohin7\u002Fopenlogi\u002Fissues",[192],"issue tracker",[273,274,275],"style",{},"html pre.shiki code .sOLd2, html code.shiki .sOLd2{--shiki-default:#6F42C1;--shiki-dark:#F69D50}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s-HuK, html code.shiki .s-HuK{--shiki-default:#032F62;--shiki-dark:#96D0FF}html pre.shiki code .sviXB, html code.shiki .sviXB{--shiki-default:#005CC5;--shiki-dark:#6CB6FF}",{"title":213,"searchDepth":277,"depth":277,"links":278},3,[279,281,282,283,284],{"id":36,"depth":280,"text":37},2,{"id":60,"depth":280,"text":61},{"id":91,"depth":280,"text":92},{"id":202,"depth":280,"text":203},{"id":254,"depth":280,"text":255},"Remap the buttons and set the DPI of a Logitech MX Master 3S, 3 or 2S on Linux with OpenLogi: what works today, what does not yet, and how to check.","md",{},"MX Master 3S, MX Master 3, MX Master 2S",true,"\u002Fdevices\u002Fmx-master",{"title":12,"description":285},"Logitech MX Master 3S, 3 and 2S on Linux","discovered","devices\u002F1.mx-master","PkMFIe9tiLe0M3-RQkWodAPcufAd2jcas0nfgMkbeFU",[297,301],{"path":298,"title":299,"models":300},"\u002Fdevices\u002Fmx-keys","MX Keys on Linux","MX Keys, MX Keys S, MX Keys Mini",{"path":30,"title":302,"models":31},"Signature M650 on Linux",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":304},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M3 7V5a2 2 0 0 1 2-2h2m10 0h2a2 2 0 0 1 2 2v2m0 10v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2\"\u002F>\u003Ccircle cx=\"12\" cy=\"12\" r=\"3\"\u002F>\u003Cpath d=\"m16 16l-1.9-1.9\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":306},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":308},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 16v-4m0-4h.01\"\u002F>\u003C\u002Fg>",1793128330106]