tl; dr
Acabo de comprar un Logitech T630 . Es un mouse Bluetooth que admite varios eventos de teclado a través de gestos (PDF). Estos gestos son buenos y elegantes, pero les sirvo poco. Me está costando mucho deshacerme de ellos.
Quiero hacer lo siguiente, en orden decreciente de prioridad:
- deshabilitar estos gestos
- reasignar los gestos (creo que sin piratear el firmware o realizar ingeniería inversa en los controladores de dispositivo de Windows / OS X, esto no es posible)
No quiero:
- usar Windows
- deshabilitar todos los gestos
Para más información, sigue leyendo ...
botones y gestos
Los trece posibles eventos del mouse son:
- click izquierdo
- clic medio
- botón derecho del ratón
- desplazarse hacia arriba
- desplazarse hacia abajo
- desplazarse hacia la izquierda
- desplazarse hacia la derecha
- deslizar el borde hacia la izquierda
- deslizar el borde hacia la derecha
- deslizar dos dedos hacia la izquierda
- deslizar dos dedos hacia la derecha
- doble toque
- doble toque con dos dedos
Los primeros siete están en orden de cómo los asigna el sistema operativo.
Solo los tres primeros son mecánicos; todos los demás usan la superficie táctil:
Opciones de GUI
Configurar en Kubuntu Trusty fue muy fácil, pero ofrece poco soporte para configurar estos otros gestos.
Estos gestos no están relacionados con:
- touchpad (
synaptics
no se está ejecutando) - accesibilidad
- rincones calientes
- gestos estándar del mouse
Se han verificado todas las configuraciones relacionadas con ellas y están todas apagadas.
configuración de línea de comando
lomoco
La lomoco
utilidad para ayudar a configurar características especiales de los ratones USB Logitech no es aplicable.
xinput
Pensé que xinput
podría ofrecer algo de ayuda:
$ xinput --list | grep pointer
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Ultrathin Touch Mouse id=13 [slave pointer (2)]
$ xinput --list-props 13
Device 'Ultrathin Touch Mouse':
Device Enabled (144): 1
Coordinate Transformation Matrix (146): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (266): 0
Device Accel Constant Deceleration (267): 1.000000
Device Accel Adaptive Deceleration (268): 1.000000
Device Accel Velocity Scaling (269): 10.000000
Device Product ID (261): 1133, 45069
Device Node (262): "/dev/input/event11"
Evdev Axis Inversion (270): 0, 0
Evdev Axes Swap (272): 0
Axis Labels (273): "Rel X" (154), "Rel Y" (155), "Rel Horiz Wheel" (746), "Rel Vert Wheel" (265)
Button Labels (274): "Button Left" (147), "Button Middle" (148), "Button Right" (149), "Button Wheel Up" (150), "Button Wheel Down" (151), "Button Horiz Wheel Left" (152), "Button Horiz Wheel Right" (153), "Button Side" (1032), "Button Extra" (1033), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
Evdev Middle Button Emulation (275): 0
Evdev Middle Button Timeout (276): 50
Evdev Third Button Emulation (277): 0
Evdev Third Button Emulation Timeout (278): 1000
Evdev Third Button Emulation Button (279): 3
Evdev Third Button Emulation Threshold (280): 20
Evdev Wheel Emulation (281): 0
Evdev Wheel Emulation Axes (282): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (283): 10
Evdev Wheel Emulation Timeout (284): 200
Evdev Wheel Emulation Button (285): 4
Evdev Drag Lock Buttons (286): 0
Tenga en cuenta las 13 etiquetas de botones:
$ xinput --get-button-map "Ultrathin Touch Mouse"
1 2 3 4 5 6 7 8 9 10 11 12 13
Apagarlos no ayudó:
$ xinput --set-button-map "Ultrathin Touch Mouse" 1 2 3 4 5 6 7 0 0 0 0 0 0
Aunque, por ejemplo, puede convertir el botón central del mouse en un clic izquierdo:
$ xinput --set-button-map "Ultrathin Touch Mouse" 1 1 3 4 5 6 7 0 0 0 0 0 0
xmodmap
Similar a xinput
, los mismos resultados:
$ xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0"
inputkbd
Sugerido por elmicha a continuación , esto está funcionando a nivel del núcleo, tratando de hacer que los gestos den como resultado eventos de teclado nulos. Debería funcionar, pero tampoco suerte aquí, con el siguiente proceso:
$ sudo input-kbd 4 > keymap # note the 4 is from /dev/input/event4
# edit the keymap to map any combination of keys to either 0 or 240 (KEY_UNKNOWN)
# e.g. change this:
# 0x700e0 = 29 # KEY_LEFTCTRL
# to this:
# 0x700e0 = 0 # KEY_LEFTCTRL
# or this:
# 0x700e0 = 240 # KEY_LEFTCTRL
$ sudo input-kbd -f keymap 4
$ sudo input-kbd 4 # should return the updated keymap
Después de hacer esto, el mapa de teclas no muestra ningún cambio.
xkbcomp
Esto fue sugerido por X
el hacker de entrada Peter Hutterer , ciertamente un hombre que debería saber lo que estaba haciendo. Aún así, no hubo suerte:
$ xkbcomp -xkb $DISPLAY t630.xkb
# edit the keyboard description and replace the definition of any key to NoSymbol or VoidSymbol
# e.g. change this:
# key <LCTL> { [ Control_L ] };
# to this:
# key <LCTL> { [ NoSymbol ] };
# or this:
# key <LCTL> { [ VoidSymbol ] };
$ sudo xkbcomp -i 8 t630.xkb $DISPLAY # here the 8 is the id in xinput, names don't work
$ xkbcomp -xkb -i 8 $DISPLAY - # should return the updated keyboard description
Después de hacer esto, la descripción del teclado no muestra ningún cambio.
Peter sintió que esto probablemente se debía al hecho de que X
está confundido en cuanto a la naturaleza del dispositivo como un teclado o un mouse, algo así como este error que tiene el problema opuesto. Esto puede explicar por qué todos los demás elementos esperados no funcionan. Sin embargo, también dijo que usar evdev
no debería funcionar por la misma razón.
evdev
Al principio parecía funcionar, pero tampoco lo hace. Esto intenta aprovechar el controlador de entrada genérico para X
establecer la asignación de botones agregando lo siguiente a /usr/share/X11/xorg.conf.d/10-evdev.conf
o /etc/X11/xorg.conf.d/10-evdev.conf
:
# custom for Logitech Ultrathin Touch mouse
Section "InputDevice"
Identifier "Logitech bluetooth Touch Mouse"
Driver "evdev"
Option "Name" "Ultrathin Touch Mouse"
Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection
Section "InputClass"
Identifier "Ultrathin Touch Mouse"
Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection
Esto parece funcionar sin errores en /var/log/Xorg.0.log
(usar grep EE
), yxinput
confirma la asignación de botones, pero no produce el efecto de deseo.
Esto es conoce con el trabajo para el T631, sin embargo.
eventos de teclado
El problema radica, creo, en el hecho de que estos gestos generan eventos de teclado:
$ sudo evemu-record /dev/input/event4 | grep "E: "
# swipe edge right
E: 0.000000 0004 0004 458976 # EV_MSC / MSC_SCAN 458976
E: 0.000000 0001 001d 0001 # EV_KEY / KEY_LEFTCTRL 1
E: 0.000000 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 0.000000 0001 007d 0001 # EV_KEY / KEY_LEFTMETA 1
E: 0.000000 0004 0004 458795 # EV_MSC / MSC_SCAN 458795
E: 0.000000 0001 000f 0001 # EV_KEY / KEY_TAB 1
E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 0.002980 0004 0004 458976 # EV_MSC / MSC_SCAN 458976
E: 0.002980 0001 001d 0000 # EV_KEY / KEY_LEFTCTRL 0
E: 0.002980 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 0.002980 0001 007d 0000 # EV_KEY / KEY_LEFTMETA 0
E: 0.002980 0004 0004 458795 # EV_MSC / MSC_SCAN 458795
E: 0.002980 0001 000f 0000 # EV_KEY / KEY_TAB 0
E: 0.002980 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# swipe edge left
E: 3.306977 0004 0004 458978 # EV_MSC / MSC_SCAN 458978
E: 3.306977 0001 0038 0001 # EV_KEY / KEY_LEFTALT 1
E: 3.306977 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 3.306977 0001 007d 0001 # EV_KEY / KEY_LEFTMETA 1
E: 3.306977 0004 0004 458866 # EV_MSC / MSC_SCAN 458866
E: 3.306977 0001 00c1 0001 # EV_KEY / KEY_F23 1
E: 3.306977 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 3.310979 0004 0004 458978 # EV_MSC / MSC_SCAN 458978
E: 3.310979 0001 0038 0000 # EV_KEY / KEY_LEFTALT 0
E: 3.310979 0004 0004 458979 # EV_MSC / MSC_SCAN 458979
E: 3.310979 0001 007d 0000 # EV_KEY / KEY_LEFTMETA 0
E: 3.310979 0004 0004 458866 # EV_MSC / MSC_SCAN 458866
E: 3.310979 0001 00c1 0000 # EV_KEY / KEY_F23 0
E: 3.310979 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# two finger double tap
E: 10.225976 0004 0004 458983 # EV_MSC / MSC_SCAN 458983
E: 10.225976 0001 007e 0001 # EV_KEY / KEY_RIGHTMETA 1
E: 10.225976 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 10.229986 0004 0004 458983 # EV_MSC / MSC_SCAN 458983
E: 10.229986 0001 007e 0000 # EV_KEY / KEY_RIGHTMETA 0
E: 10.229986 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# two finger swipe left
E: 27.934977 0004 0004 589828 # EV_MSC / MSC_SCAN 589828
E: 27.934977 0001 0113 0001 # EV_KEY / BTN_SIDE 1
E: 27.934977 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 27.937983 0004 0004 589828 # EV_MSC / MSC_SCAN 589828
E: 27.937983 0001 0113 0000 # EV_KEY / BTN_SIDE 0
E: 27.937983 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
# two finger swipe right
E: 32.513990 0004 0004 589829 # EV_MSC / MSC_SCAN 589829
E: 32.513990 0001 0114 0001 # EV_KEY / BTN_EXTRA 1
E: 32.513990 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
E: 32.516994 0004 0004 589829 # EV_MSC / MSC_SCAN 589829
E: 32.516994 0001 0114 0000 # EV_KEY / BTN_EXTRA 0
E: 32.516994 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
En lo que respecta al mapa de teclas , se refieren a:
$ sudo input-kbd 4 | grep -e KEY_LEFTCTL -e KEY_LEFTMETA -e KEY_TAB -e KEY_LEFTALT -e KEY_F23 -e KEY_RIGHTMETA -e BTN_SIDE -e BTN_EXTRA
0x700e2 = 56 # KEY_LEFTALT
0x700e3 = 125 # KEY_LEFTMETA
0x700e7 = 126 # KEY_RIGHTMETA
0x7002b = 15 # KEY_TAB
0x70072 = 193 # KEY_F23
0x700e2 = 56 # KEY_LEFTALT
0x700e3 = 125 # KEY_LEFTMETA
0x700e7 = 126 # KEY_RIGHTMETA
0x90004 = 275 # BTN_SIDE
0x90005 = 276 # BTN_EXTRA
El doble toque no parece hacer nada.
otras referencias
También puede ser útil señalar una referencia a problemas similares en un error con el mouse antes mencionado que no está en la gnome-bluetooth
base de datos de código PIN. No hace falta decir que los comentarios adicionales sobre el tema son oficialmente tópicos en ese informe de error, pero las referencias pueden ayudar a agregar alguna perspectiva sobre la naturaleza de este problema.
Aquí está la salida de evemu-describe /dev/input/event4
FWIW.
Adaptadores Bluetooth
FWIW He usado dos adaptadores USB Bluetooth diferentes:
$ lsusb | grep Bluetooth
Bus 007 Device 010: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
$ lsusb | grep Bluetooth
Bus 007 Device 011: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0
vmmouse_detect
utilidad. xmodmap
e xinput
incluso xorg.conf
será útil bajo su Kubuntu pero no bajo Windows VM. Entonces, bajo WinVM, debería poder configurar su mouse con las utilidades estándar de Logitech para Windows.