Emula lo scorrimento orizzontale con il tasto Maiusc


13

Voglio emulare lo scorrimento orizzontale quando utilizzo la rotellina (verticale) e premo Shift.

In alcune applicazioni (Chrom {e, ium}) questo funziona già, ma sto cercando una soluzione generica per le applicazioni X.

Il più vicino che ho ottenuto finora è xbindkeys+ xdotool.

# ~/.xbindkeysrc
"xdotool click 6"
  shift + b:4

"xdotool click 7"
  shift + b:5

Il problema è che xbindkeyssembra che manchino alcuni eventi e, occasionalmente, uno scorrimento verticale "passa". Questo è molto fastidioso. Sembra che xbindkeysstia usando una specie di polling?

Inoltre non mi piace generare centinaia di comandi di shell al secondo.

Ho un piccolo schermo e devo scorrere molto in orizzontale.

Come posso ottenere lo scorrimento orizzontale generico?

AGGIORNARE:

C'è un altro modo che fa principalmente quello che voglio con xbindkeyse xmodmap.

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'"
  c:50
"xmodmap -e 'pointer = default'"
  release + shift + c:50

Quando Shiftsi tiene premuto, i pulsanti del puntatore 4 e 5 sono mappati su 6 e 7. (I pulsanti 4/5 indicano lo scorrimento verticale anteriore e 6/7 per lo scorrimento orizzontale). c:50è la Shiftchiave di sinistra . Al rilascio dei tasti viene ripristinata la mappatura predefinita del puntatore.

Questo risolve bene il problema "troppi eventi". Tuttavia, il tasto Maiusc non funziona più come un normale modificatore. Ho provato a riemettere gli Shifteventi stampa / rilascio in xdotoolquesto modo:

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10';  xdotool keydown Shift_L"
  c:50
"xmodmap -e 'pointer = default';  xdotool keyup Shift_L"
  release + shift + c:50

Secondo xevgli Shifteventi, ma penso che non sia più riconosciuto come modificatore. Ad esempio, premendo Shift+ Anon si produrrà maiuscole A.


1
Puoi anche eseguire lo scorrimento orizzontale con Ctrl + Frecce per molti programmi.
terdon

1
Grazie, ma questo non funziona per me in Firefox. Sto cercando una soluzione "generica" ​​che funzioni ovunque.
Paul Schyska,

Sarebbe un problema eseguire qualcosa come root, ad esempio usando sudo?
dal

Non è ottimale dover sudo. Presumo che intendi rinunciare ogni volta che si preme Shift? Potresti elaborare ciò che hai in mente?
Paul Schyska,

Questo potrebbe essere inutile, ma una volta questo ha lavorato per me in ~/.xbindkeysrc.scm. Ad un certo punto è fallito, ma potrebbe funzionare sul tuo sistema.
Sparhawk,

Risposte:


2

Ho trovato una soluzione accettabile per me.

Non ho trovato il modo di usare Shifto nessun altro tasto come modificatore per ruotare l'asse della ruota finché è premuto.

Ora sto usando un semplice .xbindkeysrccon un pulsante di attivazione / disattivazione:

"~/toggle.sh"
  alt + x

Lo script toggle.sh è simile al seguente:

#!/bin/sh
on()
{
  xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'
}

off()
{
  xmodmap -e 'pointer = default'
}

if xmodmap -pp | grep -q '4.*6'; then
  off
else
  on
fi

Questo mi permette di cambiare il comportamento. Quando premo Alt+ X, l'asse della rotellina del mouse viene ruotato e quando lo premo di nuovo, viene impostato sul valore predefinito.

Dovrebbe funzionare per ora.

Se qualcuno trova un modo per farlo con Shiftun "modificatore" (l'asse del mouse ruota finché viene premuto), per favore fatemi sapere.

EDIT: Poiché Alt+ xè un tasto di scelta rapida comunemente usato, l'ho cambiato in:

(xbindkey '(control "b:3") "toggle-wheel.sh")

(Sono passato alla configurazione guile, quindi quanto sopra dovrebbe essere in un file chiamato .xbindkeysrc.scm)

In questo modo si alternerà la direzione della rotella di scorrimento con Ctrl+ tasto destro del mouse.


0

Puoi usare btnx ed è lo strumento di configurazione della gui .

Pacchetto Ubuntu più recente e qui

Dopo aver effettuato il rilevamento del pulsante sul mouse utilizzando btnx-config, basta mappare "Scorri verso l'alto" insieme a un modificatore del pulsante di spostamento su qualsiasi pulsante x che desideri.


Grazie, sto avendo problemi a farlo costruire su Fedora.
Paul Schyska,

1
Ho trovato un pacchetto rpm per btnx ora. Non trovo il modo di mappare un modificatore come evento sorgente (ad esempio Shift + WheelUp). Posso solo mappare da WheelUp a Shift + qualche altro tasto. Mi sto perdendo qualcosa? Ho anche provato a "rilevare" Shift + WheelUp in primo luogo, ma diceva "Pulsante già mappato". Il codice raw era 0x02010008 per entrambi i casi (Maiusc premuto e non premuto). Non credo che btnx sia in grado di gestire più dispositivi di input (Mouse + Tastiera)
Paul Schyska,

0

Come accennato qui , ho installato imwheel , quindi creato ~/.imwheelrccon il seguente contenuto.

".*"
Shift_L, Up, Left
Shift_L, Down, Right

Ho quindi corso imwheel -b 45nel terminal. Ho provato e non ho notato i problemi diagonali associati allo scrolling elevato e ai tasti di scelta rapida.

NB si -b 45limita imwheela catturare solo lo scorrimento su e giù, impedendo che blocchi (ad es.) I xbindkeyscollegamenti per i pulsanti del pollice.

I problemi

Tuttavia, ci sono diversi problemi associati a questo.

  • È incoerente. Potrei farlo funzionare con Firefox e Gwenview immediatamente, ma Inkscape e GIMP non hanno funzionato. Potrei usare la corrispondenza delle finestre per non corrispondere a Inkscape / GIMP, ma dovrebbe esserci un modo per farlo funzionare universalmente.
  • Ancora peggio, impedisce alcuni altri eventi predefiniti, come Ctrl+ Scroll wheel, che viene normalmente utilizzato per eseguire lo zoom. Ho provato a mettere le cose come Control_L, Up, Control_L|Upin ~/.imwheelrc, ma questo non ha funzionato.
  • imwheelinvia gli eventi della rotella di scorrimento orizzontale alla finestra attiva, non alla finestra sotto il cursore del mouse. Ciò è contrario al comportamento predefinito della rotella di scorrimento. Ciò suggerisce anche che la Ctrlsoluzione alternativa al punto precedente sarebbe anche non ottimale.
  • imwheelsembra non essere più in fase di sviluppo. È stato bloccato nella versione preliminare per gli ultimi 10 anni (dal 2004).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.