Feature request: Be able to use any bluetooth button / keyboard


i’m a happy user of Kurviger Pro. It’s my #1 motorcycle navigation on paved roads.

Since controlling a phone with gloves is hard to do, i bought a Magicsee R1 bluetooth remote control. This is a device with a dpad and 6 other buttons. What i’d like to do is use this bluetooth remote control to zoom in/out, pan and center in Kurviger.

The zoom in/out is possible by using the volume buttons on the remote. That works wonders and makes it a joy to use.

The other buttons don’t work as well since they don’t map to the fixed mappings in Kurviger. For example: for centering the map, kurviger expects a ‘c’ keycode, but that’s not on the remote. The remote has several modes and can for example provide keycode 96 for a button i’d like to use for centering the map.

In locus, they have a feature under ‘expert settings’ that allows you to set the keycodes for a few functions. A nice video and details are here: R1 Remote for cycle

I’ve also experimented with tools like automate and buttonmapper pro to remap keycodes, but that doesn’t work well if your device is not rooted. A last resort would be to remap the keymaps on your device, as outlined here: Using OsmAnd with a Remote Controller [rigacci.org]

What i’d like is the possibility to configure keycodes for a few functions in Kurviger: center map, zoom in, zoom out, pan l/r/u/d. This way, i can use either a Magicsee R1 or mocute bluetooth controller to use Kurviger safely while driving.

What are your thoughts?

Here is a screenshot of the settings in Locus of the setting for 3 different keys for ‘zoom in’ (81, 24, s70)


Thanks for the interesting suggestion.

Latest version offers additional functions for external input devices.

Besides the previous zoom of map (with or without volume keys),
arrows scroll map, +/- zoom map, “c” center map for compatible devices.

Android’s available key codes are described in its documentation.

A custom mapping is something that I can consider for the future.


Yes, the support for external devices is really nice.

But it would set Kurviger apart if support would be beyond the Carpe Iter and WunderlinQ devices. Given the existing support for keyboards, maybe extending the support for additional keycodes is straightforward? As a start/beta feature it could be just in a cfg file.

fyi, the devices that could be used:

1 Like

The R1 can be mounted on the handlebars using this: R1 Remote controller handlebar mount by Dreide1 - Thingiverse

1 Like

Sounds very good

1 Like

Hi, i’ve made a little project where i use buttons on the handlebar that map to keystrokes via a bluetooth keyboard using an Arduino. This way i can choose the keys myself and follow the different applications and keybindings.

You can see it in action here: https://youtu.be/C08YxzOzUv8


Holy smokes dude that’s amazing!

1 Like

Very cool Ram Mount Mirrors :+1:


I’ve tested Magicsee and other remotes. I’ve found two problems on many of those remotes: most of them are not so strong to be mounted on a motorcycle and it’s very complicate to use it with winter gloves without looking at it.

My solution at this moment is use a multimedia button. It have 5 buttons. The remote is not waterproof, but I use inside a printed box that allows me to use raining and wash the motorcycle with no problems (I’ve been testing for nearly one year).

I’ve designed a printed box that have bigger buttons that pushes the remote. The central button must be pushed on the same way, just pushing as usual. The other 4 buttons must be pushed from top/bottom/left/right. It makes that is very easy to push the desired button. As the mechanism uses a short lever, a soft push is not enough to send the command to remote.

The remote uses BLE, so the power consumption is very low. It uses a lithium battery (I’m using the first unit). It don’t requires any cable, just screw it to rearview mirror mount.

As the functions of remote are not enough to control Kurviger (you can just make zoom with vol+/-), I use Automate App to capture the buttons and make other functions. Automate can simulate gestures on screen, so you can do anything that you can do tapping at fixed screen positions.

I’ve programmed an Automate flow that allows me to have a menu to operate a lot of functions. Depending the app in foreground, it have different functions. With 2 buttons I have a roll menu (next and OK buttons), and the other 3 buttons have shortcuts for usual things. As I use intercom, this flow tells me whats the function that will be executed when I push “ok”.

With automate you can read all phone settings and change most of them (even in a non rooted phone). I use it a lot.

I sold a few units that are working with no problems.

The functions that I personally use are: stop/start/pause navigation, follow navigation, switch day/night map mode, open and close Kurviger, recalculate to closest waypoint. Also I can change the screen brightness as a general setting at any moment.

I see that there are commands to send it direct to kurviger with a keyboard, but I’ve tried with a BT keyboard with no success. Maybe there are some requirement regarding keyboard type or some setting I missed.

This is how it looks with other “things” that I use

Best regards.

PS: Actually I’m working with 2 guys to develop a microcontroller based system with mouse support. It have 5 button plus a 4 direction joystick.


You have my utmost respect. Although I’m glad I don’t have to operate anything else while riding, I always find these remotes interesting.
Personally, however, I’m already overwhelmed by the new motorcycles with a thousand features that I test ride from time to time. For me, throttle, brake, clutch, speed- and RPM-indicator are quite enough.
Reduce to the max! :wink:

If you select “Keyboard” in “Settings | Application | External input device”,
then these keys are currently available:

Airald, as we talked the other day I am very interested in the 5 button control.
Surely with the indications from @devemux86 you can make it work perfectly with Kurviger.
Salut i gas a fons !

It works with my physical keyboard, the problem is on automate side. I will investigate a little bit more before post it on automate group.


The problem resides on automate, to emulate a keyboard press, phone must be rooted.

To solve it, I use gestual simulation to tap or swipe. I have a flow that have 2 modes.

Central button swap mode.

Pan mode: up/down/left/right moves the map
Zoom mode:

  • up/down makes zoom +/-

  • left: start/pause route

  • right: follow map

It just works if Kurviger is on foreground. If not, kurviger is started when central button is pressed.

It works on portrait or landscape mode, but screen positions must be changed depending on screen size.
More modes can be added to have more functions. When change mode, appears a toast message and also is played a synthesized text.

For me, this is the minimum control to use my system.

Best regards.

1 Like

Sounds very interesting :slight_smile:

When you click the center button that switches the mode to Pan or Zoom it plays a sound message (I don’t use sound) and a text message ?
This text message disappears automatically after a few seconds I suppose.

Yes, this message is called “toast”, and appears one second aprox on central bottom. Should be possible to change one of the messages for a very long text, so you will not need to read, just see the lenght.

Best regards.

I have used Automate (and all the other apps) but found them to perform flakey. They did not always work as i would expect. Using a bluetooth keyboard is more robust in my experience.

I used an arduino ESP32 that is connected to a few buttons in a 3d printed housing. The arduino emulates a bluetooth keyboard and reliably sends keystrokes to the phone. This does not only work with Kurviger but also with others (Locus, Osmand).

You can find a small video demo a few posts higher up. The arduino code and circuit are here: navi control.ino - Wokwi Arduino Simulator.

I saw it, It’s very interesting. Automate solution is a good idea for a lot of people because does not need so much engineering.

From many months ago, I’m working with 2 guys doing something similar to your project. They have an uC project (also based on a ESP32) and I’m finishing the control button. 3D printed, 5 buttons and a 2 way joystick that fits on my motorcycle.

1 Like

Hi, i’ve (finally) written a guide on how i made my navigation buttons. If you’re interested in a winter project you’ll find 3d files, arduino code and circuit diagrams here: Handlebar buttons – JaxeADV


@Joost_Bijl I have not forgotten your idea to support custom key mapping. :slightly_smiling_face: