Quero emular a rolagem horizontal quando usar minha roda de rolagem (vertical) e pressionar Shift.
Em alguns aplicativos (Chrom {e, ium}) isso já funciona, mas estou procurando uma solução genérica para aplicativos X.
O mais próximo que cheguei até agora é xbindkeys
+ xdotool
.
# ~/.xbindkeysrc
"xdotool click 6"
shift + b:4
"xdotool click 7"
shift + b:5
O problema é que xbindkeys
parece perder alguns eventos e, ocasionalmente, um rolo vertical "passa". Isso é muito chato. Parece que xbindkeys
está usando algum tipo de pesquisa?
Também não gosto de gerar centenas de comandos de shell por segundo.
Eu tenho uma tela pequena e tenho que rolar muito horizontalmente.
Como posso obter rolagem horizontal genérica?
ATUALIZAR:
Existe outra maneira de fazer principalmente o que eu quero com xbindkeys
e 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 Shiftpressionado, os botões apontadores 4 e 5 são mapeados para 6 e 7. (Os botões 4/5 são a rolagem vertical anterior e 6/7 para a rolagem horizontal). c:50
é a Shifttecla esquerda . Na liberação da tecla, o mapeamento padrão do ponteiro é restaurado.
Isso resolve bem o problema "muitos eventos". No entanto, a tecla Shift não funciona mais como modificador normal. Tentei reeditar os Shifteventos de imprensa / comunicado da xdotool
seguinte forma:
"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
De acordo com xev
os Shifteventos, mas acho que não é mais reconhecido como um modificador. Por exemplo, pressionar Shift+ Anão produzirá maiúsculas A
.
~/.xbindkeysrc.scm
. Em algum momento, ele falhou, mas pode funcionar no seu sistema.Respostas:
Encontrei uma solução aceitável para mim.
Não encontrei uma maneira de usar Shiftou qualquer outra tecla do meu modificador para girar o eixo da roda enquanto ele estiver pressionado.
Agora estou usando um simples
.xbindkeysrc
com um botão de alternância:O script toggle.sh se parece com o seguinte:
Isso me permite alternar o comportamento. Quando pressiono Alt+ X, o eixo da roda do mouse é girado e, quando pressiono novamente, é definido como o padrão.
Isso deve funcionar por enquanto.
Se alguém encontrar uma maneira de fazer isso Shiftcomo um "modificador" (o eixo do mouse gira enquanto é pressionado), informe-me.
EDIT: como Alt+ xé uma tecla de atalho comumente usada, eu a mudei para:
(Eu mudei para a configuração do guile, portanto, o texto acima deve estar em um arquivo chamado
.xbindkeysrc.scm
)Isso alternará a direção da roda de rolagem com Ctrlo botão + direito do mouse.
fonte
Você pode usar o btnx e sua ferramenta de configuração da GUI .
Pacote Ubuntu mais recente e aqui
Depois de fazer a detecção do botão no mouse usando o btnx-config, basta mapear "Scroll Up" junto com um modificador de botão shift para o botão x pressionado que você deseja.
fonte
Como sugerido aqui , instalei o imwheel e criei
~/.imwheelrc
com o seguinte conteúdo.Eu então corri
imwheel -b 45
no terminal. Eu testei e não notei os problemas diagonais associados à rolagem alta e xbindkeys.O NB
-b 45
restringeimwheel
a captura apenas da rolagem para cima e para baixo, impedindo que ela bloqueie (por exemplo) asxbindkeys
ligações dos botões de polegar.Problemas
No entanto, existem vários problemas associados a isso.
Control_L, Up, Control_L|Up
em~/.imwheelrc
, mas isso não funcionou.imwheel
envia eventos de roda de rolagem horizontal para a janela ativa, não a janela sob o cursor do mouse. Isso é contrário ao comportamento padrão da roda de rolagem. Isso também sugere que a Ctrlsolução alternativa no ponto acima também seria subótima.imwheel
parece não estar mais em desenvolvimento. Está preso na versão de pré-lançamento nos últimos 10 anos (desde 2004).fonte