Hi all
two days ago i bought a HP Pavilion dm1 which looks exactly like the mini 311 but it has a faster dual core cpu, 2gig's of ram and 320 gigs of harddisk space. however, it seems to have the same crappy touchpad.
allthough i am not really a c programmer nor a kernel hacker i saw a wiki (german) which described some way to modify the alps driver to enable the use of newer models.. (here's the link for those speaking german amongst you: http://wiki.ubuntuusers.de/Touchpad#...-nicht-erkannt )
however, the proposed line didn't work but once i was in that file i started to fiddle around..
in the german wiki they add one line that looks like this:
Code:
{ { 0x73, 0x02, 0x50 }, 0x4f, 0x4f, ALPS_FW_BK_1 },
to the array definig the different known alps touchpad models (this line probably contains the model description for one type i think)
i then found in the sources, that the first three numbers must match some kind of a hardware fingerprint which they call "E7 report". in order to find out the numbers for my notebook i changed to debug mode by defining DEBUG at the beginning. i then recompiled and loaded the new module. and voilà, my E7 report contained: 73 02 64. so i put them in a new line like this one:
Code:
{ { 0x73, 0x02, 0x64 }, 0xf8, 0xf8, ALPS_FW_BK_2 },
and recompiled and loaded the whole thing.. and tataaaaa.. my ubuntu recognized an ALPS touchpad and when i checked the mouse settings in gnome i even saw the touchpad tab where i could choose all these options and disable the pad while typing etc.. but don't jump around yet.. because sadly it had no effect on the behaviour of the touchpad.. no matter what i set, it didn't change anything..
since i had no clue what the rest of the line was for (except for the last parameter which seems to be something defining special types of touchpads which obviousley need special attention) i tried to go deeper into the sources to find out what the rest stands for...
while i did't find out what the rest is used for (and changin it had no effect on it not changin anything in gnome) i found the place where the actual events from the touchpad are being received by the driver and then processed to pass them on to the system.. its inside the function called
alps_process_packet()
i started to put some printk statements in there which basically print some output to the dmesg pipe or whatever that thing is called and i then found out that as it seems the touchpad itself is sending pure ps2 commands to the OS..
and i also found out that from the data packet, that the driver seems to receive from the bios or whatever sends them, there was no way to distinguish between a tap-click and a real mouse button click!
while googling around the web i also found out that other notebooks with similar touchpads have a "hardware tap feature" which can be enabled or disabled.. if it is enabled the touchpad's firmware does the interpretation of the tap and converts it into a click and i suspect that exactly this is what's happening here... sadly HP's bios sucks so badly that they don't allow us customers to change anything at all and they also don't allow to change how the pad works..
i am now about to restore my notebook to windows 7 again, hoping to find a driver option which disables this crappy hardware touch stuff and finally makes the touchpad work as a real touchpad..
if anyone of you knows what the rest of the lines stand for or how the whole mouse stuff really works i'd be happy to know more about it..
another thing that worried me a bit was: allthough x seemed to recognize my mous as a touchpad it didn't seem to receive the mouse movement from the touchpad driver.. when i checked with
Code:
xinput test "AlpsPS/2
..." i never saw any movements.. i only saw them on the PS/2 Mouse device.. whereas on my old vaio it is exactly the opposite way, i see the movements from the alps but not form the regular ps2 mouse driver..
any help on this is appreciated.. this stupid tap feature really renders my notebook more or less useless because it is soooo annoying when typing something..
my last solution to "solve" the problem would be to find a way how to script X to not accept any mouse input while typing.. so also with a normal mouse it would not be able to move it or click while typing ... maybe that's available somewhere.. the problem of accidentially clicking on something while moving the cursor around would still exist though..
regards
Pascal
Bookmarks