logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 24-07-2021 00:10:53

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

souris au clavier (sur macbook pro)

Bonjour. Bonsoir.

Il y a moyen d'après la doc de bouger/cliquer la souris via le clavier.

On propose parfois le logiciel 'xdotool'
parfois une combinaison de touche pour activé mais cela varie parfois en fonction de l'environement
Une fois activé: on utilise souvent d'après ce que je lis, le pavé numérique..

Je n'ai pas essayer xdotool, je n'ai pas de tuto très précis
et je ne suis pas arrivé à activé la souris au clavier.
Et je n'ai pas de pavé numérique. Or beaucoup de pas web en parle
Puis, pour la combinaison de touche, je ne suis pas certains de ce que je fais.
->
Car je suis sur un laptop MacBook Pro sans pavé numérique.
et ma debian à son fichier keyboard :
XKBMODEL="apple_laptop"
XKBLAYOUT="fr"
XKBVARIANT="mac"
XKBOPTIONS="terminate:ctrl_alt_bksp"
BACKSPACE="guess"

Je n'arrive non plus pas à utiliser la touche LOGO
que je pense être celle de la pomme devenu 'cmd' actuellement sur ces ordi.

auriez vous une solution ?
est ce que cela fonctionne en console ?

au départ, je pensais que gpm aurait pu m'être utile mais je faisait fausse route : utilisation de la souris en console...

merci a+

Hors ligne

#2 24-07-2021 00:21:34

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

Re : souris au clavier (sur macbook pro)

