I have often encountered problems with touchpad in Kali Linux. This problem could be either on tapping (tapping the touchpad) or with scrolling with two finger.

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.

1

Now, you should see something like this:
1
You can check the tap to click and two finger scroll options and your problem is solved.
If, however, you see something like this:
1
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:

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=MyScript
Type=Application
Exec=/root/script.sh

If you are logged in as another user (if you created a non-superuser account)
[Desktop Entry]
Name=MyScript
Type=Application
Exec=/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 tapping
synclient VertScrollDelta=-114 #To reverse direction of scroll
PS: 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’t
After 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.