Kali Linux : Touchpad issues – tapping, reverse/natural scrolling

Since I’ve started using Kali Linux, I have often encountered problems with my touchpad. The problem can either be with tapping (tapping the touchpad doesn’t result in a click, and I have to press the physical button), or with scrolling (two finger scrolling doesn’t work).I have come across the following 3 fixes. At least one of them should work for you-
Fix 1: Easiest – GUI setting

This fix requires no fancy commands. You just have to go to Mouse & Touchpad settings and make appropriate changes. To go to the settings, you can either-

Press the windows key (on the lower bottom, Ctrl key, Function key, Windows key, Alt key), and type mouse in the search bar that shows up.
Click the activities button on the top left, and type mouse in the search bar that shows up.

Now, you should see something like this-

You can check the tap to click and two finger scroll options and your problem is solved.

If, however, you see something like this-

Then you have to use the next fixes, as the Mouse and Touchpad setting are useless for you.

Fix 2 : Tapping and reverse Scroll

If you are able to scroll just fine, but your touchpad is not registering the taps, then just type this command into the terminal-

synclient tapbutton1=1
This should enable tapping for you.In my case, I had scrolling working without any problems, but I prefer natural scrolling, and that option wasn’t there for me in mouse & touchpad settings. However, if you type synclient into the terminal, you see something like this-

new@kali:

Parameter settings:    LeftEdge                = 1618    RightEdge               = 5366    TopEdge                 = 1356    BottomEdge              = 4536    FingerLow               = 25    FingerHigh              = 30    MaxTapTime              = 180    MaxTapMove              = 251    MaxDoubleTapTime        = 100    SingleTapTimeout        = 180    ClickTime               = 100    EmulateMidButtonTime    = 75    EmulateTwoFingerMinZ    = 282    EmulateTwoFingerMinW    = 7    VertScrollDelta         = 114    HorizScrollDelta        = 114    VertEdgeScroll          = 0    HorizEdgeScroll         = 0    CornerCoasting          = 0    VertTwoFingerScroll     = 1    HorizTwoFingerScroll    = 0    MinSpeed                = 1    MaxSpeed                = 1.75    AccelFactor             = 0.035014    TouchpadOff             = 0    LockedDrags             = 0    LockedDragTimeout       = 5000    RTCornerButton          = 0    RBCornerButton          = 0    LTCornerButton          = 0    LBCornerButton          = 0    TapButton1              = 1    TapButton2              = 0    TapButton3              = 0    ClickFinger1            = 1    ClickFinger2            = 1    ClickFinger3            = 1    CircularScrolling       = 0    CircScrollDelta         = 0.1    CircScrollTrigger       = 0    CircularPad             = 0    PalmDetect              = 0    PalmMinWidth            = 10    PalmMinZ                = 200    CoastingSpeed           = 20    CoastingFriction        = 50    PressureMotionMinZ      = 30    PressureMotionMaxZ      = 160    PressureMotionMinFactor = 1    PressureMotionMaxFactor = 1    GrabEventDevice         = 0    TapAndDragGesture       = 1    AreaLeftEdge            = 0    AreaRightEdge           = 0    AreaTopEdge             = 0    AreaBottomEdge          = 0    HorizHysteresis         = 28    VertHysteresis          = 28    ClickPad                = 0

You can quickly notice the VertScrollDelta (delta usually refers to rate of change, here speed of scrolling) parameter which for me is set to 114. I decided to check if making it -114 would make it scroll at the same speed but in the opposite direction. To test that, I tried the following command-
synclient VertScrollDelta=-114
And turns out I was right and it did reverse the direction of scrolling.
Little problem
These changes that we made aren’t persistent, and the synclient setting would revert to default every time you start your system again. There are many solutions to this, one of which include editing files in /usr/share/X11/xorg.conf.d/. However, these files tend to get overwritten and we have to deal with a lot of other mess to fix that behavior.Instead, we will use a very simple solution, and just run the above two commands on system startup.
Add the commands to startup

Step 1 : Navigate to the .config directory

cd ~/.config/
Step 2 : Check if autostart folder exists
ls
Step 3: If it doesn’t exist, create the folder. If it exists, skip this step
mkdir autostart
Step 4: Navigate to autostart folder
cd autostart
Step 5: Use your favorite text editor [vim v/s/ sublime text?] (or cat ). I’m using leafpad to make things look less intimidating.
leafpad script.desktop
Step 6: A leafpad windows will pop up. Paste one of the following into the window and then save and then close leafpad.If you are logged in as root (probably the case)[Desktop Entry]Name=MyScriptType=ApplicationExec=/root/script.shIf you are logged in as another user (if you created a non-superuser account)[Desktop Entry]Name=MyScriptType=ApplicationExec=/home/<name here>/script.sh

Note 1 : To find the <name here> in second case, just navigate to home (cd ~) and find present working directory (pwd)

Note 2 : (If you’re curious why I didn’t use ~ and instead made two different scripts for root and other users) Exec=~/script.sh didn’t work for me. Maybe it does work in general, and there was some other factor in play for me, or maybe it isn’t supposed to work at all. Not sure. Any comments in this regard are welcome.

Step 7: Change directory to home.
cd ~
Step 8: Create a file called  script.sh
leafpad script.sh
Step 9: Paste the following code into it. Then save.synclient tapbutton1=1 #To enable tappingsynclient VertScrollDelta=-114 #To reverse direction of scrollPS: Paste only the lines required by you.

Step 10: Make it executable
chmod 777 script.sh
or
chmod a+x script.sh
Restart Kali and see if your tapping and reverse scroll are still working. If not, go through the steps again and see what you missed. Everything is case sensitive so you have to be very careful in that regard.
TroubleShooting

If typing the commands into the terminal worked for you, but automation by adding the commands to startup didn’t, then here is one simple troubleshooting tip to isolate the problem.

Open a terminal and type

./script.sh
If your tapping/reverse scrolling is working fine now, then your script is fine, but the autostart directory content is not. Recheck steps 1 to 6.If your tapping/reverse scrolling isn’t working fine, then your script is flawed. Recheck step 7 to 10.
Fix 3 : modprobe method

I found out about this method here. It did fix a few things for me, but like the second reply on the thread, what happened with me was- 

Earlier my scroll was working and tap to click wasn’tAfter running the commands

Tap to click started working and two finger scroll stopped working

Also, even when my scroll was working it wasn’t natural scroll and that’s a bit inconvenient for me. So, Fix 2 above was the best fix for me. However, I’ve included this fix because it seems to work with most people. So here it is- 

Step 1 : Open a terminal. 

Step 2 : Type the following command. Your mouse pointer will stop working after typing the first command and will resume continue working (hopefully with the touchpad problems solved) after the second.

modprobe -r psmouse 

modprobe psmouse proto=imps

Persistence
Follow these steps-Step 1 : Navigate to required directory
cd /etc/modprobe.d/
Step 2 : Open text editor
leafpad whatever.conf
Step 3:  Paste this-options psmouse proto=imps
Step 4: Save and exit

Restart and see if the changes are persistent. 

Again, I reiterate, this method is based on a fix I found on Kali Forums, and you should read further there if you are facing any problems.That said, if you are facing any problems, then feel free to comment. If you followed the guide but had to do something a bit different to get it working, then also comment, as it may help others.

Latest articles

Related articles