Désolé j'oubliais de dire que
je suis sous:
Debian 10
avec i3 (plus rarement fluxbox)
et mon gestionnaire de fichier est pcmanfm (je n'aime pas pcmanfm-qt)

parait que cela peut avoir son importance pour cette fonction !..

bonsoir

Hors ligne

#3 24-07-2021 01:36:00

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : souris au clavier (sur macbook pro)

Quelques test, ça à l'air de fonctionner (fauf le clic droit???)
Dans la config i3:

    mode "mousemove" {
        # move uo
        bindsym $mod+i exec "xdotool mousemove_relative 0 -10"
        # move left
        bindsym $mod+j exec "xdotool mousemove_relative -- -10 0"
        # move down
        bindsym $mod+l exec "xdotool mousemove_relative +10 0"
        # move right
        bindsym $mod+k exec "xdotool mousemove_relative 0 +10"
        # click left
        bindsym $mod+u exec "xdotool click 1"
        # click right
        bindsym $mod+o exec "xdotool click 3"
       

        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+m mode "default"
    }

    bindsym $mod+m mode "mousemove"



Voir avec la touche mod que tu as défini chez toi (touche windows chez moi)
J'ai tout "enfermé" dans un mode pour ne pas me soucier d'éventuels conflits avec ma config, donc :
   - touche win + touche m pour entrer dans le mode mousemove
   - win + ijkl pour déplacer la souris
   - win + uo pour cliquer

Pour autres configs que i3, voir avec xbindkey (sous X11)

Hors ligne

#4 25-07-2021 23:45:26

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

Re : souris au clavier (sur macbook pro)

Merci
ça fonctionne.

Maintenant, je ne suis pas arrivé à sélectionner du texte ou autre.

J'ai du juste installé 'xdotool' pour ma part
et je vais peut-être changer les lettres par des flêches de direction.
Mais merci

Hors ligne

#5 29-07-2021 01:09:30

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : souris au clavier (sur macbook pro)

Oui, j'ai réussi à faire des doubles clics, mais c'est à peu prêt tout : pas de glisser déposer,  pas de surlignage de texte...
Il y a sûrement quelques paramètres sur lesquels tu peux jouer, aussi, peut-être assigner différentes fonctions à différents touches (cliquer et maintenir à celle-ci, simple clic sur celle là)...

J'ai voulu essayer de créer un profil d'accélération autour de xdotool avec un script bash. Ca fonctionne pas trop mal chez moi, et c'est un peu plus agréable.

#!/bin/bash

DIRECTION=$1

### Help and description ###

if [ -z $DIRECTION ]; then
    echo "
    usage : ./movemouse.sh DIRECTION

    move mouse toward DIRECTION (UP, RIGHT, DOWN, LEFT)

    description:

        On first call, mousemove.sh will move mouse of MIN_SPEED pixels
        if mousemove.sh command is called again before the time defined by TIMEOUT,
        mouse movement will be accelerated until it reach MAX_SPEED.
       
        Two acceleration profiles are available : triangle and sigmoid (experimental)

        See section USER_PARAMETERS to change acceleration profiles
    "

    exit 1
fi


### USER PARAMETERS : ACCELERATION PROFILES ###

MIN_SPEED=1 # in pixel
MAX_SPEED=40
TIMEOUT=100 # ms, max time between two events, then reset speed
ACC_BEGIN_T=300 # time in ms after acceleration begin
ACCELERATION="50/2000" # acceleration in pixel/s

ACCEL_FUNCTION="triangle" # triangle, sigmoid


### CACHE FILES : DEFINITION and INIT ###

CACHE_DIR="$HOME/.config/movemouse"
LAST_TIME_FILE="$CACHE_DIR/last_time"
LAST_DIR_FILE="$CACHE_DIR/last_direction"
START_TIME_FILE="$CACHE_DIR/start_time"

if ! [ -d "$CACHE_DIR" ]; then
    mkdir -p $CACHE_DIR
fi
touch $LAST_TIME_FILE
touch $LAST_DIR_FILE
touch $START_TIME_FILE


### SCRIPT BEGIN ###

ms_time () {
    # time in ms
    echo $(($(date +%s%N)/1000000))
}


triangle () {
    # triangle acceleration profile + 2 steps
    #
    # speed (px/call)
    #  ^          ________                                              
    #  |         /                                                
    #  |        /                                                
    #  | ______/                                                        
    #  |-------------------------->  time                                                        
    delta_T=$1

    if [ "$delta_T" -le "$ACC_BEGIN_T" ]; then
        speed=$MIN_SPEED
    else
        speed=$((($delta_T-$ACC_BEGIN_T)*$ACCELERATION))
    fi

    if [ "$speed" -ge "$MAX_SPEED" ]; then
        speed=$MAX_SPEED
    fi

    echo $speed
}
       
sigmoid () {
    # sigmoid acceleration profile  

    T=$1
    P=$MAX_SPEED # puissance (en pixel)
    x0=1.5 # offset : latence avant acceleration
    acc=0.5 # pente de l'accélération

    value=$(python3 -c "import math; print(int($P / (1 + math.exp( -($T/1000 - $x0) / $acc))))")
    echo $value

}

get_direction () {
    # tranform named directions onto vector

    if [ "$1" = 'UP' ]; then
        echo "0;-1"
    elif [ "$1" = 'RIGHT' ]; then
        echo "1;0"
    elif [ "$1" = 'DOWN' ]; then
        echo "0;1"
    elif [ "$1" = 'LEFT' ]; then
        echo "-1;0"
    fi
}

get_start_time () {
    # get or reset mouse movement init time

    new_direction=$1
    current_time=$(ms_time)

    # load cache
    last_time=$(cat $LAST_TIME_FILE)
    last_direction=$(cat $LAST_DIR_FILE)
    start_time=$(cat $START_TIME_FILE)

    # time difference between 2 "mouse" events
    delta_t=$(($current_time - ${last_time:-0}))

    # too late
    if [ "$delta_t" -gt "$TIMEOUT" ]; then
        last_direction=$new_direction
        start_time=$current_time
    fi

    # new direction
    if [ "$last_direction" != "$new_direction" ]; then
        last_direction=$new_direction
        start_time=$current_time
    fi

    # save to cache
    last_time=$current_time

    echo $last_time > $LAST_TIME_FILE
    echo $last_direction > $LAST_DIR_FILE
    echo $start_time > $START_TIME_FILE

    # return time delta
    echo $(($current_time-$start_time))

}


# main

delta_T=$(get_start_time)
echo "delta : $delta_T"
speed=$($ACCEL_FUNCTION $delta_T) # compute mouse speed (in pixel)
echo "speed : $speed"

dx=$(get_direction $DIRECTION | sed 's/;.*//g')
dx=$(($dx*$speed))

dy=$(get_direction $DIRECTION | sed 's/.*;//g')
dy=$(($dy*$speed))

xdotool mousemove_relative -- $dx $dy


 


Et modifier la config i3:

        # move up
        bindsym $mod+i exec "/home/david/movemouse.sh UP"
        # move left
        bindsym $mod+j exec "/home/david/movemouse.sh LEFT"
        # move down
        bindsym $mod+k exec "/home/david/movemouse.sh DOWN"
        # move right
        bindsym $mod+l exec "/home/david/movemouse.sh RIGHT"

Dernière modification par David5647 (29-07-2021 17:41:27)

Hors ligne

#6 01-08-2021 22:14:43

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

Re : souris au clavier (sur macbook pro)

Salut et merci.
Bah, chez moi ça ne marche pas ton script "movemouse.sh'

J'ai pourtant adapté:
1) dans ton script 'movemouse.sh' la ligne:

