Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/08/2008, à 13:07

Calvin01

Raccourcis switch bureau Clavier-Molette souris

Bonjour,

Je n'ai pas trouvé la solution à mon problème sur le forum, j'ai juste réussi à retrouver gconf-editor apps>metacity>global_keybindings pour ne pas avoir à passer par Système>Préférences>Raccourcis clavier qui ne permet pas de créer des raccourcis avec un bouton de la souris.

Je voudrais changer les raccourcis switch to workspace down et up les raccourcis actuel sont :
Ctrl + Alt + Down (Bureau du bas)
Ctrl + Alt + Up (Bureau du haut)

Je veux remplacer la flèche du bas/haut par la molette du bas/haut. J'ai essayé plusieurs combinaison pour button 4, avec espace, ou deux-points, mais ça ne fonctionne pas. J'ai vérifier le nom des boutons avec la commande xev|grep button.

Donc si quelqu'un pouvait m'éclairer sur le terme à ajouter dans la ligne <Control><Alt>Down hmm

Compiz n'est pas activé, et je n'ai pas envie de l'activer juste pour un raccourcis roll


calvin01@jabber.org
Ubuntu 12.10 (Gnome-Remix) / Linux Mint Debian Edition (Gnome-shell) / ArchLinux (Gnome-shell)

Hors ligne

#2 Le 25/08/2008, à 03:49

andso

Re : Raccourcis switch bureau Clavier-Molette souris

bonjour,
pour changer d' espace de travail avec la roulette ?, t' as ça sous xfce


IMPORTANT: Booster votre (X et K)ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=241092 (pfou!...)
à essayer, et... demain debian? http://fr.wikipedia.org/wiki/Demain_les_chiens
demain les biens? mes biens biens? t' exagére ... la banque!

Hors ligne

#3 Le 25/08/2008, à 23:21

lonelycaty

Re : Raccourcis switch bureau Clavier-Molette souris

andso a écrit :

bonjour,
pour changer d' espace de travail avec la roulette ?, t' as ça sous xfce

Le changement de bureau avec la molette est activé par défaut avec compiz sous ubuntu.

#4 Le 26/08/2008, à 00:54

Calvin01

Re : Raccourcis switch bureau Clavier-Molette souris

Je pensais avoir répondu...

Je n'ai pas envie de changer d'environnement juste pour un raccourcis, pas plus que d'activer compiz-fusion, je voulais juste savoir s'il était possible grace à gconf-editor de creer un tel raccourcis ?


calvin01@jabber.org
Ubuntu 12.10 (Gnome-Remix) / Linux Mint Debian Edition (Gnome-shell) / ArchLinux (Gnome-shell)

Hors ligne

#5 Le 27/08/2008, à 09:29

Calvin01

Re : Raccourcis switch bureau Clavier-Molette souris

Personne n'a d'idée ?


calvin01@jabber.org
Ubuntu 12.10 (Gnome-Remix) / Linux Mint Debian Edition (Gnome-shell) / ArchLinux (Gnome-shell)

Hors ligne

#6 Le 12/05/2009, à 15:08

Tonio 571

Re : Raccourcis switch bureau Clavier-Molette souris

Hello, aurais tu trouvé la solution depuis le temps ? j'aimerai aussi pouvoir passer par la molette sans avoir a utiliser compiz...

Hors ligne

#7 Le 12/05/2009, à 17:47

andso

Re : Raccourcis switch bureau Clavier-Molette souris

http://www.ubuntu-france.org/resultats.html?cref=http%3A%2F%2Fwww.ubuntu-france.org%2Fcref_cse.xml&client=partner-pub-0150107076181427&cof=FORID%3A9&q=param%C3%A9trer+souris&sa=Search#1292
http://doc.ubuntu-fr.org/btnx#attribution_des_actions

ça doit dépendre de la souris? en fait étant sous xfce... ça marche, bon, je sors.

Dernière modification par andso (Le 12/05/2009, à 17:53)


IMPORTANT: Booster votre (X et K)ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=241092 (pfou!...)
à essayer, et... demain debian? http://fr.wikipedia.org/wiki/Demain_les_chiens
demain les biens? mes biens biens? t' exagére ... la banque!

Hors ligne

#8 Le 12/05/2009, à 17:55

Tonio 571

Re : Raccourcis switch bureau Clavier-Molette souris

Ben ecoutes, je ne trouve rien dans ces liens...ça marche parfaitement ac compiz dc je ne pense pas que ça ai un lien ac la souris...

