Synaptics custom gestures for Windows using registry - windows

I am a huge fan of mouse gestures and the ones introduced in Windows 10 are great.
However, I used to be able to use three-finger swipe right/left as back and forth gestures in my browser in Windows 8.1 and now the same gesture is used for task switching. I can install the old drivers, but then I will loose the three-finger swipe up gesture to show all windows open.
I use a Synaptics ClickPad which can detect up to four fingers.
Is is possible to change the registry to enable to following gestures:
Three finger left/right: Back/forth in browser
Four finger left/right: Switch between Virtual Desktops
For instance, switching between Virtual Desktops is using the key combination CTRL + WINKEY + RIGHT/LEFT ARROW. How do I apply this combination to the registry?

DISCLAIMER: This answer doesn't cover current versions of the driver but the general direction of tweaking the gestures for them.
To customize swipe behavior, you should dig in registry.
Action settings are stored in HKLM\SOFTWARE\Synaptics\SynTPPlugins\SynTP\, each key's name is ID. There are some unused keys, which can be used for custom key combinations, I've edited default arrow keys (IDs 23-26) templates for this.
To change behavior of action, you should change KeySequence value (which consist of behavior of key pressing and the keys itself). Here's the list for actions you've asked:
Browser back - 0x00000a6
Browser forward - 0x000000a7
Switch to left desktop - 0x30115b25 (ctrl+win+arrow left)
Switch to right desktop - 0x30115b27 (ctrl+win+arrow right)
After you've made changes to these "plugins", you need to assign their IDs to user settings, which are stored in HKEY_**CURRENT_USER**\SOFTWARE\Synaptics\SynTP\*name-and-connection-type-of-device*\, there are separate keys for 3- and 4-finger gestures. ActionID1,3,5,7 are matching swipe up, right, down and left, Action11 for tap, so you should assign ID (in decimal form) of customized plugins for ActionIDs 3 and 7 (note: my touch pad can't recognize 4-finger swipe, so I don't have these ActionIDs available).
To use new settings you should stop all SynTP*.exe processes and start service named SynTPEnhService. Powershell one-liner for that:
Stop-Service "SyntpEnhService"; kill -name SynTPEnh; kill -name SynTPHelper; Start-Service "SynTPEnhService"

I created a reg file starting from chupasaurus answer.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Synaptics\SynTP\*edit here*\3FingerGestures]
"ActionID1"=dword:00000017
"ActionID3"=dword:00000019
"ActionID5"=dword:00000018
"ActionID7"=dword:0000001A
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\23]
"KeySequence"=dword:000000a6
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\24]
"KeySequence"=dword:000000a7
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\25]
"KeySequence"=dword:3A115b25
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\26]
"KeySequence"=dword:3A115b27
It works for me, just find out the proper name of your folder HKEY_CURRENT_USER\SOFTWARE\Synaptics\SynTP*this-one*.
Mine is a 5 years old laptop, its not fluid, and sometimes it opens the windows menu for no reason. I cannot ask more but other solutions are welcome.

The original answer didn't work on my Windows 10 HP Spectre but azote's answer led me to the solution.
I modified actionid's 3 and 7 under Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTP\Win10\3FingerGestures
Then restarted with the powershell command from chupasaurus (below) and voila! Works like a charm and the 3 finger up and down swipes still work too.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTP\Win10\3FingerGestures]
"ActionID3"=dword:00000018
"ActionID7"=dword:00000017
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\23]
"KeySequence"=dword:000000a6
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\24]
"KeySequence"=dword:000000a7
Run PowerShell as Admin:
Stop-Service "SyntpEnhService"; kill -name SynTPEnh; kill -name SynTPHelper; Start-Service "SynTPEnhService"

Confirming this actually worked on Windows 10 HP Spectre with Synaptics driver v19.3.11.41.
For the *editme* flag I had to use the "TouchPadSMB2cTM3257" option (TouchPadPS2TM3257 was also installed but did not work)
My contribution (just setting navigate back and forth):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Synaptics\SynTP\*editme*\3FingerGestures]
"ActionID3"=dword:00000018
"ActionID7"=dword:00000017
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\23]
"KeySequence"=dword:000000a6
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\24]
"KeySequence"=dword:000000a7
Do set the "current user" part in the correct user hive :-)

