The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.

    UltraNav Middle Click Button & Scroll

    Discussion in 'Lenovo' started by MidnightSun, Oct 6, 2009.

  1. MidnightSun

    MidnightSun Emodicon

    Reputations:
    6,668
    Messages:
    8,224
    Likes Received:
    231
    Trophy Points:
    231
    So up until now, I've been using my UltraNav middle-click button with "advanced features" disabled, meaning no magnification or scrolling use - this is because I always use the middle-click button to open a link in a new tab, navigate around Google Sketchup, and it's a handy button in general.

    However, I have recently tried out the TrackPoint scrolling along with the middle-click button's scrolling feature, and it's very useful. When I enable the feature, however, it uses clicks of the middle button as a toggle to turn the scrolling on or off, and does not allow middle-clicking of links anymore.

    I was wondering whether it is possible at all to use the TrackPoint scrolling along with the middle-click button?
     
  2. jaredy

    jaredy Notebook Virtuoso

    Reputations:
    793
    Messages:
    2,876
    Likes Received:
    1
    Trophy Points:
    56
    Smooth scrolling needs to be set. I use the middle button to scroll and to open and close tabs.
     
  3. MidnightSun

    MidnightSun Emodicon

    Reputations:
    6,668
    Messages:
    8,224
    Likes Received:
    231
    Trophy Points:
    231
    Ah, well smooth scrolling is just the conventional press-in-middle-button-on-mouse scroller thing. I prefer the standard scroller, the one with the small gray vertical bar with the mouse pointer. Any way to still use that along with the middle click function?

    Thanks for the answer though.
     
  4. godbreath

    godbreath Notebook Consultant

    Reputations:
    78
    Messages:
    143
    Likes Received:
    0
    Trophy Points:
    30
    what i did was, i set the the trackpoint middle button to the default scrolling
    then, i set a tap zone on the top left corner of the touchpad to act as the conventional middle click button. i then just have to move my right thumb 1 cm to tap the button to open links, and still have the trackpoint middle button scrolling
     
  5. MidnightSun

    MidnightSun Emodicon

    Reputations:
    6,668
    Messages:
    8,224
    Likes Received:
    231
    Trophy Points:
    231
  6. aznguyphan

    aznguyphan Notebook Evangelist

    Reputations:
    207
    Messages:
    517
    Likes Received:
    0
    Trophy Points:
    30
    Note sure if anyone still cares about this, but I wanted to do exactly what MidnightSun does and I have a sort of a working solution. It's a bit long winded and...improvised but it works.

    Basically I found a script on the Autohotkey forum that emulates a scroll wheel when you hold down a button and move in the x or y direction. The result was good, but it made the cursor jittery because the script tries to keep your cursor in its original place but it still allows for movement. So I solved this by hiding the cursor while scrolling (a work around to the work around...).

    If you just want to run a script exe then download the attachment, unzip it to a place of your preference and add a shortcut to it in your Startup folder.

    Install Steps (If you want to be able to edit the script):

    You need Autohotkey installed.

    Copy/paste code into .ahk file with Notepad.

    Code:
    $*MButton::
    
    Hotkey, $*MButton Up, MButtonup, off
    KeyWait, MButton, T0.2
    If ErrorLevel = 1
    {
    	Hotkey, $*MButton Up, MButtonup, on
    	MouseGetPos, ox, oy
     	SetTimer, WatchTheMouse, 1
    	SystemCursor("Toggle")
    }
    Else
    	Send {MButton}
    return
    
    MButtonup:
    Hotkey, $*MButton Up, MButtonup, off
    SetTimer, WatchTheMouse, off
    SystemCursor("Toggle")
    return
    
    WatchTheMouse:
    MouseGetPos, nx, ny
    dy := ny-oy
    dx := nx-ox
    If (dx**2 > 0 and dx**2>dy**2) ;edit 4 for sensitivity (changes sensitivity to movement)
    {
    	times := Abs(dy)/1 ;edit 1 for sensitivity (changes frequency of scroll signal)
    	Loop, %times%
    	{
    		If (dx > 0)
    			Click WheelRight
    		Else
    			Click WheelLeft
       	}
    }
    If (dy**2 > 0 and dy**2>dx**2) ;edit 0 for sensitivity (changes sensitivity to movement)
    {
    	times := Abs(dy)/1 ;edit 1 for sensitivity (changes frequency of scroll signal)
    	Loop, %times% 
    	{
    		If (dy > 0)
    			Click WheelDown
    		Else
    			Click WheelUp
    	}   
    }
    MouseMove ox, oy
    return
    
    SystemCursor(OnOff=1)   ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
    {
        static AndMask, XorMask, $, h_cursor
            ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
            , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; blank cursors
            , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; handles of default cursors
        if (OnOff = "Init" or OnOff = "I" or $ = "")       ; init when requested or at first call
        {
            $ = h                                          ; active default cursors
            VarSetCapacity( h_cursor,4444, 1 )
            VarSetCapacity( AndMask, 32*4, 0xFF )
            VarSetCapacity( XorMask, 32*4, 0 )
            system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
            StringSplit c, system_cursors, `,
            Loop %c0%
            {
                h_cursor   := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% )
                h%A_Index% := DllCall( "CopyImage",  "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 )
                b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0
                    , "int",32, "int",32, "uint",&AndMask, "uint",&XorMask )
            }
        }
        if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
            $ = b  ; use blank cursors
        else
            $ = h  ; use the saved cursors
    
        Loop %c0%
        {
            h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 )
            DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% )
        }
    }
    Double click the file to run it, place it Startup folder so it runs all the time (works after standby/resume).

    Scrolling with the script is very sensitive, you can adjust it to your own preferences. I also opened Regedit, went to HKEY_CURRENT_USER\Control Panel\Desktop and changed WheelScrollLines to 1 (default is 3)

    Now you have the best of both worlds, middle clicking in any program, as well as scrolling in most places (I would say everywhere but I haven't tested enough).

    Sources:
    http://www.autohotkey.com/docs/commands/DllCall.htm#HideCursor
    http://www.autohotkey.com/forum/topic33712.html

    Edit: This is all with the middle button set to neither btw. Actually, if you have only a trackpoint and no touchpad (or no use for the touchpad), you can uninstall Lenovo's drivers and use the generic Windows Driver + Autohotkey to eliminate the extra process. Although Autohotkey is like 4 times the size of Daemon, still only 2mb.

    Further testing shows horizontal scrolling doesn't really work at all xD. Worked in notepad, presumably some other stuff...Not gonna worry about it, it was a perk anyway. Also hiding the cursor only seems to work on windows cursors, stuff like Foxit's hand and Firefox's magnifying class stay on the screen.
     

    Attached Files:

  7. elixiash

    elixiash Notebook Consultant

    Reputations:
    26
    Messages:
    146
    Likes Received:
    1
    Trophy Points:
    31
    Autohotkey huh? What a great find! Ive been trying to look for a Setpoint alternative and I think this may be it! :)
     
  8. aznguyphan

    aznguyphan Notebook Evangelist

    Reputations:
    207
    Messages:
    517
    Likes Received:
    0
    Trophy Points:
    30
    Never heard of Setpoint before. Did it serve the same purpose as this script? I imagine a driver from a large corporation would be a better solution than a random script off the internet xD. Why are you looking for a replacement?
     
  9. elixiash

    elixiash Notebook Consultant

    Reputations:
    26
    Messages:
    146
    Likes Received:
    1
    Trophy Points:
    31
    Setpoint (from Logitech if you really dont know :rolleyes:) is getting very bloated nowadays and I only need the functions of the extra buttons of my vx revolution mouse! Besides, Logitech dont listens anymore of complaints that their software messes a lot of stuffs!
     
  10. aznguyphan

    aznguyphan Notebook Evangelist

    Reputations:
    207
    Messages:
    517
    Likes Received:
    0
    Trophy Points:
    30
    Uploaded a Autohotkey compiled script in previous post, you no longer have to have Autohotkey installed unless you want to adjust the script for your own preference
    Updated the code so that horizontal scrolling works better...Did I say I wasn't going to worry about it? Well it was actually simple and with that attitude I wouldn't of had this script in the first place =D.

    Also made it so that it only either scrolls horizontally or vertically and not both at once, felt this was needed for control since my settings have it so sensitive to movement.

    Code:
    $*MButton::
    
    Hotkey, $*MButton Up, MButtonup, off
    KeyWait, MButton, T0.2
    If ErrorLevel = 1
    {
    	Hotkey, $*MButton Up, MButtonup, on
    	MouseGetPos, ox, oy
     	SetTimer, WatchTheMouse, 5
    	SystemCursor("Toggle")
    }
    Else
    	Send {MButton}
    return
    
    MButtonup:
    Hotkey, $*MButton Up, MButtonup, off
    SetTimer, WatchTheMouse, off
    SystemCursor("Toggle")
    return
    
    WatchTheMouse:
    MouseGetPos, nx, ny
    dy := ny-oy
    dx := nx-ox
    If (dx**2 > 0 and dx**2>dy**2) ;edit 4 for sensitivity (changes sensitivity to movement)
    {
    	times := Abs(dy)/1 ;edit 1 for sensitivity (changes frequency of scroll signal)
    	Loop, %times%
    	{
    		If (dx > 0)
    			Click WheelRight
    		Else
    			Click WheelLeft
       	}
    }
    If (dy**2 > 0 and dy**2>dx**2) ;edit 0 for sensitivity (changes sensitivity to movement)
    {
    	times := Abs(dy)/1 ;edit 1 for sensitivity (changes frequency of scroll signal)
    	Loop, %times%
    	{
    		If (dy > 0)
    			Click WheelDown
    		Else
    			Click WheelUp
    	}  
    }
    MouseMove ox, oy
    return
    
    SystemCursor(OnOff=1)   ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
    {
        static AndMask, XorMask, $, h_cursor
            ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
            , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; blank cursors
            , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; handles of default cursors
        if (OnOff = "Init" or OnOff = "I" or $ = "")       ; init when requested or at first call
        {
            $ = h                                          ; active default cursors
            VarSetCapacity( h_cursor,4444, 1 )
            VarSetCapacity( AndMask, 32*4, 0xFF )
            VarSetCapacity( XorMask, 32*4, 0 )
            system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
            StringSplit c, system_cursors, `,
            Loop %c0%
            {
                h_cursor   := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% )
                h%A_Index% := DllCall( "CopyImage",  "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 )
                b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0
                    , "int",32, "int",32, "uint",&AndMask, "uint",&XorMask )
            }
        }
        if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
            $ = b  ; use blank cursors
        else
            $ = h  ; use the saved cursors
    
        Loop %c0%
        {
            h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 )
            DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% )
        }
    }
    
     
  11. john liu

    john liu Newbie

    Reputations:
    0
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    5
    Thanks.the msscroll.exe does well , but it has a little bug. when midbtn focused on a new window , it still move the old window's scollbar. when changing window, it should first switch focus then to scroll, I think that is better. how about you ,thanks again.
     
  12. aznguyphan

    aznguyphan Notebook Evangelist

    Reputations:
    207
    Messages:
    517
    Likes Received:
    0
    Trophy Points:
    30
    I've noticed that...and...well that's it xD, I have no idea how to interact with windows that are not the focused window.

    I know the Lenovo's drivers are able to do it, but hey...that's why we pay them isn't it =P.

    Now, if you want to edit the script so that it middle clicks first and then scrolls when you hold it down, that'll change the focus for you. But this will cause accidental link clicks when you're scrolling a web page. I don't know how to change a focus window without a click of some sort.
     
  13. aperture science

    aperture science Notebook Consultant

    Reputations:
    74
    Messages:
    101
    Likes Received:
    0
    Trophy Points:
    30
    copy this into notepad, rename it to ahk, then put it in startup?
     
  14. aznguyphan

    aznguyphan Notebook Evangelist

    Reputations:
    207
    Messages:
    517
    Likes Received:
    0
    Trophy Points:
    30
    Yes, if you want to play with the code. Otherwise just download MScroll.exe

    Make sure to do the registry edit to number of lines per scroll
     
  15. hyetou

    hyetou Newbie

    Reputations:
    0
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    5
    Old thread, but I wanted to say thank you so much aznguyphan. Your script works great. I like it better than the other solution I found, which is to use Marble Mouse Scroll Wheel. It sets up similarly to your script (set the trackpoint settings to neither), and it probably acts more like the trackpoint's standard scroll, but yours has a better feel and it works smoother on more programs (I've noticed Pidgin and Winamp).

    Also I would like to add that you don't need to edit the registry, you can change the number of lines it scrolls in Window's control panel under mouse.

    Now if only we could figure out how to scroll whichever window the cursor is hovering over, regardless of focus, then it would be perfect. :D
     
  16. WAYNENUMM

    WAYNENUMM Notebook Guru

    Reputations:
    55
    Messages:
    71
    Likes Received:
    0
    Trophy Points:
    15
    I have been searching for a way to get essentially "trackpoint scrolling = standard" funtionality, but with middle clicking functionality. I don't quite understand everything about MScroll.exe, but I downloaded it and ran it, and I set the trackpoint to neither, and I seem to now have what I want.

    Awesome! Thanks aznguyphan!
     
  17. LenovoGringo

    LenovoGringo Notebook Consultant

    Reputations:
    15
    Messages:
    155
    Likes Received:
    0
    Trophy Points:
    30
    This is great! IMHO Lenovo should pay you guys and incorporate this into all of the current Thinkpads. Whomever coded this should know that the Thinkpad community is very grateful!
     
  18. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    This Script is amazing! Sorry for the old bump, but could you please clarify how to change the sensitivity? I don't understand the two lines you commented, but I want to decrease the sensitivity for vertical scrolling.
     
  19. adante

    adante Notebook Geek

    Reputations:
    0
    Messages:
    79
    Likes Received:
    3
    Trophy Points:
    16
    Howdy. Thanks. I have been looking for this for years. I was going to say I didn't realise it would be as simple as an AutoHotkey script, but then also realisd that script does not look that simple :)

    edit: Also if you have paypal want some beer money then pm me your paypal id :)
     
  20. ajjy

    ajjy Notebook Enthusiast

    Reputations:
    0
    Messages:
    23
    Likes Received:
    0
    Trophy Points:
    5
    Not sure if anyone still cares but for future reference:

    The UltraNav that came with my x220 has a scrolling type "Auto-select" under trackpoint settings which seems to accomplish what we're after.
     
  21. adante

    adante Notebook Geek

    Reputations:
    0
    Messages:
    79
    Likes Received:
    3
    Trophy Points:
    16
    I'm not sure if this is the same as what you're talking about, but the UltraNav on my T520 has an option for scrolling type 'auto-select'.

    For me it doesn't do what is desired in the OP of this thread.

    If I set the scrolling type to smooth, and the functionality to scrolling, it just acts like a middle click. For programs like chrome and firefox this is manageable as they bring up the scroller. For programs like notepad, it does nothing (it cannot scroll).
     
  22. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    adante is correct. With the settings suggested, the X220 behaves like laptops bevor: middle click is then just the "normal" middle click, which in browsers triggers "smooth scrolling".
     
  23. ajjy

    ajjy Notebook Enthusiast

    Reputations:
    0
    Messages:
    23
    Likes Received:
    0
    Trophy Points:
    5
    I've since realised that this "auto-select" mode only really works in Internet Explorer. There it allows opening closing tabs with middle click and the normal trackpoint style scrolling. Anyway its a moot point because no one really uses IE.

    I will give this script a go.
     
  24. jonathanysp

    jonathanysp Newbie

    Reputations:
    0
    Messages:
    7
    Likes Received:
    0
    Trophy Points:
    5
    Just wondering, apart from changing the scroll wheel lines from regedit/control panel, how can i change the sensitivity in the script?
     
  25. snajk

    snajk Notebook Enthusiast

    Reputations:
    0
    Messages:
    19
    Likes Received:
    0
    Trophy Points:
    5
    Thanks, this script is great. However, since I updated a bunch of Lenovo programs this morning (including the navpoint software) it stopped working. It still works with a mouse or if I hold the middlebutton and use one finger on the touchpad, but not while using the touchpoint. I can't see how it's any different but somehow it is. Any suggestions would be appriciated, thanks.
     
  26. aznguyphan

    aznguyphan Notebook Evangelist

    Reputations:
    207
    Messages:
    517
    Likes Received:
    0
    Trophy Points:
    30
  27. hyetou

    hyetou Newbie

    Reputations:
    0
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    5
    I have discovered a better solution for this, and it's very simple. A little program called Marble Mouse Scroll Wheel. It's somewhat difficult to find as the original page is down, but you can get it here: Casey Tech: Download Marble Mouse Scroll Wheel Here!. Just install it and set the scroll button to Middle (Button 3).

    This problem has bothered me since I first got my Thinkpad. I looked everywhere and tried the script mentioned in this thread but never really found what I was looking for, until today. This program achieves a scroll very much like the UltraNav's, including the ability to scroll windows that are behind other windows without changing focus, and it allows you to use the middle click as normal. :D

    *edit*
    I forgot to say, you should uninstall the UltraNav drivers first, this program works with the generic Windows drivers.
     
  28. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    Good find. But uninstalling UltraNav drivers is not really necessary. You might still want to use some touchpad features.
     
  29. erikgoranzon

    erikgoranzon Newbie

    Reputations:
    0
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    5
    The middle button doesnt work for me. scrolling works fine. Do I need to go into ultranav settings and do something there to make the middle button thing work?
     
  30. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    Why don't you try Marble Mouse Wheel as hyetou suggested?
     
  31. Omegatron

    Omegatron Notebook Enthusiast

    Reputations:
    0
    Messages:
    26
    Likes Received:
    0
    Trophy Points:
    5
    When I install Marble Mouse on a Thinkpad T410, it doesn't work. It gives me scroll functionality when I hold down the middle button and use the touchpad, but not when I hold down the middle button while moving the trackpoint. It will scroll a few lines and then stop, sometimes going up when I move down and vice versa, sometimes running away and scrolling way down the page. Is this a conflict between Marble mouse and ultranav? Can I reinstall ultranav if I uninstall it?
     
  32. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    Marble Mouse and Ultranav worked fine when I tried it. Yes, you can reinstall Ultranav, just use System Update or download it from Lenovo's driver matrix page. By the way, I use the AutoHotKey Script from this post as I find it a tad more reliable.
     
  33. zsero

    zsero Notebook Deity

    Reputations:
    281
    Messages:
    957
    Likes Received:
    0
    Trophy Points:
    30
    I'm going crazy with a similar problem. My problem is that Middle Click stops the Trackpoint cursor. Touchpad works fine.

    I'm trying to explain it on Lenovo's forums:
    Newest UltraNav driver brakes native windows middl... - Lenovo Community

    Here is my post from that forum:
    So here is the sample application I made:
    Button Tester (source code included, in case you are afraid of a virus)

    Can you try if you can draw with the middle button using the TrackPoint? For me it doesn't work with Lenovo's driver.
     
  34. primordius

    primordius Newbie

    Reputations:
    0
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    5
  35. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    A thread discussing TPMiddle is linked on page 3 of this thread. Anyway, I like Marek's program, but the problem is that it does not allow adjusting the scrolling speed, i.e. it uses the Windows default setting, e.g. 3 rows per "wheel". Consequently it is way to sensitive, at least for me. I asked Marek a while ago if he would be able to implement some speed adjustment and he said he would think about it.
     
  36. msafi

    msafi Notebook Guru

    Reputations:
    0
    Messages:
    63
    Likes Received:
    0
    Trophy Points:
    15
    As far as I know, Marek's app doesn't mess with the scroll speed at all. All it does is send a middle click when the middle button of the TrackPoint is used.

    Since we're here talking about this, I'd really like to express how much I appreciate this little app that Marek made for the ThinkPad community. It's a life saver. Thank you so much Marek!
     
  37. zhaos

    zhaos Notebook Consultant

    Reputations:
    37
    Messages:
    154
    Likes Received:
    0
    Trophy Points:
    30
    At least for opening tabs using the middle click, I've become used to navigating the trackpoint with my right hand and being able to control+click on links.
     
  38. daniel0731ex

    daniel0731ex Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
    Really sorry for the old bump, but I'm looking for a similar solution as well.

    Marek's solution is excellent, fits my need almost perfectly except for one little thing: I don't really press down my middle button firmly when I scroll, so usually it kind of "bounces" when I press it. Since Marek is using timeout to distinguish middle clicks and scrolling, it's really annoying when I scroll halfway and suddenly registers a middle click when I don't want to.

    If Marek's program can be changed to count movements (as the script in the first page) rather than timeout, that would be the perfect solution for me. Could someone modify Marek's program or write a script that does the same thing?
     
  39. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    Hi, sorry but I don't quite understand what you mean with not pressing the middle button "firmly"...either you press it (and it is registered as pressed) or you don't. It's not touch sensitive.
     
  40. daniel0731ex

    daniel0731ex Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
    It appears that the Ultranav buttons on my T430 uses a membrane switch instead of a microswitch. This likely why it feels better than most other mouse buttons, but has the drawback of bad contact if there's not enough pressure. Most keyboards provide this pressure with the rubber dome, but the ultranav buttons seems to be not very tactile.