Middle mouse button fix for Asus touchpad in windows 10

asus-x302la-smartgesture.png

Just bought this laptop Asus x302l about 3 weeks ago. After a week, I found out that it (is) was impossible to do middle mouse button. There is no such an option for middle mouse button in ASUS Smart Gesture, or I should call ASUS not-so-Smart Gesture. In this entry, I will call it “Asus gesture”.

Tried everything I could find on the internet, also hit the support team of ASUS as well, none came with success. I was so disappointed, and still do. So, do I have carry an extra mouse on the go like forever?

Alright, screw ASUS, I do it my way. Btw, I doubt ASUS wrote the driver for this touchpad. My best guess: this touchpad is a OEM product of ELAN Microelectric Corp, which provide driver also. Hence, ASUS could not fix this thing or didn’t bother to fix this thing and let us suffer.

asus-smart-gesture-ss.png

Since what Asus gesture does is capture the mouse gesture and send the appropriate keypress to windows, I might be able to intercept these keypresses.

So, plan A: find the process that send these keypress and crack that file, maybe simple search and replace using some hex editor or make it extreme by disassembler, find the code that send the keypress, change it and compile it back will fix it neatly. But after a few days, I gave up on finding a way to identify the original process that send these keypress, it is just impossible, and Asus uses like 3-4 different processes just to capture the touchpad gesture and then generate keypress. What the hell did you do that for Asus?

OK, plan B. If it sends Winkey + S to system, I may be able to catch those messages (keypresses) and send the middle mouse click instead (WM_MBUTTONDOWN). And I was right, it works. Set up a low level global keyboard hook, monitor Winkey and ‘S’, sort out some states of keypresses and then send WM_MBUTTONDOWN at the right circumstance, about 404 lines of code (v0.1b). That’s it.

No need to carry an extra mouse on the go anymore.

Download:

mMouse v0.1b - Basic function: three finger tap for middle mouse click.
mMouse.rar - program only (2015/10/6)
mmouse_src_0.1b.rar - source code. (2015/10/6)

mMouse v0.2d - add three finger swipe fix -> backward / forward. Fix bug with button Alt from v0.2a, fix bug with other gesture like 3 finger swipe up/down and 4 finger gesture.
mMouse0.2d.rar - program only (2016/2/29)
mmouse_src_0.2d.rar - source code. (2016/2/29)

How to install:
- Copy mMouse.exe or create shortcut of mMouse.exe to %AppData%/Microsoft/Windows/Start Menu/Programs/Startup
- Then restart or just simply run it. It will show a small icon in the system tray which looks alike the Asus gesture’s icon.

Note:
- You have to remove version 0.1b from start up list
- Run both v0.1 and v0.2 will likely produce very weird bugs

[update 2016/04/26]

Asus has updated their software to 4.0.12 and let user choose Microsoft gesture or Asus gesture which basically replace three fingers swipe left/right with browser back/next. But still, no sight of middle mouse button on this update.