How to map changing browser-tabs to 3-finger swipe left and right
This isn't so much an answer for the first question (as I feel that's been sufficiently answered), but some information for future reference and others who may want to do the same thing:
ChromeOS has a feature I like of using 3-finger swipe to change between tabs. I spent a few days googling around before I realized all the information I needed was in the comments here.
I didn't change the behavior of 3-swipe up or down, so I only editted ActionID3 and 7. In HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\25 I changed KeySequence to 20001122 (2-key combo of ctrl+Page Down), and similarly HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\26\KeySequence to 20001121 (ctrl+PageUp). I was going to use ctrl+tab and ctrl+shift+tab, but none of the pre-existing macros used the tab key so I was unsure what its keysequence-value would be.
With these edits, I then changed ActionID3 to 19 (25 in hex) [i.e. swipe-right = ctrl+Page Down] and ActionID7 to 1A (26 in hex) [i.e. swipe-left = ctrl+Page Up] under the registry entry [HKEY_CURRENT_USER\SOFTWARE\Synaptics\SynTP\ <Your trackpad> \3FingerGestures]
Hopefully someone else finds this useful!

This reg key allowed my lenovo t50 touchpad 3 finger back/forward work again on windows 10:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTP\Win10]
Note: this will also disable the 3 finger up/down gesture.
Reboot after applying regkey.... this works on explorer, chrome, etc

The 4-finger horizontal scrolling settings are in a key not mentioned in any of the other answers (at least for my ThinkPad T460s running Windows 10).
I had the exactly the same query and this is the reg file that solved the problem for me:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTP\Win10\3FingerGestures]
"ActionID3"=dword:00000018
"ActionID7"=dword:00000017
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\23]
"KeySequence"=dword:000000a6
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPPlugIns\SynTP\24]
"KeySequence"=dword:000000a7
[HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPEnh\ZoneConfig\Win10\4FHorizontal Scrolling]
"NegativeCustomZoneID"=dword:00000087
"PositiveCustomZoneID"=dword:00000088
And as chupasaurus's answer, run this in PowerShell (admin):
Stop-Service "SyntpEnhService"; kill -name SynTPEnh; kill -name SynTPHelper; Start-Service "SynTPEnhService"

Not at the registry level. I have tried everything. This has to be implemented at the driver level.
The problem is most of the synaptics track pads are do not follow Microsoft's "precision track pad specifications." Hence Microsoft is blocking synaptics ability to enable this feature on their track pads.

Related

AHK fails to execute when the "trigger" is used in the window that is in scope. Is there a way to make AHK "greedier"?

I'm trying to switch between virtual desktops on win10 using the XButton1 and XButton2 of my mouse.
So far this is working quite alright, except the fact that when I have for example Firefox as my active scope, obviously those buttons are used to go forward/backward (problem appears in every window using these buttons for something).
This seems to prevent AHK from either noticing that I used the configured trigger or not executing the script (which I believe is less likely).
For Firefox I found a workaround by disabling the use of these buttons in the [about: config](about config) page by setting mousbutton.4th.enable and mouse button.5th.enable to false but this won't work for everything since there isn't always a way to disable these buttons.
I have tried to use the mouse-wheel tilting buttons as well but the default usage oh them is even more common in the programs I'm working with.
Here is the script I am using.
# NoEnv; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
XButton1::Send ^#{Left}
XButton2::Send ^#{Right}
return
If someone has a workaround or a completely different idea (for example a totally obvious Win10 feature/setting I'm missing) I would be absolutely happy.
You can define custom combinations for those two keys in your script
e.g.
XButton1 & LButton::return ; do nothing
; or another action:
; XButton1 & LButton:: Run notepad
XButton1::Send ^#{Left}
XButton2 & a::return
XButton2::Send ^#{Right}
This way the keys lose their native function in the programs.
For details, see Custom Combinations.
EDIT:
If a program is running with admin privileges, then AHK won't intercept the key presses, and that could very well be the reason behind this problem.
If that is the case, try to run the AHK script as administrator by adding this to the auto-execute section (top of the script):
; If the script is not elevated, relaunch as administrator and kill current instance:
full_command_line := DllCall("GetCommandLine", "str")
if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
try ; leads to having the script re-launching itself as administrator
{
if A_IsCompiled
Run *RunAs "%A_ScriptFullPath%" /restart
else
Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
}
ExitApp
}
https://autohotkey.com/docs/commands/Run.htm#RunAs.
When in need to use AHK the solution from user3419297 works perfekt.
Another way to accomplish the same result is to use X-Mouse Button Control.
Simply set Mouse Button 4/5 to Simulated Keys: with {CTRL}{LWIN}{RIGHT} and {CTRL}{LWIN}{LEFT}.