Hors ligne

#9 Le 12/05/2009, à 18:09

andso

Re : Raccourcis switch bureau Clavier-Molette souris

pas de soluce sous le coude


IMPORTANT: Booster votre (X et K)ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=241092 (pfou!...)
à essayer, et... demain debian? http://fr.wikipedia.org/wiki/Demain_les_chiens
demain les biens? mes biens biens? t' exagére ... la banque!

Hors ligne

#10 Le 12/05/2009, à 18:10

Tonio 571

Re : Raccourcis switch bureau Clavier-Molette souris

merci qd meme

Hors ligne

#11 Le 15/05/2009, à 15:19

compte supprimé

Re : Raccourcis switch bureau Clavier-Molette souris

Bonjour,

Ca fait un moment que je cherche cette fonctionnalite pour metacity.
J'ai trouve un debut de solution avec imwheel qui permet de mapper des commandes souris vers des commandes clavier. Il suffit de creer le fichier .imwheel dans le home directory avec dedant :

"desktop_window"
None, Up, Alt_L|Left, 1
None, Down, Alt_L|Right, 1

et de lancer imwheel avec l'option -f.

ca fait :

  molette vers le haut quand la souris est sur le bureau => touches ALT + <fleche vers la gauche>
  molette vers le bas quand la souris est sur le bureau => touches ALT + <fleche vers la droite>

Reste a configurer (ca doit etre le cas par defaut) le switch du workspace avec ces touches.

Mais 2 petits problemes :

1/ on a pas la circularite comme dans compiz-fusion (passage du dernier workspace au premier)
2/ si on fait rouler la molette un peu trop vite , ca met dans un etat ou la touche alt est activee en permanence et faut appuyer sur la touche alt pour sortir de cet etat

