Quick-hacking your Mac input devices for Geforce Now
Praise be to NVIDIA’s Geforce Now, which allows us Mac nerds to dabble in full-fat Windows gaming without using a PC. For a while, before streaming gaming was consumer-ready, I was happy to boot into Bootcamp on my MacBook Pro with a custom-wired NVIDA eGPU. I felt like a hacker. The games looked great. But then my expensive GPU card became obsolete, and more crucially, Apple stopped signing NVIDIA drivers for macOS, making my eGPU suitable only for when I didn’t need my Mac as a Mac.
Enter GFN, which for me garnered, on first use, a genuine “holy shit!” moment, when I realized streaming tech was further along than I thought. But the best thing in my book is that, technically, there’s a Windows PC on the other end of the stream; one with relatively beefy (virtual) specs; handily able to run current games with ray tracing, DLSS, and all the other whistling bells that NVIDIA brings to Moore’s table. Games belong to you care of retailers like Steam, which is a few shades better than owning Stadia games, which last only as long as the service itself. What a delight it is to have raytraced Cyberpunk 2077 booting, bugs and all, from a macOS desktop.
Of course there are issues, however, and predominant in my mind for the Cyberpunk launch has been matters of input.
PC games expect a mouse and keyboard. (A controller is fine too) They further expect your mouse to have two buttons and a scroll wheel which can be pushed like a button. Who wouldn’t have these things? They are standard PC components, readily available; and any self-respecting player of games likely has a 10,000 DPI mouse with like ten buttons.
Except for us Mac users. I would expect that the majority of us use a Magic Mouse, which really is a lovely Apple device, with a capacious battery…and one mouse button.
Apple reductivism at its best/worst: why have two different clicky buttons? Why have a separate mouse wheel? Touch screens are everywhere; long ago, Apple did an Apple and designed a touch mouse with context-sensitive buttons. Want a right click? Click on the right side. Want to scroll? Swipe!
Great. Except: PC games expect two buttons. That you can press at the same time. So you can, you know, hold down the right button to aim, and click the left to shoot. Or, perhaps, deftly navigate your inventory with the scroll wheel, with each *click* ticking through a slot. Or, further, press that wheel button down to do some other thing.
Assumptions made, assumptions kept; Magic Mouse totally fucked. You can’t hold down two virtual buttons on this mouse; scrolling has no *click*; there is no wheel button. Now, this isn’t a huge deal with well-built games: in these sort of games, you can remap buttons and keys. The best ones let you switch to “aim toggle”, and then you’re not contorting your fingers on your mouse at all.
Not janky newcomer Cyberpunk, which may currently be breaking Asana with its issue queue. Somewhere on there, there’s probably an issue to add aim toggle, or remap countless controls that aren’t surfaced; but they’ve got loads of other todos competing in the queue. But still this Mac gamer persists, and I have a solution to these (particular) problems.
There’s quite a few apps on Mac to remap your keys irrespective of (or specific to) certain apps. Some of these don’t seem to be “seen” by GFN, at least without changing the way it parses mouse movement in general, and I don’t like changing that setting. What does work is the wonderful and arcane ControllerMate. (Full disclosure: this app may cease to work on Catalina onwards. Not an issue for me, because I’m sitting comfortably on Mojave until I upgrade my hardware. Caveat emptor.)
With ControllerMate, I added a Virtual Mouse, which is a perfectly good input device, as far as macOS is concerned. What’s more, my Virtual Mouse has *all* the buttons.
First, I have my Magic Mouse’s right click toggle the right click on my Virtual Mouse, which effectively enables aim toggle everywhere.
Second, I map a keyboard key to the Virtual Mouse right click, as an optional “hold-to-aim”. This isn’t the best solution for more complex games, because you want something on your keyboard hand that isn’t already used. And Cyberpunk actually has a lot of keys in play. I ended up choosing the command key, which in general is sort of verboten on Windows, because that key position is the Windows key, which opens the Start menu. For this reason, or maybe because of command’s use in macOS (more on that below), GFN doesn’t seem to register command as a key available in mapping, at least to Cyberpunk. But ControllerMate will let you do just about anything.
Finally, I mapped the virtual wheel button to a keyboard key relatively near my mouse-hand — it’s not used that much, and not in action sequences. I like the keypad period for that one.
More on the command key: obviously this has downsides on the macOS side of things. In my use case, if you want to aim while moving, and you use WASD, and you’re using my remap…moving forward (“W”) while aiming (command) will try to close the GFN window.
So, solution for that: in System Prefs>Keyboard, you can disable modifier keys. That’s a bit of a click-hole to enable and disable every time you launch GFN, so I made an AppleScript:
There’s my quickhack. If you like my solution, it’s a launch/enable/quit in ControllerMate, and a run of my AppleScript. It could be automated further, but GFN takes a few moments to get going anyway. There’s something in the “all-manual” approach of GFN that makes this OK to me — a few switches to toggle, as the hatch closes; the battle station revving up.
Sooner or later, I’ll probably just get a buttony mouse for these times. But: what fun it is — and somewhat in keeping with Cyberpunk — to mold macOS to your whims. The loss of ControllerMate in current macOS is somewhat suggestive of the wide-angle simplification of macOS that us nerds tend to wring our hands about. May it stay weird and hackable.