Programming a Gnome extension to disable left edge drag gesture to show the app picker

My apologies to all, if this is in the wrong group.
We’d like to use Fedora 23 in Kiosk mode, but there is was a recently added left edge swipe feature that was added to Gnome Shell (https://github.com/GNOME/gnome-shell)that cannot be disabled easily.
https://github.com/GNOME/gnome-shell/commit/9c4ffc4bf353fe9c64368f3e194e38b0e8f61311
As far as I can tell, our options are:
1) Write an extension to fix this — My favorite
We spoke to the original author, who recommended removing the gesture via an extension.
We have tried writing an extension, but cannot figure out a way to iterate over the gesture list in global.stage to remove it.
(These gestures were added using global.stage.add_action(gesture) and can be removed using global.stage.remove_action(gesture).)
The author has since stopped responding to our emails :(
Any advice on this would be great!
2) Check out the version that we’re on, comment out the code, recompile
and install onto our machines
This sounds great! That way we can fix other bugs also. Looking at the README file
https:// github.com/GNOME/gnome-shell/blob/master/README
It says:
For more information about GNOME Shell, including instructions on how
to build GNOME Shell from source and how to get involved with the
project,
See https:// wiki.gnome.org/Projects/GnomeShell
So, we’ve followed it to this page:
https:// wiki.gnome.org/Newcomers/BuildGnome
And this tells us to check out JHBuild, but we can’t seem to figure out where the gnome shell code is checked out on the machine when we use JHBuild.
If there’s an easier way to make/install, that’d be great. We probably just followed the wrong recommended link.
3) Roll back to an earlier version of gnome shell
But this brings us back to the problem of checking out the gnome shell and make/install as shown in #2.
4) Switch to KDE
We could try KDE instead of Gnome, but we've done lots of testing in Gnome already and could be a major setback.
5) Build a Fedora 22 box to get back to Gnome 3.16 — my least favorite
It’s a huge effort and we can’t be sure what’s changed and what will break. Our Kiosk software may not even run on Fedora 22. But it’s the hail mary back up plan
I work with SciComputing, and, with the help of Florian Müllner, we realized that an extension with the following Javascript code would get rid of the gestures that closed our kiosk window:
/*
* Disable all of the unwanted touchscreen gestures.
*/
function enable() {
global.stage.get_actions().forEach(a => a.enabled = false);
}
/*
* Re-enable the touchscreen gestures.
*/
function disable() {
global.stage.get_actions().forEach(a => a.enabled = true);
}

How to disable safe mode in Firefox 12

While I realize this is an older version of Firefox, the system I'm using it on is around 11 years old and it can't take newer versions without the browser and flash content getting sluggish and choppy. This system serves as a public access station and recently I've had someone try to bypass my internet content filters to access material they're not supposed to and they reset Firefox as part of that attempt.
Is truly disabling safe mode possible and if so, how do I easily do this?
If not, I've also read from here...
Disable/Change Firefox Safe Mode Hotkey (Shift)
that disabling the safe mode hot key (Shift key) is possible. At the very bottom, there is a environmental variable that can be used to do this: MOZ_DISABLE_SAFE_MODE_KEY=1. How and where do I insert this variable?
Thank you in advance for your time. :-)
Regards...
Probably too late to help, but maybe this will be of use to fellow Googlers. This blog explains how to disable safe mode in firefox 17, so it may apply to 12 as well:
https://mike.kaply.com/2013/01/11/disabling-safe-mode-in-firefox-17/
If that doesn't help, the regarding the environment variable, that's done from control panel > system > advanced system settings > "advanced" tab > environment variables. You can put the variable in the upper box if you want it to apply to the current user only, or the lower box if you want it to apply to the whole system.

