¿Cómo bloquear mouse y teclado?

Buenas,

Ando haciendo unos scripts para ayudarme en mis tareas cotidianas.
Necesitaría saber cómo bloquear el mouse y teclado de una PC, he buscado bastante y al parecer todos resuelven este problema con xinput.

He leído este tutorial pero no me ha funcionado:
http://www.esdebian.org/foro/41619/desactivar-raton-tactil-ps2-portatil-...

Sucede que por ejemplo, el mouse tiene estas características:

"Mouse0"        id=2    [XExtensionPointer]
        Type is MOUSE
        Num_buttons is 11
        Num_axes is 2
        Mode is Relative
        Motion_buffer is 256
        Axis 0 :
                Min_value is -1
                Max_value is -1
                Resolution is 1
        Axis 1 :
                Min_value is -1
                Max_value is -1
                Resolution is 1

Cuando intento desactivarlo/deshabilitarlo usado el parámetro set-int-prop obtengo este error:

X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  148 (XInputExtension)
  Minor opcode of failed request:  36 ()
  Serial number of failed request:  15
  Current serial number in output stream:  15

¿Alguien puede ser tan amable y ayudarme?
Muchas gracias por adelantado.

Saludos

PD: Si es necesario brindar más datos me lo dejan saber.

Hay algunos screensavers en los que se ve ve toda la pantalla, pero hay una bolita o una espiral que distorsiona la imagen en un punto y luego se mueve poco a poco para cambiar de vez en cuando los pixels y que no se quemen.

A lo mejor te basta con buscar uno de esos y ponerle contraseña al protector de pantalla.

Si lo que quieres es bloquear el ratón táctil haria falta saber el modelo. Para TPs synaptics yo uso synclient.

Saludos.

garimbaboy
Buenas,
Gracias por la respuesta, desafortunadamente esto no es lo que necesito.
Necesito bloquear el mouse y teclado de un ordenador, luego mediante SSH podré ejercer operaciones sobre ese ordenador, bien puede ser abrir un PDF (evince -f file.pdf), etc.

Necesito que la pantalla/monitor esté al 100% funcional, un screensaver no me permitiría esto.
Gracias por el comentario de veras.
¿Alguna otra idea amigo?

suku
Buenas y desde ya, gracias también por la respuesta.
Mas lo que deseo bloquear/inhabilitar no es el touchpad de una laptop, sino mouse puerto PS2 y USB.
¿Alguna idea?

Gracias a ambos en serio.
Saludos

El problema viene con el nuevo diseño del servidor X, que ahora recibe todos los dispositivos de entrada conectados en "caliente" (hotplug) mediante HAL.

El hecho sería configurar HAL para que no acepte nuevos dispositivos en caliente, o que simplemente los ignore. O pedirle explicitamente al servidor X que ignore a HAL.

Creo que por ahí va la solución, sin embargo no tengo la información exacta.

Creo que podrías conseguir el efecto que buscas mediante las funciones XGrabKeyboard/XGrabPointer, con una de ellas te basta ya que ambas permiten actuar sobre el teclado y el ratón, de la librería Xlib.

Cada dia se aprende algo nuevo bigsmile
He descargado el programa xinput y a mi si me funciona, identificando primero el dispositivo por el código y despúes la orden:

$ xinput set-int-prop 11 "Device Enabled" 8 0

Me bloquea el ratón.

Puedes utilizar el siguiente código python,

#!/usr/bin/python

# GrabInput.py
# Anular la entrada asignando XGrabKeyboard a la ventana root.
# XAE. J2E2. 110424

import sys
import os
import time

sys.path.insert(1, os.path.join(sys.path[0], '..'))

from Xlib import X, display, Xutil

display.Display().screen().root.grab_keyboard(0, 0, 0, 0)
while 1:
  time.sleep(10)
  pass

este código depende del paquete python-xlib, que habrás de instalar.
Una vez que lo ejecutes ya no hay vuelta atrás, la única forma de acceder al terminal lo será de forma remota.

Este código asigna un hook de teclado y ratón sobre la ventana root de XWindow de forma que todos los eventos de teclado y ratón se pierden en el limbo de los justos, más exactamente son encolados en el sistema de gestión de eventos de XWindow a la espera de que una llamada a XUngrabKeyboard/XAllowEvents permita su procesado.

Bueno ando haciendo pruebas en mi ArchLinux y, evidentemente funciona todo con xinput.
O sea, en la PC en que hago las pruebas tiene el xinput versión 1.5.3-1, mas el resto de los paquetes son de Debian Lenny.

En mi laptop (ArchLinux) todo me funciona de perlas, con xinput versión 1.5.3-2. De todas formas apuesto lo que tengo (y lo que no tengo jeje) a que no es un problema en cuanto a la versión, puesto que de la -1 a la -2 no hay diferencia.

Cuando ejecuto xinput --list-props "Mouse0" ó xinput --list-props 2 obtengo:

X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  148 (XInputExtension)
  Minor opcode of failed request:  36 ()
  Serial number of failed request:  15
  Current serial number in output stream:  15

Mas ese mismo comando en mi laptop (ArchLinux) no me da ningún problema...

¿Alguna idea?

xae amigo está genial el script, me lo he guardado...
En realidad me resuelve casi el problema ^_^U ... sucede que también planeo usar synergy, por lo que si el usuario puede mover el mouse/puntero, me entorpecería el trabajo.
¿Existe algún parámetro para el script para que ni siquiera el usuario pueda mover el puntero?

De veras, muchas gracias a ambos...
Saludos y desde ya, muchas gracias por sus respuestas :)

En principio, salvo que justo en el momento que ejecutes el script esté activo otro hook, por ejemplo que en ese preciso instante se te active el salvapantallas te debería de desaparecer el cursor del ratón, si no es así hazmelo saber.

De hecho no amigo, el puntero sigue funcionando. El usuario puede mover el mouse y el puntero se mueve, solo que cuando hace clic sobre alguna aplicación o algo simplemente no sucede nada.