I've been using a Mac for forever. It's just the right level of ultimate control over the system, with a graphical user interface that just works (tm). 

But, I develop cross-platform apps (i.e., WhatPulse, MuteDeck) which need to work on both macOS and Windows. For that, I run Windows inside a VM on VMware Fusion.

This is a quick article on how to directly connect a keyboard and/or mouse to that VM, instead of using the input device sharing that's built in.

The Need for a Keyboard & Mouse

WhatPulse is a computing activity tracker, which keeps track of statistics of what you're doing being your computer. From the number of keys, to which apps, and to which hardware you're using. When you're using VMware Fusion to run Windows, Windows sees a boring "VMware Virtual USB Mouse" - no matter which mouse you're actually using. I wanted WhatPulse to see my actual keyboard and mouse. 

HID Passthrough

Now, the VMware knowledge base claims that you can directly attach a second mouse and/or keyboard to VMs, but the KB is either wrong, or outdated for Fusion v13. Adding the below configuration to your VM's .vmx file, does not work

usb.generic.allowHID = "TRUE"
usb.generic.allowLastHID = "TRUE"

What does work, is adding the same configuration to a global Fusion config file. You can find that file here: /Library/Preferences/VMware Fusion/config

Shut down Fusion entirely, and then use sudo (it's a system file) to edit the file with your favorite editor. Make sure it has these lines:

> cat '/Library/Preferences/VMware Fusion/config'
usb.generic.allowHID = "TRUE"
usb.generic.allowLastHID = "TRUE"

Then start Fusion again. Once your Windows VM is up and running again, you'll see a lot more options in the USB & Bluetooth devices.

Word of caution; once you connect a device to the VM, you'll have to unplug it and plug it back in, to get it back on the host computer. So, don't use your main/single keyboard. 😉

Share the wealth!