The Citrix X1 Mouse

Like I’ve written many times before, my iPad is my main personal computer. But both the kind of work I do and the hobbies I engage in force me to remote to various machines on a daily basis and I’ve grown tired of Apple‘s take on what “professional” use of their hardware is like, so when I caught a whiff of the X1, I fished around until I could order one in Europe.

Yes. The X1 is companion hardware for the Citrix Receiver, their iOS client. Citrix has had brilliant, high-performing remote desktop technology for years, and I notably used it ten years ago to close my laptop in Portugal, re-open a few hours later in Italy and just keep on going on a Word document (an RFP for DSL equipment, if I remember correctly) on top of GPRS. Yes, less (average) bits per second than dial-up. And it worked.

These days things have changed tremendously, and RDP delivers an excellent desktop experience with moderate bandwidth use – so I regularly use that to connect to my machines on Azure, and fall back to VNC on Linux (largely because X11rdp is still a pain to set up and keep secure). Jump Desktop supports both just fine (including tunneling both inside SSH), so that’s what I’ve been using for years now.

Even though Jump Desktop supports a “trackpad” mode that goes a long way toward making a remote mouse pointer usable on an iPad, it’s not as immediate as a mouse – I’ve grown used to it and compensated by using keyboard shortcuts extensively on Linux, but using Windows machines remotely is a pain, especially when you’re dealing with single-purpose VMs that are not worth the time to configure the way you prefer (and believe me, I’ve looked for ways to script the configuration of various keyboard shortcuts and never found anything that fit me).

The interesting thing is that I have no trouble whatsoever with using the touchscreen itself – in fact, I’ve become somewhat of a fan of Windows 10 Tablet Mode, which translates beautifully over Remote Desktop. It’s having to constantly toggling between touch and trackpad modes that has been getting to me, especially since the iPad mini’s small size makes it a little too hard to position the caret and do precision dragging in touch mode – now there’s no need to toggle anything anymore.

Incidentally, the keyboard I use is the Logitech Keys-to-Go, which I got during my recent trip to Seattle. I like its portability and the fact that (unlike some of Logitech’s other offerings) it has a Ctrl key. It doesn’t have Esc, though, which is a constant pain, but it sort of makes up for it by being close enough in key size and spacing to make it possible for me to touch-type at speed without any hiccups.

I’ve been using it to write just about everything here for the past eight months, and love it:

Yep, again, that’s an iPad mini. I prefer that form factor for portability and general-purpose use (and freely grant it can feel a little cramped at times), but with a full-screen editor going and the font set to a sensible size it is just right.

The whole setup (plus a power adapter and the requisite dongles) fits into a small messenger bag.

The X1

Physically there’s nothing much to it: It’s your average nondescript plastic mouse, suitable for both left-handed and right-handed use. Here it is alongside my battered Apple Magic Mouse:

The electronics seem to be thrifty, taking a single AA battery:

It’s not the best built mouse ever, but it’s ergonomic enough. I’m a bit concerned that the bottom cover retainers appear quite fragile, but I don’t plan on opening it very often.

Compatibility

So far, it works perfectly with Jump Desktop, regardless of the display protocol in use or the kind of machine I’m accessing. No lag, no trouble using the mouse wheel, no trouble on any of the surfaces I’ve used (but no glass tables yet, which are often a problem).

But since the mouse support is baked in to Jump Desktop, the X1 doesn’t work with the official Microsoft Remote Desktop client for iOS, nor with any other applications like Prompt or Coda which provide SSH access. Those would also benefit greatly from mouse input, for even text-based terminals these days support mouse events when appropriately configured.

Or even without any configuration at all – On Ubuntu, I regularly use a mouse with vim without even thinking about it, and got it to work many times with tmux when SSHing to various other distributions.

But until Panic and the like catch on, my usual cop-out is to open a VNC session on one of my UNIX boxes and use terminals there – which works, but is hardly ideal on the road.

Getting Natural Scrolling “Back”

The only thing I missed was natural scrolling when connecting to Windows machines, but that’s easy enough to hack through a registry tweak:

• Run regedit.exe
• Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID
• Find the mouse hardware ID (you can fetch it from hardware properties inside the Settings app)
• Look for DeviceParameters and change FlipFlopWheel to 1

In Linux/VNC, it’s much easier (but a tad obscure, I’ll grant):

echo "pointer = 1 2 3 5 4 7 6 8 9 10 11 12" > ~/.Xmodmap && xmodmap ~/.Xmodmap