Finalement je me suis lance dans l'ecriture d'un bout de code en examinant le code de imwheel (merci a l'auteur au passage).
Voici ce que ca donne (switch_workspace_metacity.c) :

/*
 * 15/05/2009 -- Alain Ducasse
 *
 * Switch workspace with your mousewheel for metacity window manager.
 * 
 * Fr : Change de bureau avec la molette de la souris pour le gestionaire
 *      de fenetre metacity (a la mode de compiz-fusion).
 *
 * Compile : 
 *   gcc switch_workspace_metacity.c -o switch_workspace_metacity -lX11
 *
 * (Required library : libX11-dev)
 *
 * To stop : CTRL+C or 'killall switch_workspace_metacity'
 *
 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <signal.h>
#include <unistd.h>

#include <X11/Xlib.h>
#include <X11/Xatom.h>

// #define LOG_FILE       /* log file in /var/tmp/ for debug */

static int   G_ok = 1;

/*--------------------------------------------------------------------------*/

unsigned int get_nb_desktop(Display *disp, Window root)
{
  Atom           a;
  Atom           xa_ret_type;
  int            ret_format;
  unsigned long  ret_nitems;
  unsigned long  ret_bytes_after;
  unsigned char  *ret_prop;
  unsigned int   nb_desktop;

  a = XInternAtom(disp, "_NET_NUMBER_OF_DESKTOPS", False);
  if (XGetWindowProperty(disp, root, a, 0,
        1, False, XA_CARDINAL, &xa_ret_type, &ret_format,
        &ret_nitems, &ret_bytes_after, &ret_prop) != Success)
  {
    fprintf(stderr,"Cannot get _NET_NUMBER_OF_DESKTOPS property\n");
    return -1;
  }

  if (xa_ret_type != XA_CARDINAL)
  {
    fprintf(stderr,"Invalid type of _NET_NUMBER_OF_DESKTOPS property\n");
    XFree(ret_prop);
    return -1;
  }
  
  assert(ret_nitems == 1);
  assert(ret_format == 32);

  memcpy((unsigned char *) &nb_desktop, ret_prop, 4);

  XFree(ret_prop);

  return nb_desktop;
}

unsigned int get_cur_desktop(Display *disp, Window root)
{
  Atom           a;
  Atom           xa_ret_type;
  int            ret_format;
  unsigned long  ret_nitems;
  unsigned long  ret_bytes_after;
  unsigned char  *ret_prop;
  unsigned int   cur_desktop;

  a = XInternAtom(disp, "_NET_CURRENT_DESKTOP", False);
  if (XGetWindowProperty(disp, root, a, 0,
        1, False, XA_CARDINAL, &xa_ret_type, &ret_format,
        &ret_nitems, &ret_bytes_after, &ret_prop) != Success)
  {
    fprintf(stderr,"Cannot get _NET_CURRENT_DESKTOP property\n");
    return -1;
  }

  if (xa_ret_type != XA_CARDINAL)
  {
    fprintf(stderr,"Invalid type of _NET_CURRENT_DESKTOP property\n");
    XFree(ret_prop);
    return -1;
  }
  
  assert(ret_nitems == 1);
  assert(ret_format == 32);

  memcpy((unsigned char *) &cur_desktop, ret_prop, 4);

  XFree(ret_prop);

  return cur_desktop;
}

void set_cur_desktop(Display *disp, Window root, unsigned int cur_desktop)
{
  Atom           a;
  XEvent         xevent;

  a = XInternAtom(disp, "_NET_CURRENT_DESKTOP", False);

  xevent.type                 = ClientMessage;
  xevent.xclient.type         = ClientMessage; 
  xevent.xclient.display      = disp;
  xevent.xclient.window       = root;
  xevent.xclient.message_type = a;
  xevent.xclient.format       = 32;
  xevent.xclient.data.l[0]    = cur_desktop;
  xevent.xclient.data.l[1]    = CurrentTime;
  xevent.xclient.data.l[2]    = 0;
  xevent.xclient.data.l[3]    = 0;
  xevent.xclient.data.l[4]    = 0;

  XSendEvent(disp, root, False, 
             SubstructureNotifyMask | SubstructureRedirectMask,
             &xevent);
}

void grab_buttons(Display *disp, Window win)
{
  int i;

  for(i = 4; i <= 5; i++)  /* mouse wheel : UP (4) & DOWN (5) */
  {
    XGrabButton(disp,i,AnyModifier,win,
                False, ButtonPressMask,
                GrabModeAsync, GrabModeAsync,
                None,None);
  }
}

void ungrab_buttons(Display *disp, Window root, Window win)
{
  int i;

  XSync(disp,False);

  for(i = 4; i <= 5; i++)
  {
    XUngrabButton(disp,i,AnyModifier,win);
  }
  XUngrabButton(disp, AnyButton, AnyModifier, root);

  XSync(disp,False);
}

Window find_window(Display *disp, Window root, char *wname)
{
  Window   r;
  Window   win;
  Window   *kids;
  unsigned i,nkids;
  char     *title;

  XQueryTree(disp,root,&r,&win,&kids,&nkids);
  win = root;

  for (i = 0; i < nkids; i++)
  {
    XFetchName(disp,kids[i],&title);
    if (title && strcmp(title,wname) == 0)
    {
      win = kids[i];
      XFree(title);
      break;
    }
    if (title) 
      XFree(title);
  }
  XFree(kids);

  return win;
}

void handler_signal(int param)
{
  /* CTRL-C or KILL */
  G_ok = 0;
}

void switch_workspace_with_mousewheel(void)
{
  Display        *disp;
  XEvent         xe;
  Window         root,desktop;
  unsigned int   cur_desktop;
  unsigned int   nb_desktop;
  int            wait_desktop;
#ifdef LOG_FILE
  FILE           *f;

  f = fopen("/var/tmp/switch_workspace_metacity.log","wb");
  assert(f);
#endif

  disp = XOpenDisplay(NULL);

  if (!disp)
  {
#ifdef LOG_FILE
    fprintf(f,"Erreur XOpenDisplay()\n");
#endif
    exit(-1);
  }

  root = DefaultRootWindow(disp);

  wait_desktop = 0;
  desktop      = root;
  while ((wait_desktop < 60) && (desktop == root))
  {
    desktop = find_window(disp, root, "x-nautilus-desktop");
    sleep(1);
    wait_desktop++;
  }

#ifdef LOG_FILE
  fprintf(f,"Attente desktop : %d s\n",wait_desktop);
#endif

  if (desktop != root)
  {
    fprintf(stdout,
        "\n>>> Switch workspace with your mousewheel for metacity\n\n");

    nb_desktop = get_nb_desktop(disp,root);
 
    cur_desktop = get_cur_desktop(disp,root);

#ifdef LOG_FILE
    fprintf(f,"nb_desktop = %d, cur_desktop = %d\n",nb_desktop,cur_desktop);
#endif
 
    XAllowEvents(disp,AsyncBoth,CurrentTime);
 
    grab_buttons(disp,desktop);

    signal(SIGINT,handler_signal);
    signal(SIGTERM,handler_signal);

#ifdef LOG_FILE
    fprintf(f,"Attent la molette ...\n");
    fflush(f);
#endif
 
    while (1)
    {

      // while (G_ok && (XPending(disp) == 0))
      //   usleep(100);

      if (!G_ok)
        break;

      XNextEvent(disp,&xe);

      if(xe.type == ButtonPress)
      {
#ifdef LOG_FILE
        fprintf(f,"    %s\n",xe.xbutton.button == 5 ? "DOWN" : "UP");
        fflush(f);
#endif

        if (xe.xbutton.button == 5)
        {
          cur_desktop = (cur_desktop + 1) % nb_desktop;
        }
        else
        {
          if (cur_desktop)
            cur_desktop--;
          else
            cur_desktop = nb_desktop - 1;
        }
      
        set_cur_desktop(disp, root, cur_desktop);
      }
    }

    ungrab_buttons(disp,root,desktop);
  }
#ifdef LOG_FILE
  else
    fprintf(f,"Desktop non trouve !!!\n");
#endif

#ifdef LOG_FILE
  fprintf(f,"Exit de switch_workspace_with_mousewheel()\n");

  fclose(f);
#endif

  XCloseDisplay(disp);
}


int main()
{
  switch_workspace_with_mousewheel();

  return 0;
}

Faut la librairie libX11-dev pour compiler.
Une fois lance ca devrait marcher !
Reste plus qu'a le lancer au demarrage de gnome (Systeme->Preferences->Applications au demarrage) en executant un script qui contient :

/le/repertoire/du/programme/switch_workspace_metacity &

Bon test.
a+

Dernière modification par alduc1 (Le 16/05/2009, à 00:12)

#12 Le 02/11/2009, à 13:27

tuxce

Re : Raccourcis switch bureau Clavier-Molette souris

merci pour le programme, ça fonctionne parfaitement smile

Hors ligne

#13 Le 01/04/2010, à 21:47

Lo_pescofi

Re : Raccourcis switch bureau Clavier-Molette souris

Pour changer de bureau avec la molette de la souris, j'ai aussi cherché longtemp, la réponse est ici :
http://www.linuxmint-fr.org/forum/suppo … ouris.html

tu y trouveras :
"allez dans le gestionnaire de configuration compizconfig
puis changeur de bureau onglet "destop-based viewport switching"
et là activer "bureau suivant" mettre button4 et "bureau précédent" mettre button5"

mais  aussi :
ouvrir un terminal et taper 'gconf-editor' (sans être en "su")
Trouver les clés suivantes et changer les valeurs par ce qui est en gras ci dessous :
apps > compiz > plugins > vpswitch > allscreens > options > next_button­ Button5
apps > compiz > plugins > vpswitch > allscreens > options > prev_button­ Button4

Voilà

Hors ligne

#14 Le 14/05/2010, à 12:18

NicoR

Re : Raccourcis switch bureau Clavier-Molette souris

Lo_pescofi a écrit :

"allez dans le gestionnaire de configuration compizconfig
puis changeur de bureau onglet "destop-based viewport switching"
et là activer "bureau suivant" mettre button4 et "bureau précédent" mettre button5"

Excellent, exactement ce que je cherchais. Marche impec.

Merci.

Dernière modification par NicoR (Le 14/05/2010, à 12:19)

Hors ligne

#15 Le 01/06/2011, à 11:29

ztroudi

Re : Raccourcis switch bureau Clavier-Molette souris

Lo_pescofi a écrit :

Pour changer de bureau avec la molette de la souris, j'ai aussi cherché longtemp, la réponse est ici :
http://www.linuxmint-fr.org/forum/suppo … ouris.html

tu y trouveras :
"allez dans le gestionnaire de configuration compizconfig
puis changeur de bureau onglet "destop-based viewport switching"
et là activer "bureau suivant" mettre button4 et "bureau précédent" mettre button5"

mais  aussi :
ouvrir un terminal et taper 'gconf-editor' (sans être en "su")
Trouver les clés suivantes et changer les valeurs par ce qui est en gras ci dessous :
apps > compiz > plugins > vpswitch > allscreens > options > next_button­ Button5
apps > compiz > plugins > vpswitch > allscreens > options > prev_button­ Button4

Voilà

J'ai appliqué ces modification, mais comment je peux le tester ?

Merci d'avance smile

Hors ligne