J'utilise une configuration de gestes multitouches personnalisée Touchégg sous Ubuntu 11.04 avec un Trackpad magique. Étant donné que les gestes par défaut (tapotement à 3 doigts et glisser pour déplacer les fenêtres, tapotement à 4 doigts pour afficher le tiret, etc.) sont apparemment codés en dur dans Unity, je ne parviens pas à leur attribuer d’actions Touchégg personnalisées, et certaines actions par défaut. les gestes (que je n'ai pas l'intention d'utiliser beaucoup, voire pas du tout) se confondent parfois avec ceux que j'ai assignés sur mesure et se déclenchent par accident.
Existe-t-il un moyen pratique (à moins de modifier la source uTouch) de désactiver certains des gestes par défaut? Si ce n'est pas le cas, des pointeurs sur des parties du code (peut-être en graal?) Où les gestes par défaut sont définis, et une aide pour le peaufinage seraient également appréciés.
Une mise à jour de réponse de domster pour Ubuntu 12.10.
Le code source de Unity a évidemment changé, voici donc comment obtenir la même chose dans Unity 6.8.0. Les étapes pour télécharger le code source de Unity sont les mêmes que précédemment (je vais copier-coller l'extrait de code de domster):
Sudo apt-get build-dep unity
cd /tmp #It can be done somewhere else, feel free to change the base location.
mkdir unity
cd unity
apt-get source unity
À ce stade, le fichier à modifier est uniquement /tmp/unity/unity-6.8.0/plugins/unityshell/src/unityshell.cpp
.
Recherchez la méthode UnityScreen::InitGesturesSupport()
(ligne 3368 pour Unity 6.8.0).
Ensuite, commentez toutes les lignes commençant par gesture_sub_launcher pour donner l’apparence suivante:
void UnityScreen::InitGesturesSupport()
{
std::unique_ptr<nux::GestureBroker> gesture_broker(new UnityGestureBroker);
wt->GetWindowCompositor().SetGestureBroker(std::move(gesture_broker));
/*
gestures_sub_launcher_.reset(new nux::GesturesSubscription);
gestures_sub_launcher_->SetGestureClasses(nux::DRAG_GESTURE);
gestures_sub_launcher_->SetNumTouches(4);
gestures_sub_launcher_->SetWindowId(GDK_ROOT_WINDOW());
gestures_sub_launcher_->Activate();
gestures_sub_dash_.reset(new nux::GesturesSubscription);
gestures_sub_dash_->SetGestureClasses(nux::TAP_GESTURE);
gestures_sub_dash_->SetNumTouches(4);
gestures_sub_dash_->SetWindowId(GDK_ROOT_WINDOW());
gestures_sub_dash_->Activate();
gestures_sub_windows_.reset(new nux::GesturesSubscription);
gestures_sub_windows_->SetGestureClasses(nux::TOUCH_GESTURE
| nux::DRAG_GESTURE
| nux::PINCH_GESTURE);
gestures_sub_windows_->SetNumTouches(3);
gestures_sub_windows_->SetWindowId(GDK_ROOT_WINDOW());
gestures_sub_windows_->Activate();
*/
}
Reconstruisez à nouveau l'unité en suivant les instructions du maître:
cd /tmp/unity/unity-6.8.0
dpkg-buildpackage -us -uc -nc
cd ..
Sudo dpkg -i *deb
Et voila encore! Déconnectez-vous et reconnectez-vous.
Il s’avère qu’il n’est pas si difficile de patcher le paquet unity
afin de désactiver totalement sa gestion des touches multiples et des gestes. Voici des instructions étape par étape pour corriger le code unity-4.24.0
.
Dans une ligne de commande, entrez:
Sudo apt-get build-dep unity
cd /tmp #It can be done somewhere else, feel free to change the base location.
mkdir unity
cd unity
apt-get source unity
À ce stade, commentez les 2 lignes suivantes du fichier /tmp/unity/unity-4.24.0/plugins/unityshell/src/unityshell.cpp
:
GeisAdapter::Default()->Run();
gestureEngine = new GestureEngine(screen);
et les 4 lignes suivantes du fichier /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp
:
GeisAdapter& adapter = *(GeisAdapter::Default());
adapter.drag_start.connect(sigc::mem_fun(this, &Launcher::OnDragStart));
adapter.drag_update.connect(sigc::mem_fun(this, &Launcher::OnDragUpdate));
adapter.drag_finish.connect(sigc::mem_fun(this, &Launcher::OnDragFinish));
Le code source est dans C++
, vous pouvez donc commenter une ligne en ajoutant //
au début de la ligne. Par exemple, la ligne
GeisAdapter::Default()->Run();
devient
//GeisAdapter::Default()->Run(); .
De retour à la ligne de commande, entrez:
cd unity-4.24.0
dpkg-buildpackage -us -uc -nc
cd ..
Sudo dpkg -i *deb
Et voilà!
Maintenant, si vous vous déconnectez et vous reconnectez, les gestes devraient fonctionner normalement. Triple tap fonctionne sur mon système comme un clic du milieu par défaut, sans avoir besoin de touchegg. Mais touchegg et ginn fonctionnent bien pour définir des gestes personnalisés pour vos applications.
Pour faire cela sur la dernière unité (5.18.0) dans 12.04, vous devez commenter des lignes de code légèrement différentes.
Dans plugins/unityshell/src/Launcher.cpp:
// GeisAdapter& adapter = GeisAdapter::Instance();
// adapter.drag_start.connect(sigc::mem_fun(this, &Launcher::OnDragStart));
// adapter.drag_update.connect(sigc::mem_fun(this, &Launcher::OnDragUpdate));
// adapter.drag_finish.connect(sigc::mem_fun(this, &Launcher::OnDragFinish));
Dans plugins/Unityshell/src/Unityshell.cpp:
// geis_adapter_.Run();
// gesture_engine_.reset(new GestureEngine(screen));
Deuxième essai
dinegri suggère que '[t] o désactive trois gestes, il est [nécessaire] [d'avoir] installé ccsm, [puis] désactivez "Unité MT Poignées de maintien" aussi connaître comme "poignées d'amour" ' ici .
Mais cela nous laisse encore les gestes à quatre doigts.
Premier essai
Le fichier de configuration pour utouch est /etc/ginn/wishes.xml
. Vous pouvez donc éditer ce fichier et supprimer (ou commenter) les actions que vous ne souhaitez pas. Ensuite, Touchégg ferait son travail sans conflits.
PS: Je ne pouvais pas reproduire votre problème ici pour tester la solution. Je suis désolé pour ça.
Désactivez les gestes tactiles standard comme suit:
Sudo apt install dconf-editor
dconf-editor
Dans les menus de gauche, cliquez sur
com > canonical > unity > gestures
et désactivez les 3 gestes de base indiqués ici. Cela fonctionne le 16.04.3.
Notez que vous pouvez attribuer à dpkg-buildpackage un certain nombre de travaux en tant qu'argument, ce qui vous permet d'utiliser tous les cœurs de votre processeur comme suit:
dpkg-buildpackage -us -uc -nc -j$(($(nproc)))
(Cela aurait dû être un commentaire sur la réponse de dgraziotin, mais je ne peux pas poster de commentaires.)
Nous avons construit un terminal de kiosque basé sur Ubuntu, mais les gestes multitouch ont révélé le système d'exploitation. Nous avons donc dû nous en débarrasser.
Il s’agissait d’un appareil à écran tactile Samsung, xinput
a identifié le module tactile sous le nom AFO TCM10J 40V.
Pour désactiver les gestes multitouch sur Ubuntu 14.04, la méthode est fondamentalement la même que celle décrite ci-dessus pour domster, sauf que vous devez trouver un commentaire sur la ligne suivante dans /tmp/unity/unity-4.24.0/plugins/unityshell/src/Launcher.cpp
// InitGestureEngine();