Asus touchpad not working after Windows 10 upgrade

Recently I upgraded my ASUS x202e notebook from Windows 8.1 to Windows 10. The upgrade went smoothly and I liked the look of the new OS, but I noticed right away that my touchpad no longer worked. I found some online instructions that restored the cursor, but the click and right-click didn’t work, so what’s the point, right?

I contacted ASUS support, and they said I’d need to reinstall the Windows 8 drivers to fix the problem. And since this did fix my problem, I thought I’d post a how-to, as there were several steps. Keep in mind that this is what fixed my problem as of this writing, which is shortly after win10 rolled out. Things may change over the next few weeks and months.

OK, so here’s what I did. By the way, you’ll need to have either a touch screen or an external mouse to do this, since there is a fair amount of selecting and clicking, and you don’t have a TouchPad yet!

  1. Navigate to http://support.asus.com/download/options.aspx?SLanguage=en , enter your model number, and click ‘Search’.1
  2. In the page that comes up, click on the link for the model you entered. 2
  3. In the page that comes up, select Windows 8 64 bit (not Windows 8.1 64 bit) in the OS drop down.3
  4. Scroll down to the Touchpad section and expand it. Then, click on the ‘Global’ link in the Version V2.0.1 driver to download a .zip file. 4
  5. Save the .zip file in the default Downloads folder, or wherever else you want. Just be sure to make a note of where the .zip file is saved so you can find it again.5
  6. Navigate to the folder where the .zip file is and double click on the file. Then, click on ‘Extract –> Extract All’ to extract the contents of the .zip file. Make sure the ‘Show all extracted files when complete’ checkbox is checked. After the new folder opens, make a note of its location because you’ll need to be able to navigate back here again.6
    Now that you’ve downloaded the driver, you’ll need to uninstall the current driver before you can re-install the downloaded one. You should close all your open programs at this point, because the computer will have to do a re-start after it uninstalls the driver.

  7. In the ‘Search the web and Windows’ textbox in the lower left of the status bar, type ‘Control Panel’ and then click on the ‘Control Panel Desktop App’.
  8. In the Programs section, click on ‘Uninstall a program’.7
  9. Scroll to ‘ASUS Smart Gesture’, select it, and then click on ‘Uninstall’. Say ‘Yes’ or ‘OK’ or ‘Continue’ to any prompts that come up.8
  10. When it asks you whether to re-start the computer, say yes. After you’ve logged back in, navigate to the folder you made a note of in step #6 and double-click on it to open it.
  11. Double click on the SetupTPDriver Installer file, click on ‘Run’, and then click on ‘Next’ or ‘Yes’ in the following prompts. When it asks you whether to re-start the computer, say yes.9
  12. After you’ve logged back in, you should have a working touchpad again šŸ™‚

A deep(ish) dive in to the structure of jQuery

I’ve been working with Murach Publishing to revise their JavaScript book, and it’s almost ready to go to press (yay!). While I was finishing up the final Intro to jQuery chapter, though, I found myself puzzled by something. But first, let me give you some JavaScript background to explain my puzzlement.

In JavaScript, you can use constructor functions to make multiple instances of an object. When you do, you should put the object’s methods on the object prototype. This saves memory and makes the methods available to all instances of the object.

By contrast, when you’re working with a singleton, like an object literal or an object created with the module pattern, there’s only one instance of the object. In this case, you should put the methods directly on the object.

The jQuery library uses the module pattern to create a global singleton object named jQuery. That means there’s only one instance of jQuery. But when you create a jQuery plugin, you’re supposed to add your method to the jQuery.fn (or $.fn) object, which is an alias for the jQuery object’s prototype. But why? If the jQuery object is a singleton, why are we adding methods to it’s prototype?

Further puzzling me, the jQuery plugin tutorial says “Whenever you use the $ function to select elements, it returns a jQuery object”. Hmm. If jQuery is a singleton created by the module pattern, how is the $ function returning jQuery objects?

Now, you should know that you don’t need to have the answers to these questions to use jQuery effectively and write your own plugins. You don’t even need to have them to write an effective Intro to jQuery chapter in a JavaScript technical book. And so I set this all aside and went on with my work.

Yesterday, though, I couldn’t take not knowing the answers for one more second. So I read some articles online and studied the uncompressed jQuery code (luckily the library isn’t too massive), and I think I’ve figured it out. Bear with me, though – things get a little circular.

The jQuery object is indeed a singleton created with the module pattern, and the methods that jQuery uses are indeed on this singleton object’s prototype. But, crucially, one of the objects on that prototype is a constructor function named init. And, also crucially, the prototype of the init constructor function points to the prototype of the singleton jQuery object. Finally, most crucially, an instance of this init object is what is returned when you call the $ function.

Another way to look at this is that the singleton object’s $ function is a factory that creates and returns instances of the jQuery.fn.init constructor function. And both the singleton and the instances of the init object are referred to as jQuery objects. And they have the same prototype, so anything I add to the singleton’s prototype is also availableĀ to the prototype of all the instances of the init object.

Phew! No wonder I was puzzled. I’m not enough of a jQuery maven to know why this structure was chosen. It might be that there’s some really advanced JavaScript benefit to coding it this way. Or it might be that it’s a holdover from earlier versions that they wish they could change but it would cause too many problems. But at least I think I’ve got a grip on why I’d want to add my plugin code to the singleton jQuery object’s prototype.

Here are some code examples that illustrate:

example