Tuesday, September 22, 2015

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 ([S]is[/S]) 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.
[attach=download/mMouse.rar]mMouse.rar[/attach] - program only (2015/10/6)
[attach=download/mmouse_src_0.1b.rar]mmouse_src_0.1b.rar[/attach] - 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.
[attach=download/mMouse0.2d.rar]mMouse0.2d.rar[/attach] - program only (2016/2/29)
[attach=download/mmouse_src_0.2d.rar]mmouse_src_0.2d.rar[/attach] - 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

[tag]ASUS Smart Gesture middle mouse fix windows 10[/tag]