9-Dec

Development

ClickRelief - click without clicking!

Have you ever thought about how many mouse clicks you perform each day? 5000? 10,000? I started to think about that when each click started to get uncomfortable. This led me to think: is it possible to remove the clicking altogether? And yes! It is! The solution I found was creating the program ClickRelief.

7 min read

·

By Andreas Hagen Ulltveit-Moe

·

December 9, 2021

Tired of fish

My first year as a software engineer was a rough one. I gradually developed something that could be categorized as repetitive strain injury (RSI); every keystroke and mouse click resulted in pain getting worse by every touch. This led me into creating a speech-to-text system to decrease my keyboard usage. However, there was one problem - the clicking. For a period I said "click" or "fish" (which was the word I actually used) for every click. Saying "fish" 5000 times a day makes your voice (and mind) a bit shaky. So I thought about other ways to initiate a click, like stepping on a foot pedal or using my knuckle or elbow. But just finding another muscle in the body to perform a click did not seem like a passable approach when already diagnosed with repetitive strain injury. Using an eye tracker system also crossed my mind but this felt like overengineering and would be inefficient. Hence I wondered if I could find a way to remove this clicking entirely. Would that be possible?

Creating ClickRelief

First, let’s take a step back and think about what we use the mouse for. Most people would agree that performing a click at a specific point on the screen is the main usage of the mouse. Some might also use it as a reading marker or something to move around as they think. So it’s also about habits. For me, I found this statement to be true most of the time:

(*) “When I start moving the mouse, the goal is eventually a click"

I was looking for an application that relieved my pain related to clicking, ideally removing it altogether. Having the above statement in mind (*), I wanted a program which executed a mouse click after the mouse movement was done. Moreover, I wanted to somehow be able to initiate a double click without clicking. Unfortunately, browsing the web did not result in any programs that met my needs. Therefore, I decided to create one myself and the result was "ClickRelief". At time of writing, I’ve been using ClickRelief daily for five years. The program has been of high value to me, and I’m hoping others can make use of it as well. Read on to see how it works!

Single click

When ClickRelief is running, all you must do to perform a single left click is to move the mouse pointer to where you want to click and stop there. The premise for the application is that when you start moving the mouse, the goal is eventually a click. If this is not true, the program should not be running, more on that later.

Double click

To perform a double click, the mouse pointer must do a “detour-move” in the vertical-direction. The mouse pointer must reach the final point by going past it and come back.

The video demonstrates how double clicks can be performed using ClickRelief. We see that double clicks can be performed either by going past the final point on the way up and come back, or passing it on the way down and then go up. When the pointer does not take such a detour, a single click is performed.

You might ask; what decides if a mouse movement is infact a detour-move? For instance, if you move the pointer just a few pixels up and down, will a double click be executed? Well, that depends on a setting in ClickRelief. ClickRelief has a number (dY) that sets the minimum height of the detour-move. If this number is set to 50 pixels, you need to move the mouse 50 pixels up and down for it to execute a double click. A smaller move will just result in a single click. A good way to avoid unintended double clicks is to fine tune dY to the right number of pixels.

Right click and scrolling?

ClickRelief does not have any way to right click or scroll. I've thought about various movement that can trigger a right click, but I always conclude that it will be a bit trigger happy getting more right clicks than intended. I reached the same conclusion about scrolling. Thus the question was - how could one perform right click and scroll without the use of fingers? I learned that foot pedals can a good solution for this. I use three foot pedals to relief me from right clicking and scrolling, in addition to the pedal that starts/stops ClickRelief.

Foot pedals
Foot pedals

In my experience, foot pedals work well for these actions since they are not performed that frequently. I would not recommend using a foot pedal for the more frequent left clicking (just imagine the amount of work required by your foot in that case).

Start/stop

You'll probably not always want to have ClickRelief running. For instance, the “hover”-action will never be possible while ClickRelief is running. To easily start and stop the clicking, press the hotkey Ctrl+Shift+Alt+M, or find the start/stop button in the ClickRelief program. Many computer mouses have the feature to bind buttons to hotkeys. If you bind one such button to the ClickRelief on/off hotkey, the program can easily be switched on and off. Alternatively, you can use foot pedals as shown above. I have bound one pedal to the on/off hotkey, that’s one less button to click.

The ClickRelief program
The ClickRelief program

What about dragging the mouse?

There is no movement to trigger this in ClickRelief. However, if you are holding down the left mouse button, ClickRelief detects it and will disable itself. In other words, you can perform drag and drop in the same way as you normally do without thinking about ClickRelief running in the background. I rarely find myself in the need of doing drag and drop, so I don’t mind doing it manually.

Mouse movement habits

Using ClickRelief for the first time can lead to some unintended clicks. To get the most out of the program, it can be wise to review your mouse movement habits. Two challenges you can experience when using ClickRelief are:

  1. Executing a double click when a single click is intended
  2. Executing a click when you don’t want to click

To mitigate these, a strategy can be to decide where you want to click before you start moving the mouse. Having made this decision, the task is just to move the pointer to that place, without taking a detour, and stop there (single click executed). Deciding the click-point beforehand will reduce the times where you have the mouse pointer on the run without knowing where to stop. In my experience, for most of the pixels on the screen, if you click them nothing happens since they’re not buttons. So, if the mouse pointer is on the run, just figure out the closest point where nothing bad happens and rest the pointer there. A final note is that unintended double clicks can also be mitigated by fine tuning the double click height (dY) as described earlier.

Want to try ClickRelief?

I’ve been using ClickRelief daily for several years. It has been invaluable to me and I’m hoping that others can find it helpful as well. Even though it's well tested, the application has room for improvement, and it would be interesting to get some feedback from other users. If you want to try ClickRelief, please don’t hesitate to sign up here and you will receive a copy.