Using Tiny Ring Remote with Anki

TLDR: You can control Anki on iOS (and I assume other devices) with a very small remote you wear on your finger. This setup allows for easy and effective study time when you can’t easily (or just don’t want to) hold or touch your phone or tablet. It is particularly helpful when exercising since the light remote with tactile buttons is easier to use than a heavy phone or tablet that requires screen touches.

I’ve been trying to use Anki more while I’m at the gym or on long walks. I spend a huge amount of time doing those things and multi-tasking with some Anki study would be extremely valuable. Unfortunately with my iPhone 15 Max, I generally don’t do it because (1) it is heavy so holding my screen up for long periods is tiring and (2) while I’m on an elliptical or doing some other activity that has my body jostling about, it isn’t easy to accurately do touch/swipe gestures.

So, I started thinking it would be cool if I could use a little, light-weight, hand-held remote to show answers and advance cards as “good” or “again.” Through these forums I learned that you can use a game controller, and they do make some very small ones, but I wanted even smaller. So, I bought a “ring remote” which is designed for playing videos or advancing through social media feeds by pressing just three buttons. If you search for “ring remote,” “D01,” and/or “D02” you’ll get an idea of what I’m talking about. The problem is, they weren’t designed to work with Anki.

I was going to post here to ask how to get this working but then figured it out so thought I’d post my solution in case it might help someone else, or in case someone has even better ideas. I was trying a bunch of Javascript approaches and then realized there is a simple non-code solution, thanks to the thoughtful design of AnkiMobile’s built in gesture handling whereby you can map incoming gestures to an Anki action (such as showing the answer or marking good/again). Below is how I got it to work.

First, pair the remote with iOS using the normal process. Basically you just turn on the remote by pressing and holding the middle button until it flashes red and blue and goes into pairing mode. Your exact remote should have instructions. Then from iOS “Settings > Bluetooth” add the remote that shows up (for me it was D01, but I think they have a D02 model now as well).

Turn on the assistive touch feature in iOS by setting “Settings > Accessibility > Touch > AssistiveTouch” to “On.” By default, enabling assistive touch causes an assistive touch menu button to show on your screen. This is a big white dot with a ring around it. We don’t need it for our purposes, so if you want to turn it off, set “Settings > Accessibility > Touch > AssistiveTouch > Pointer Devices > Always Show Menu” to “Off.” By default, enabling assistive touch also causes an assistive touch “dot” to appear on screen sometimes which seems to indicate what you’re doing e.g. if you tap or swipe up/down using an assistive device, which is what our remote is acting as, the dot will simulate those actions. This can be quite annoying but doesn’t affect the functionality of what we’re trying to do, so I’m ignoring it for now. See below for more on the annoying little gray dot (and if you know how to get rid of it, PLEASE post your solution).

Now comes the fun part. The remote buttons send three “gestures” to iOS. The middle button seems to send a tap, as if your finger tapped on the spot where that annoying gray dot shows up. By default, it is likely going to be near the middle of your screen (for me it is slightly off-center, being a little above and to the right of center). The other two buttons send swipe up and swipe down gestures. So, you simply go to “Preferences > Review > Taps” and assign “When Question is Shown > Mid Center” and “When Answer is Shown > Mid Center” to whatever Anki command you want to happen when you click the middle button on the remote. Similarly, you can go to “Preferences > Review > Swipes” and assign “Swipe Up” and “Swipe Down” to whatever Anki commands you want to happen when you click the up and down buttons on the remote. So basically, the remote gives us 3 gestures we can map to whatever actions we want. With Anki’s “When Question/Answer is Shown” conditions, it effectively ups that to 4 gestures we can configure.

My personal setup is as follows:

Taps > When Question is Shown > Mid Center: Show Answer
Taps > When Answer is Shown > Mid Center: Answer Good (because I got it right)
Swipes > Swipe Down: Answer Again (because I got it wrong)

That is the core feature set I wanted, and all I really need, but that leaves the swipe up gesture available. I mostly use Anki to study Japanese and have cards where the “question” is just some Japanese audio. So, sometimes I like that up button set to “Replay Audio” which I can use if the question is being shown. However, I also sometimes like that button set to “Answer Easy” if the answer is being shown. Unfortunately, unlike Anki’s tap settings where you can map a gesture to an action based on whether the question or answer is currently shown, there is no such ability for swipes (though I hope I can do a feature request for that).

This setup allows me to simply keep pressing the center button for as long as I want to show answers and answer them “good” (which then shows the next card). Then, when I get something wrong, I can use the intuitive “down” button to mark it “again.” It is REALLY nice to just have a barely noticeable lightweight ring on my finger that I can use to fully control Anki for my typical usage scenarios. If you have cards with audio-only for both question and answer, you can do everything with your phone in your pocket and earphones. If you need to see the screen, it is still great to just prop it up on the little shelf on my elliptical or whatever machine I’m using at the gym and never have to touch it.

More on The Annoying Little Gray Dot

I’d really like to be able to hide that annoying little gray dot, especially since it does an annoying animation when simulating the tap, but I haven’t been able to find a way. I connected a Bluetooth mouse and that lets you control the dot (it becomes the “pointer” to show you where you’re moving the mouse). I then moved the pointer to a spot out of the way. You can even hide it completely behind the black oval “dynamic dock” thing at the top of the screen on iOS phones. If this worked we might have to set the tap position to “top center” instead of “mid center,” but alas it doesn’t work. Unfortunately, as soon as you use the remote buttons again, the annoying gray dot goes back to the slightly off center position it was in before. Again, if anyone knows a way to get rid of this, I’d be super grateful if you would share how to do it.

5 Likes

I hope the above is helpful for someone. If you also wish Anki allowed you to configure swipe gesture actions based on whether the question or answer is currently being shown, please let the developer know. I created a separate feature request for that since I wanted this post to be about documenting a solution for this unique ring remote usage scenario and the other to be a short and sweet feature request. I’m not allowed to post links here yet but the feature request is topic 49097 with title “Make Swipe Preferences Card Status Aware.”

Here’s a picture of the remote in case anyone is curious:

4 Likes