CACHE_DIR="$HOME/.config/movemouse"


en :

CACHE_DIR="$HOME/.config/xdotool/movemouse.sh


j'ai essayer avec et sans le '.sh'

2) adapté mon fichier de configuration d'i3 avec ceci:

# move up
        bindsym $mod+i exec "/home/moi/.config/xdotool/movemouse.sh UP"
        # move left
        bindsym $mod+j exec "/home/moi/.config/xdotool/movemouse.sh LEFT"
        # move down
        bindsym $mod+k exec "/home/moi/.config/xdotool/movemouse.sh DOWN"
        # move right
        bindsym $mod+l exec "/home/moi/.config/xdotool/movemouse.sh RIGHT"
 



3) Et fais un "chmod a+x" en root sur le fichier 'movemouse.sh'

>> xdotool n'a pas l'air de se mettre en route :: a tapoter les touche, j'inscris des i,j,k,l un peu partout (façon de parler)
(le mode s'affiche bien au niveau de la barre de tache d'i3)

a+ (et merci)
C.

Dernière modification par crap0 (01-08-2021 22:15:13)

Hors ligne

#7 03-08-2021 01:12:14

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : souris au clavier (sur macbook pro)

Hop!

crap0 a écrit :


J'ai pourtant adapté:
1) dans ton script 'movemouse.sh' la ligne:

CACHE_DIR="$HOME/.config/movemouse"


en :
CACHE_DIR="$HOME/.config/xdotool/movemouse.sh

Pas besoin d'adapter quoi que ce soit dans le script, CACHE_DIR est un répertoire pour enregistrer temporairement des données nécessaires au programme.
Je vois que j'ai fait une erreur sur le chemin, j'aurai du mettre ~/.cache/... à la place de ~/.config/... (ça n'as pas d'incidence, mais ça ne respecte pas la convention)

Ce que tu peux adapter, c'est l’endroit où tu place le script, pour i3, conventionnellement ~/.config/i3/scripts/
Là, avec ta modif et l’endroit où tu as placé le script, le chemin de ce dernier est confondu avec le répertoire du "cache", l'un va forcement écraser l'autre, ça ne pourra pas fonctionner.

J'ai rectifié par là (avec quelques ajouts : clic droit, gauche et gauche+maintient) : https://framagit.org/-/snippets/6268/raw

tu peux tester rapidement le script dans un terminal avec :

while true; do ./movemouse.sh MOVE LEFT; sleep 0.0001 ; done

Hors ligne

Pied de page des forums