asus-smart-gesture-ss2.png

 
  1. Dmitry

    Saturday, October 10, 2015 - 12:47:27

    #1

    Man, thanks for very useful small app! It’s very big problem with new versions of Asus Smart Gesture app. In more older versions I make middle button click work correctly through registry editor by simple editing 2 key parameters. But in new versions this parameters didn’t work - app completly different.
    I have some suggestion for making this app better if you don’t mind :)
    For me personally more preferred middle click by 2(two) fingers tap. So, it will be great to add some settings menu where user will be able to choose middle click options - by 2 fingers ore by 3. If choosed 2finger - than by 3finger tap can be invoke context menu and conversely - when coose middle click by 3 fingers - context menu can be start from 2 fingers tap

    Thanks and best regards!
    Dmitry

  2. ceez

    Saturday, October 10, 2015 - 15:36:36

    #2

    Unfortunately, it is impossible to intercept two-finger tap because what my app does is capture the super fast combination keypress generated by Asus not-really-smart gesture, like three-finger tap -> LWin-S or four-finger tap -> LWin-D… It is really fast, no delay between LWin and S at all. In other hand, human keypressed should have shortest delay about 60ms (like 1/50 of one second). So, what my app does is monitor ‘LWin’ key and ‘S’ key and count the time between this 2 keypresses to deter it is human keypressed or machine keypressed.

    For two fingers tap -> mouse 2 click, it is one key only. There is no way to know for sure it is human keypressed or machine keypressed. Thus, it is impossible to *intercept* this gesture

    There will be exeption: if and only if the company makes this touchpad provides some APIs or framework or SDK or some documents like Synaptic. But it likely never happen :D

  3. Alberto Jaspe

    Friday, October 16, 2015 - 19:04:00

    #3

    Let’s hope Synaptic to release a better driver ASAP. In the meanwhile, I’m using your very useful peace of code. Thank you very much!

  4. Chris

    Friday, October 23, 2015 - 03:34:19

    #4

    Was looking for a solution for long time, you made my day
    Thank you!!!!!!!!!!!!! :D

  5. Fredrik

    Friday, October 23, 2015 - 21:16:05

    #5

    Thank you for this app! Its a must on any asus computer.

    I would love to implement three finger flick (three finger swipe right or left) to swap between virtual desktops. Ive tried doing it with autohotkey scripting with out any success.

    Is this a task that would not be to hard to implement in your already existing program?

    Thanks again for a great program.

  6. ceez

    Saturday, October 24, 2015 - 01:41:21

    #6

    Didn’t you know four-finger swipe (left / right) will switch between virtual desktop? You must have more than 1 virtual desktop anyway.

    WIN + CTRL + LEFT/RIGHT: Switch to previous or next desktop
    WIN + CTRL + D: Create a new desktop
    WIN + CTRL + F4: Close the current desktop
    WIN + TAB: Launch task view

    For your question, yes it is possible to do it. Is that nessesary to waste three-finger gesture for that when you have four-finger gesture for that already?

    I have plan for three-finger swipe (left / right) for back / next function like the buttons on a premium mouse. But I am kinda busy with another project and with my life right now.

    Anyway, you are more than welcomed to improve my little app

  7. Fredrik

    Saturday, October 24, 2015 - 16:57:46

    #7

    This is embarrassing.

    I did not know that and it is of course not worth wasting three finger gesture when the same gesture with four finger exist.

    Back / next functionality sounds useful.

    Thank you for a great app.

    Fredrik Adolfsson

  8. Nenad

    Monday, November 9, 2015 - 19:41:41

    #8

    Thank you very much for this fix. I spent three days searching for solution.

  9. AA

    Monday, November 16, 2015 - 19:31:47

    #9

    Doesn’t work on my computer… :(
    Ran it with administrators rights after Smart Gesture is launched, but three-finger tap won’t do anything with your programm :
    Any help ?

  10. AA

    Monday, November 16, 2015 - 19:32:43

    #10

    Actually, it works, but not in Microsoft Edge !

  11. ceez

    Monday, November 16, 2015 - 20:56:41

    #11

    Because Microsoft tends to screw with people!!!!

    J/k :D

    ———–
    Edit:
    Fixed :)

  12. Diogo

    Monday, November 30, 2015 - 02:26:17

    #12

    Thank you kind Sir. It’s working fine (a little irresponsive sometimes) on my Asus X552LDV so far. Being using the old driver but windows update keep bothering me to update and didn’t let me install the new W10 update without install first the new-sucking-smart-gesture. Bless you!

  13. ceez

    Monday, November 30, 2015 - 08:11:33

    #13

    There is an irritating bug in version 0.2a that makes left Alt key *stuck* after pressing it. Still working on it.

  14. grandweapon

    Friday, December 18, 2015 - 01:36:54

    #14

    Hi, I love your work. It’s so simple yet effective. I have been using this (v0.1b) for the past couple of months, but it appears to have stopped working after the most recent windows update. Any fixes or workarounds?

  15. ceez

    Friday, December 18, 2015 - 20:56:21

    #15

    Check again if Asus not-that-Smart gesture is still running. Sometime, Asus not-that-Smart gesture auto updates itself and thus auto exit for update, but it won’t auto start after successul update until windows restarted.

    I’m running v0.2a, buggy with Alt button, and it still works fine after major windows 10 update today.

    Theorically mMouse should work if there isn’t major change in Asus not-that-Smart gesture for windows 10. Even if there is a kernel update of windows 10, mMouse still works fine as long as the combo keypresses Winkey-S are not changed.

  16. Michael

    Tuesday, December 22, 2015 - 23:42:01

    #16

    Thank you so much amazing!

  17. Chris

    Friday, December 25, 2015 - 15:50:24

    #17

    Thanks! Works great with DaVinci Resolve, which requires a middle click for one of its most important functions.
    I haven’t been able to get it to work with Black Magic Fusion, which uses middle clicking to scroll around oversized screen views. But there are other ways to do that, if necessary.

  18. Deed

    Saturday, January 9, 2016 - 07:14:00

    #18

    Hey, is there any option to make it works in Windows 8? I spent a lot of time searching for solution of this problem and you’re my last chance :)

  19. ceez

    Sunday, January 10, 2016 - 23:01:23

    #19

    Windows 8 sucks. Upgrade to windows 10 man. M$ offers upgrade for free!

  20. Diogo

    Tuesday, January 12, 2016 - 05:41:46

    #20

    Unfortunately had to remove my mMouse today. I spent the weekend working with excel and I was going crazy with something: every time I used the alt key (like alt+enter), the alt seemed to be ’stuck’ as in active. This made me go nuts, I couldn’t properly used the keyboard. After trying everything I noticed it was the mMouse. Don’t ask me why, just some incompatible with the new OS upgrades, cause I think it was working with no issues before. =(

  21. Taylor Reiner

    Wednesday, January 13, 2016 - 15:30:22

    #21

    Hey,

    This works so well! Thanks a ton!

    I’m wondering if there would be an easy way to make this work for 2 finger tap rather than 3. I’m looking at the source code but I’m not sure if I can make out how to change it from 3 to 2 finger tap.

    Any help would be great!

    Thanks a ton

  22. ceez

    Wednesday, January 13, 2016 - 23:32:31

    #22

    @Diogo: Actually, it is known bug of version 0.2a which I still can’t fix it. But as long as you don’t use ALT much, it should be OK. Version 0.1b doesn’t use ALT button and so it works fine with ALT but without the Next - Previous function anyway.

    @Taylor Reiner: you simply can’t, my tool intercepts the message send by Asus not-that-Smart gesture which is WIN-S and ALT-TAB + RIGHT/LEFT, not the the raw touch data from the driver to the handling app which is also a part of the driver but in different process. If you can intercept that raw data and handling that raw data, you can pretty much do anything you want or like, such as create new gestures double two / three / four finger tap and make it do what ever you want it to do.

  23. Peter Koronczi

    Thursday, January 28, 2016 - 08:15:44

    #23

    Amazing fix! :) Thanks for your work. Greetings from Hungary!

  24. Pirhotau

    Sunday, February 28, 2016 - 23:47:08

    #24

    Thank you SOOOOOO much ! :-)

  25. Fredrik Adolfsson

    Monday, February 29, 2016 - 19:13:10

    #25

    Hi man,
    Im loosing the ability to change virtual desktop with for finger swipe if i use 0.2b, just wanted to let you know.

  26. ceez

    Monday, February 29, 2016 - 20:35:02

    #26

    ah, I see.

    Fixed with v0.2c :D

  27. Fredrik Adolfsson

    Wednesday, March 2, 2016 - 19:31:08

    #27

    Nice, i will start test it right away.

    Another bug ive found is that i cant toggle off “Backward / Forward” in the menu. Id dose not matter if i press “Backward / Forward” or “Middle mouse fix” both of them toggles “Middle mouse fix”.

    Cheers!

  28. KYZ

    Thursday, March 17, 2016 - 09:49:23

    #28

    Hey Ceez!

    1) This fix is fantastic, it took me a while to find your blog but I am eternally grateful.

    2) I was just going to bring my laptop in to RMA tomorrow because I was experiencing the sticking alt key issue and assumed it was a keyboard hardware fault….but as I was uninstalling the start up programs, I noticed the comments! I just installed the update and it seems to be gone. LIFESAVER.

    3) THANKS AGAIN MAN.

  29. Emanuel Baud

    Sunday, March 27, 2016 - 06:37:11

    #29

    So great, thanks a lots!
    Middle click is so needed in graphical tools. How had it been suppressed like this on such asus working notebooks..
    I hope you can make asus change his mind for adding the middle button (either your 3 fingers way, or dedicating touchpad “middle bottom” to middle click)

  30. GneeChee

    Saturday, April 9, 2016 - 07:40:30

    #30

    Can’t get it to work :(

    Asus ROG G752VY … Win 10

    Installed as directed … I see the icon in the system tray …

    3 finger still does what it always did … no middle buttom emulation :(

  31. ceez

    Saturday, April 9, 2016 - 14:54:25

    #31

    You need to install Asus not-that-smart gesture and enable 3-4 fingers gesture like this screenshot

    http://ceezblog.info/images/blog/asus-smart-gesture-ss.png

    Anyway, if Asus not-that-smart gesture looks different from this screenshot it might not work

  32. Caio

    Friday, May 6, 2016 - 13:29:52

    #32

    workkk!!!!! owww my!!!!!!!!!

  33. Quadro

    Tuesday, May 17, 2016 - 15:53:23

    #33

    My solution is much simpler and native but I’ve tested it on win8 and win 8.1 only.

    Open regedit and find HKEY_CURRENT_USERSoftwareElantechSmartPad (win8)
    and additionaly for win 8.1 HKEY_CURRENT_USERSoftwareElantechGroupOptionSmartPad .
    Then set Tap_Two_Finger key with 2 - which means middle button in both branches.
    Reboot pc. Works like a charm

  34. ceez

    Tuesday, May 17, 2016 - 19:14:54

    #34

    Depends on which touchpad you got, it might work or not. I tried all sort of registry hack like that, but not success.

    Asus uses a wide range of touchpad for their laptop. Even with the same laptop model, it might have different touchpad comes from different company. Despite that, they still want to make it unify in software. They copy the way you use touchpad on Macbook.

    They solved this problem by packing a bunch of drivers from different companies, making a process to communicate with these drivers and a nother process to do the gesture things. Then they put them all together and promote it as Asus smart gesture.

    Anyway, if that simple registry hack works for you, then good for you! All of this wouldn’t happen if they used synaptics touchpad intead of a cheaper product from a Taiwanese company like Alantech touchpad.

  35. caio

    Sunday, June 19, 2016 - 13:36:24

    #35

    worked!!!

  36. Richard

    Sunday, June 19, 2016 - 23:38:37

    #36

    Nice, I’ve been struggling to create autohotkey scripts to get some way to use the middle click, but this 3 fingers thing is a lot better. Thanks!

  37. Cyrillev

    Tuesday, July 5, 2016 - 05:11:34

    #37

    I use it on my new PC and AC works (ASUS K501UX). Perfect !!!
    Thank you very much.

  38. Cyrillev

    Saturday, July 9, 2016 - 23:42:06

    #38

    Hi,

    I modified the software, like this:
    - 2 tap fingers ==> middle click
    - 3 tap fingers ==> right click
    - 3 swipe up ==> open file Explorer
    - and always : 3 fingers swipe left / right ==> Backward / Forward

    This is the configuration that I had on my old ASUS laptop

    if you desire, you can add it to your blog
    source and exe : htt p://dl .free. fr/ f1YXQIGxr

    edit by ceez: follow the above link with caution.

  39. ceez

    Monday, July 11, 2016 - 01:57:46

    #39

    What are you talking about?
    You pretty much cannot modify anything with my mmouse, especially 2 fingers tap.

    Anyway, I tried to download the file to see what is it, but failed to do so.

  40. Cyrillev

    Tuesday, July 12, 2016 - 02:42:18

    #40

    Hi,
    Asus “smart” gesture detects 2 fingers tap and simulates a right click (machine right clic)
    I used the same technique that you to detect a 2 fingers tap (install hook but for mouse: SetWindowsHookEx (WH_MOUSE_LL, …)).
    I used your timeout () function to differentiate human right click or right click Machine.
    And I send Middle click

    Viewing the source code for details
    https://github.com/Cyrillev91/mMouse

  41. ceez

    Friday, July 15, 2016 - 10:09:59

    #41

    Doing that will also affect to usb mouse if you may use.

  42. Cyrillev

    Saturday, July 16, 2016 - 19:41:10

    #42

    I just tested, it is ok with an usb mouse.

  43. ceez

    Saturday, July 16, 2016 - 20:13:06

    #43

    Saw what you’ve done! Great job!

    To all: Since Asus now allows us to use three finger swipe left/right as back/forward, 3 finger swipe fix is not necessary anymore. I wonder when will they allow us to do middle mouse button? Next year or next 2 years? LOL

  44. as

    Saturday, July 30, 2016 - 23:22:51

    #44

    legend

  45. Gustavo Gómez Morales

    Saturday, August 13, 2016 - 11:11:53

    #45

    This is amazing!
    Thank you for creating this. Works on my UX305LA.

  46. MikeT

    Wednesday, September 28, 2016 - 03:15:17

    #46

    Many thanks Ceez!

  47. starg09

    Wednesday, October 19, 2016 - 09:03:22

    #47

    Thanks so much!!!! Not having this function on my x556 was making me crazy <3

  48. Luke

    Monday, November 7, 2016 - 08:46:43

    #48

    It works, thank you

  49. sk

    Friday, November 25, 2016 - 18:28:04

    #49

    Great job! Thank you!

Add comment

Fill out the form below to add your own comments

User data




Add your comment