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

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

5 Likes

Holy smokes dude that’s amazing!

1 Like

Very cool Ram Mount Mirrors :+1:

Hi,

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.

2 Likes

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.

Thank’s!

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

4 Likes

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

@devemux86 Thanks! But for me it’s not necessary anymore - i can just assign another keystroke to a button :slight_smile:

What would be nice is if I could change between navigation view and map view by sending a keystroke. The use case is that when you’re driving and want to look ahead you’d like to have the map view. So maybe the M key could be used for this?

You can scroll / zoom the map (with keys) to look ahead in navigation.
The map will auto center again after the delay been defined in settings.

Or do you mean something else?

I know, but the issue i have is that the center for zoom in/out is at the bottom so it’s hard to look back. I would think something like hits:

=> If the current state is ‘navigating’ and I press ‘M’

  • View of the application changes as if i press the back button
  • the map is centered on my current location (and in the middle of the screen)

=> If the current state is ‘map view’ and i press ‘M’

  • View of the application changes as if press the ‘continue navigation’ button
  • The map is centered around current location and ‘my position’ is changed to the bottom of the screen.
1 Like

In navigation, user location is at bottom when option “Movement direction” is selected.
There are other options, like “No rotation” (user location at center) or “Route overview”.

https://docs.kurviger.de/app/manual/pro#switch_onoff_map_rotation_in_navi_mode_show_route_from_current_location_to_destination

What you describe is more like pause / resume navigation (like tap its button).

I could think of extra key mappings, but the functions should already exist in the app.

1 Like

2 posts were split to a new topic: App: Key mapping