Setting the Debug version of the Direct3D runtime won't stick

When I open the DirectX control panel and open the Direct3D 9 tab and set "Use Debug Version of Direct3D 9" and hit "OK" or "Apply," there are no errors. If I open the control panel again, it is back to "Use Retail Version of Direct3D 9." When I try to debug my application, I don't get any output from Direct3D.
When I last did this a few months ago, everything worked correctly and I got debug output.
Running the control panel as Administrator doesn't seem to make a difference and the registry key mentioned here http://www.gamedev.net/topic/514529-cant-use-debug-version-of-direct3d/ is set to one.
What else can I try?
Same thing happened to me. It looks like that TrustedInstaller took ownership of some registry keys (including HKLM/SOFTWARE/Microsoft/Direct3D which dxcpl modifies).
Found a solution here. You just have to change ownership of that regkey.
I've seen this happen and sort of collected best practices to try and get this thing working online - you can try it
1.) There's a separate control panel for x86 and x64 applications in DirectX, There is the DirectX Control Panel which comes with the sdk and there you can set to use the d3d debug runtime and the verbosity level. There is also an option for shader debugging and memory check.
2.) Link against d3dx9d.lib instead of d3dx9.lib
3.) Try adding #pragma comment(lib, "d3dx9d")
4.) Use #define D3D_DEBUG_INFO, but use that before including the d3d9 headers.
5.) Check the Use Debug Version of Direct3D 9 in the properties window like so
http://i.stack.imgur.com/WoZAH.png
6.) Use a tool like DebugView
Sources:
http://www.gamedev.net/topic/514529-cant-use-debug-version-of-direct3d/
https://gamedev.stackexchange.com/questions/24541/cant-get-debug-spew-for-direct3d9
for me the solution was this:
"Looking at the permissions on the key can you not hit the "advanced" button? then click the "owner" tab put a check in the bottom box, then highlight the administrators group, then check "take ownership"."
via: http://www.tomshardware.co.uk/forum/238556-45-cannot-modify-delete-change-permissions-registry
after doing this i was able to give my user full access to HKLM/SOFTWARE/Microsoft/Direct3D and then the ctrlpanel kept its settings.

How to disable the little touch-keyboard on Windows edit controls

In a windows version with tablet support, a small keyboard icon appears when an edit control gets focus. If you touch it the touch keyboard pops up.
Is there a way to disable this? It's rather inconvenient if you have your own touch keyboard.
I want to disable it for certain edit controls in code, ie. I'm not looking for a Windows setting.
Giel
Well, I guess a late answer is better than no answer, so here it comes:
You can disable the Windows onscreen-keyboard for your application.
To do so, start Regedit and navigate to the Key [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TabletTIP\DisableInPlace]. There you create a new String Value, set its name to the full application Path (e.g. "C:\Progam Files\My App\MyApp.exe") and set its value to "1".
Edit: Recently I had to rethink my solution... By setting the Registry value, you disable the onscreen-keyboard for the whole application. But should you need a keyboard for some seldom used function of your program and just happend to forget including an onscreen-keyboard, you have to control the Windows TextInputPanel via SDK / API. See this link: Disabling the Input Panel Programmatically.
Use the PenInputPanel for handwriting and the TextInputPanel for an onscreen-keyboard.
For all those Delphi programmers out there: import the Type Library "Microsoft PenInputPanel" and FIX A BUG in the imported *_TLB.pas: change the parameter type of the two methods of IPenInputPanel:
function Get_AttachedEditWindow: SYSINT; safecall;
procedure Set_AttachedEditWindow(AttachedEditWindow: SYSINT); safecall;
Disable the "Touch Keyboard and Handwriting Panel Service"

Resources