English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
PS2 ratón de ordenador y BASIC Stamp
Colin Fahey

1. Introducción

Este artículo describe cómo un PS/2 ratón puede ser emulado por un BASIC Stamp ordenador. 

Esta exploración es informal. 
ps2_mouse_interior.jpg
El interior de un viejo estilo (pelota en movimiento) ratón del ordenador: la “Microsoft Intellimouse”  (I sustituye la sensores ópticos con cables largos.)
Un ratón tiene dos ejes: “X” y “Y”.  Cuando el ratón se mueve “horizontalmente,” “X” la rueda del ratón dentro de la gira.  Cuando el ratón se mueve “verticalmente” (sobre una superficie), “Y” la rueda del ratón dentro de la gira.  Para arbitraria movimiento del ratón, el “X” y “Y” mover las ruedas de acuerdo a la “horizontal” y “vertical” de los componentes de movimiento del ratón. 
ps2_mouse_interruptor_wheels.jpg
Interruptor óptico de ruedas en el interior del ratón
Aviso de los agujeros en las ruedas en el interior del ratón.  Cuando la rueda gira, la infra-rojo (IR) luz emitida por un IR Light Emitting Diode (LED) es interrumpido en varias ocasiones, a una tasa proporcional a la tasa de rotación de la rueda.  De este modo, el ratón sabe cuántos “incrementos” (también llamado “garrapatas)” el eje del ratón se ha movido en un determinado período de tiempo. 

La determinación de la dirección del movimiento implica el uso de 2 sensores de luz, situado muy cerca, junto, a lo largo de un eje paralelo al movimiento de la rueda.  (Los dos sensores se encuentran en un solo 3-pin componente se muestra a continuación.) 
mouse_sensor01.jpg
Mouse IR sensor de luz (tiene dos detectores de IR en un solo paquete)
El centro de la clavija del paquete es la tensión positiva de colección; 
La izquierda y la derecha son los pins izquierdo y derecho de salida del sensor emisores. 

Vamos a nombre de los dos sensores en el paquete “A” y “B”.  Supongamos que la rueda está inicialmente a un ángulo de rotación tal que IR la luz se bloquea de llegar a los dos sensores. 

A medida que la rueda gira, IR la luz de la emisora eventualmente ser capaz de pasar a través de un agujero en la rueda y llegar a uno de los dos sensores, como sensores “A”.  Si la rueda sigue rotando en la misma dirección, con el tiempo el segundo sensor, “B”, será capaz de IR recibido la luz.  Si la rueda sigue rotando en la misma dirección, con el tiempo IR la luz será bloqueada de llegar a “A” sensor.  Si la rueda sigue rotando en la misma dirección, con el tiempo IR la luz será bloqueada de llegar a “B” sensor. 

De este modo, la secuencia es la siguiente: 
(A,B):   ..., (0,0), (1,0), (1,1), (0,1), ...
Si la rueda gira en sentido contrario, el plazo de 4 secuencia mostrada anteriormente se invirtió, a partir de la situación actual.
Con estas dos señales de sensores podemos determinar la tasa de rotación, y la dirección.
ps2_mouse_circuit_board.jpg
La placa de circuito de la Microsoft Intellimouse
Para entender más acerca de cómo el ratón circuitos interpreta los sensores a la luz y se comunica con el ordenador personal (PC) (a través de señales PS/2), estudié la placa de circuito. 

El microchip tiene el siguiente nombre impreso en ella: SPCP05A. 

Una búsqueda de Internet para la palabra “SPCP05A” indica que el chip es fabricado por una empresa llamada “Sunplus Technology Co.”.  La información sobre la “SPCP05A” microchip puede ser adquirido de esa empresa. 

Aquí están las especificaciones técnicas de la “SPCP05A” microchip: 
sunplus_ps2_3dmouse_datasheet.pdf
(Las especificaciones técnicas de la “SPCP05A” microchip)
1125022 bytes
MD5: 359a9210275e021cc19a5e2391499dc5
La siguiente imagen muestra las señales de los pines de la “SPCP05A (PS/2 3D mouse)” microchip.
spcp05a_chip_signals_bmp01.jpg
Señales de las patillas del microprocesador “SPCP05A (PS/2 3D mouse)”
El “SPCP05A” es en realidad un minúsculo ordenador!  Cuenta con un conjunto de instrucciones, y RAM, y ROM, y temporizadores internos, etc  De hecho, la descripción de la “SPCP05A” microchip en la información proporcionada por Sunplus Co.  apenas se refiere al uso específico del microchip para los circuitos de “ratón del ordenador.”  Este chip es un microcontrolador polivalente. 

Estudié el circuito huellas en la placa de circuito de la Microsoft Intellimouse de forma aproximada el siguiente esquema:
ps2_mouse_my_schematic.jpg
Aproximado esquemática de la Microsoft Intellimouse  (Me faltan unos condensadores, pero este esquema es casi perfecto.)
Bui Van Chu, en Australia, leer mi artículo y me ha enviado un esquema más completo, que aparece en la imagen siguiente.
ms_ps2_mouse_schematic.jpg
El ratón PS/2 esquemático, que me ha enviado por Bui Van Chu de Australia
El circuito es muy simple. 

Los botones de ratón (izquierda, centro, derecha) ir directamente a los insumos en el microchip. 

Los tres pares de sensores de luz, ((“X”, “Y”, “Z”), (movimiento horizontal, movimiento vertical, y la rueda central del ratón)) enviar señales directamente a otros insumos en el chip. 

El PS/2 señales DATA y CLK (reloj) también corresponden a I/O señales en el chip. 

He entendido el esquema tan pronto como terminé de dibujo (siguiendo las huellas sobre la placa de circuito). 

Una cosa que no entiendo fue inicialmente la forma en que la IR LEDs estaban relacionados con el microchip (pin 16: “PB1”), en lugar de sus terminales negativo (cátodo) del mero hecho de ser conectado directamente a tierra.  Esto es importante!

2. Mi primer intento para controlar el movimiento del ratón

Los siguientes comentarios se refieren al movimiento a lo largo de un solo eje (como la “X”, u horizontal, eje). 

Lo primero que he intentado es un objeto en movimiento entre los IR LED y el sensor de par - para simular el efecto de la rotación de la rueda en el ratón.  Esto funcionó.  Yo podría causar el cursor del ratón para desplazarse por la pantalla simplemente se desplazan de un obstáculo a través de la IR rayo de luz en varias ocasiones, en la misma dirección. 

A continuación, eliminó el 3-pin sensor parte de la placa de circuito del ratón, y adjunta los cables a placa de circuito en lugar del sensor.  I manualmente un cable conectado a la tensión positiva para simular sensor de actividad.  I conectadas las dos señales a la potencia de acuerdo a la siguiente distribución (por ejemplo “0” que representa “fuera,” y representa “a” “1”):
(0,0), (1,0), (1,1), (0,1), ...
Esto funcionó.  Pude mover el cursor del ratón en la pantalla de este tedioso conectar y desconectar los cables de en el patrón se muestra arriba.  La inversión de la pauta de la situación actual en la secuencia que mover el cursor en la dirección opuesta. 

Porque las cosas iban tan bien, me decidí a conectar los cables a los relés (controlada por RS-232).  Esto básicamente me permite hacer exactamente lo que hice con los cables sueltos: conecte el sensor de señales a la terminal de energía en la secuencia apropiada.  La única diferencia sería el hecho de que el ser humano (me) no tendría que hacer el tedioso conectar y desconectar. 

Pero ...  no funcionó! 

Después de un lote de ajuste de resistencias y condensadores, etc, me hizo un extraño descubrimiento: Si yo estaba tocando algunos terminales en el circuito, que funcionó perfectamente!  La solución a este misterio aparece en la siguiente sección. 

3. La infra-rojo (IR) luz debe ser modulada

Después de algunos experimentos frustrante tuve un nuevo pensamiento: La IR luz pulsante podría ser en una alta frecuencia, y el chip podría esperar a recibir esta frecuencia.  Constant luz (o mi simulada constante de salida del sensor) podría ser rechazada.  Yo estaba un poco perplejo por el hecho de que la luz ambiental de una lámpara halógena piso era aceptable, pero yo sabía que incluso las lámparas incandescentes han detectable modulación. 

He intentado un pulsante IR LED a alta frecuencia y el bloqueo de los sensores de acuerdo con el patrón previsible.  Funcionó! 

Eso es!  El IR LEDs ratón en la placa de circuito debe parpadear a gran velocidad, y el microchip debe esperar que esta parpadeando, además de la relativamente baja tasa de interrupción de luz por la rueda giratoria (con agujeros). 

Pulsante de la IR LEDs, y esperaba que esta pulsante en un sensor de desbloquear la señal de salida, el chip puede rechazar cualquier ambiente IR señales de interferir con el funcionamiento del ratón.  Por ejemplo, la luz de otros (constante) IR fuentes no interefere con el ratón. 

I conectado un amplificador de audio a la salida del sensor, y luego me permiten tomar el sensor en la luz ambiental emitidos por mi palabra lámpara halógena.  He oído un tono (60 Hz).  Cuando la lámpara atenuado, aumentó el tono de desmayo, y finalmente se detuvo cuando la luz estaba apagado.  Por lo tanto, este sensor capta fácilmente la 60 Hz modulación en la bombilla incandescente de mi lámpara halógena palabra! 

Mirando, ahora, en el esquema del ratón PS/2 placa de circuito, la importancia de la IR LEDs está conectado a un alfiler en el microchip (en lugar de a la corriente continua) es evidente.  El microprocesador controla el parpadear de la IR LEDs a través de la I/O pin, y el microchip puede correlacionar su intención de flash la ID LEDs con el sensor de aportaciones recibidas, y, por tanto, rechazar cualquier extraviados señales (debido a la falta de luz parpadeante IR).  (Sin embargo, la correlación no es necesario.  Basta con detectar un número mínimo de parpadear cuenta podría ser un límite para la aceptación de sensor de entrada.) 

4. IR sensores con filtros de banda

Usted puede encontrar IR sensores especiales, envasados en transistor-como la forma, con tres conductores, que están “sintonizados” a determinados IR luz modulada frecuencias (por ejemplo, 38 kHz). 
tuned_sensor01.jpg
Sintonizado IR sensor de luz (mayor sensibilidad a la luz 38 kHz modulación)
Circuitos de banda está contenida en el dispositivo, junto con la IR foto-transistores. 

Por lo tanto, la IR LED pueden generalmente ser pulsado a una frecuencia de 38 kHz a fin de que el sensor recibe la luz y dejar que la señal eléctrica ir al sensor de los productos. 

Para transmitir información, la luz de la IR LED se puede interrumpir a una tasa relativamente baja (por ejemplo, 1 a 100 veces por segundo).  Esta baja frecuencia pulsante es en relación con la constante de alta frecuencia pulsante, es decir, los de baja frecuencia pulsante puede considerarse como la modulación de alta frecuencia pulsante.  La alta frecuencia pulsante es como una “onda portadora” sobre la cual la señal de información (la relativamente baja frecuencia de modulación) se lleva. 

Sin embargo, verificó que la IR sensores en la Microsoft Intellimouse no tienen este tipo de modulación de filtro.  Sin embargo, el circuito requiere que la luz IR ser modulados de alguna manera, además de la baja frecuencia de las interrupciones de luz de la rueda con agujeros. 

El siguiente esquema ilustra la diferencia en las señales de sensores de constantes IR LED luz parpadeante y IR LED la luz durante las diferentes fases de la rueda del ratón girar.
ps2_mouse_quadrature_sketch.jpg
Sensor de señales de salida constante para el caso IR luz y la luz parpadea IR caso.

5. La simulación de entrada del ratón utilizando un ordenador BASIC Stamp

El ordenador tiene “BASIC Stamp 2” programabilidad suficiente para aplicar el protocolo PS/2.  Por lo tanto, la “BASIC Stamp 2” ordenador se puede conectar directamente al puerto PS/2 de un ordenador personal y (PC) puede PS/2 emular un ratón o teclado. 

5.1 El protocolo PS/2

En los años 1998 a través de 2003, la mayoría de las computadoras personales ha PS/2 puertos para el ratón y el teclado. 

PS/2 El puerto cuenta con 4 señales: (1) CLOCK; (2) DATA; (3) +5V; (4) GROUND. 

El PS/2 puerto permite a los dispositivos para enviar datos al anfitrión, y el de acogida podrán enviar datos a los dispositivos.  Todas las partes en un PS/2 puerto (por lo general sólo un dispositivo y el host) deben compartir las señales y debe detectar si la otra parte está utilizando las señales. 

¿Cómo puede ser compartida señales?  Una señal (como CLOCK o DATA) suele ser alto “flotante,” lo que significa que la señal está conectada a un voltaje positivo a través de un resistor con alta resistencia (por ejemplo, 4 kilo-Ohms).  Por lo tanto, la señal se interpreta como una consecuencia lógica de “alto” por escuchar todas las partes.  Cualquiera de las partes puede tirar la línea baja (a través de TTL lógica) cuando la Parte tiene la intención de enviar los datos.  Cuando un partido termina el envío de un paquete, que permite ir de las señales indefinidamente, por lo que flotan alto de nuevo. 

Para enviar datos desde un dispositivo (por ejemplo, un ratón o teclado) a la computadora personal (PC), debe enviar los datos de 11 bits paquetes, que consta de los siguientes bits: (1) empezar poco (“0”); (2) 8 bits de datos (LSB primero); (3) bit de paridad (paridad “impar);” (4) bit de parada “(1).”  Tenga en cuenta que “la paridad” es “extraño” cuando el número total de bits “1” en los bits de datos y bit de paridad combinados es un número impar. 

El siguiente diagrama ilustra la transmisión de un único paquete de datos: 
ps2_clock_data_dev2pc01_adj.jpg
PS/2 protocolo: dispositivo para acoger (PC) paquete
DATA La línea debe estar en el buen valor antes de lo que el CLOCK línea baja.  El DATA valor debe permanecer hasta que el conjunto CLOCK línea se devuelve de nuevo a alto.  Cuando la línea CLOCK se confirma a ser alto, el valor DATA se puede cambiar al siguiente poco valor. 

La típica velocidad de reloj es relativamente lento, sobre 10 kHz a 17 kHz.  Que es de 100 microsegundos a 70 microsegundos para cada período de reloj. 

El escenario de la acogida (PC) el envío de datos a un dispositivo es similar al dispositivo de envío de datos a la acogida, pero en todos los casos el dispositivo controla la CLOCK señal durante la transmisión de datos en sí.  Asimismo, un bit de datos enviados desde el centro de acogida (al dispositivo de fijación CLOCK baja) debe ser cerrada cuando el dispositivo permite la señal CLOCK hacer una transición a la alta. 

Una búsqueda en Internet se revelan muchas descripciones de PS/2 señales y detalles sobre el protocolo. 

5.2 PS/2 ratón paquetes de datos

Cuando el ordenador arranca, el sistema operativo se inicia y finalmente se comunica con el ratón para determinar el tipo de ratón.  Por defecto, el ratón puede comportarse como un genérico PS/2 ratón.  Sin embargo, si el sistema operativo determina que el ratón es en realidad un “3D PS/2” ratón (por ejemplo, un ratón con una rueda), se puede decir el ratón para cambiar a la 3D PS/2 protocolo del ratón. 

Al mover el ratón, o puesta en libertad de prensa o los botones del ratón, el ratón circuitos envía los datos al anfitrión (PC), indicando qué estado se han producido cambios desde la última indicación de estado. 

El genérico PS/2 ratón envía los siguientes tres paquetes al host: 
    ------------------------
    D7 D6 D5 D4 D3 D2 D1 D0  (The D0 bit (LSB) is sent first)
    ------------------------
(1) YV XV YS XS  1  0  R  L  (overflow, sign, buttons)
(2) X7 X6 X5 X4 X3 X2 X1 X0  (X movement; -128 to +127)
(3) Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  (Y movement; -128 to +127)

L  = Left  Button State (1 = pressed down)
R  = Right Button State (1 = pressed down)
XS = Direction of X movement (1 = LEFT)
YS = Direction of Y movement (1 = UP)
XV = Overflow of X movement value (1 = X overflow occured)
YV = Overflow of Y movement value (1 = Y overflow occured)
X7,...,X0 : X movement; 8-bit 2's-complement signed byte (-128 to +127)
Y7,...,Y0 : Y movement; 8-bit 2's-complement signed byte (-128 to +127)

Here are examples of data sent to the host (PC):
------------------------------------------------
(The least-significant bit of each data byte is sent first.)
Move Left  1 unit    :  0x18, 0xFF, 0x00
Move Right 1 unit    :  0x08, 0x01, 0x00
Move Down  1 unit    :  0x28, 0x00, 0xFF
Move Up    1 unit    :  0x08, 0x00, 0x01
Press   Left  Button :  0x09, 0x00, 0x00
Release Left  Button :  0x08, 0x00, 0x00
Press   Right Button :  0x0C, 0x00, 0x00
Release Right Button :  0x08, 0x00, 0x00
Es muy común tener un “3D PS/2” ratón (por ejemplo, un ratón con rueda, que también actúa como un botón central).  Este ratón envía cuatro paquetes de datos para la acogida (PC). 
    ------------------------
    D7 D6 D5 D4 D3 D2 D1 D0  (The D0 bit (LSB) is sent first)
    ------------------------
(1) YV XV YS XS  1  M  R  L  (overflow, sign, buttons)
(2) X7 X6 X5 X4 X3 X2 X1 X0  (X movement; -128 to +127)
(3) Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  (Y movement; -128 to +127)
(4) Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0  (Z movement; -128 to +127)

This is very similar to the generic PS/2 mouse,
with a few additions:

M = Middle Button State (1 = pressed down)
Z7,...,Z0 : Mouse wheel movement; 8-bit 2's-complement signed byte
    (The Z value is forced to a range of -8 to +7)

5.3 Mi primer circuito para simular un ratón PS/2

El siguiente esquema fue mi primer trabajo técnica para obtener “BASIC Stamp 2” mi computadora para enviar datos PS/2 ratón a la acogida (PC).
2002june03_basicstamp_to_ps2mouse_circuit.jpg
Esquema de circuito para permitir la BASIC Stamp ordenador para enviar paquetes a PS/2 de acogida (PC).
Tenga en cuenta que este circuito eléctricamente aislados BASIC Stamp mi ordenador desde el ordenador anfitrión (PC).  También tenga en cuenta que este circuito es sólo para satisfacer las necesidades eléctricas de PS/2 de transmisión de datos (dispositivo de acogida a).  Por lo tanto, no puedo enviar mensajes PS/2 teclado utilizando este mismo circuito, si enchufo a la PS/2 teclado en el puerto de acogida (PC)! 

Desde la recepción de señales es por lo general no invasivo (es decir, escuchando no interfiere con las señales eléctricas), la única cosa necesaria para permitir la “BASIC Stamp” ordenador para recibir la PS/2 CLOCK y DATA señales es una conexión directa de esas señales a otros BASIC Stamp I/O pins (configurado para ser insumos).  Me encantaría probar algún tipo de buffering - pero definitivamente no pueden usar un opto-aislador directamente, ya que pondría una carga en el “flotante” de señales (así “naufragio!).”  Yo podría utilizar el +5V al poder de amortiguamiento, a continuación, a continuación, utilice el búfer de salida para conducir opto-aisladores que, en última instancia enviar señales al BASIC Stamp I/O pines (configurado como insumos). 

La siguiente imagen muestra BASIC Stamp 2 mi ordenador conectado a un circuito esquemático se pongan en venta las anteriores. 
2002june03_basicstamp_mousecircuit01_adj.jpg
BASIC Stamp 2 ordenador conectado a un puerto PS/2 ratón a través de un opto-aislador del circuito.
Los siguientes BASIC Stamp 2 programa, escrito en el lenguaje de programación PBASIC, fue mi primer intento con éxito para controlar el ratón a través de PS/2 la BASIC Stamp 2 ordenador. 

El programa simplemente hace que el cursor del ratón mover a lo largo de una pequeña línea diagonal. 
'====================================================================
'{$STAMP  BS2} 'STAMP directive (specifies a BS2)

    DIR0 = %1 'Set pin 0 to OUTPUT
    DIR1 = %1 'Set pin 1 to OUTPUT
    OUT0 = %0 'Set DATA line high (pin low)
    OUT1 = %0 'Set CLOCK line high (pin low)
    tempData    VAR  BYTE
    tempParity  VAR  BYTE

'--------------------------------------------------------------------

MainLoop:

    tempCounter  VAR  WORD

    FOR tempCounter = 0 TO 10
    tempData = $28
    GOSUB TransmitPacket
    tempData = $01
    GOSUB TransmitPacket
    tempData = $ff
    GOSUB TransmitPacket
    tempData = $00
    GOSUB TransmitPacket
    PAUSE 100
    NEXT

    FOR tempCounter = 0 TO 10
    tempData = $18
    GOSUB TransmitPacket
    tempData = $ff
    GOSUB TransmitPacket
    tempData = $01
    GOSUB TransmitPacket
    tempData = $00
    GOSUB TransmitPacket
    PAUSE 100
    NEXT

    GOTO MainLoop

STOP

'--------------------------------------------------------------------

TransmitPacket:

    GOSUB ComputeParity       'First, compute parity

    tempData   = ~tempData    'Invert data bits
    tempParity = ~tempParity  'Invert parity bit

    '==== Start Bit ====
    OUT0 = %1 'Set data line low (output high)
    PULSOUT 1, 25   ' Pulse line 1 for (25*2) = 50 usec

    '==== Data Bits ====
    OUT0 = tempData.BIT0
    PULSOUT 1, 25
    OUT0 = tempData.BIT1
    PULSOUT 1, 25
    OUT0 = tempData.BIT2
    PULSOUT 1, 25
    OUT0 = tempData.BIT3
    PULSOUT 1, 25
    OUT0 = tempData.BIT4
    PULSOUT 1, 25
    OUT0 = tempData.BIT5
    PULSOUT 1, 25
    OUT0 = tempData.BIT6
    PULSOUT 1, 25
    OUT0 = tempData.BIT7
    PULSOUT 1, 25

    '==== Parity Bit ====
    OUT0 = tempParity.BIT0
    PULSOUT 1, 25

    '==== Stop Bit (high) ====
    OUT0 = %0  ' pin low is DATA high
    PULSOUT 1, 25

    PAUSE 1 ' Necessary? Provides 1 msec gap between packets...

RETURN

'--------------------------------------------------------------------

ComputeParity:

    tempParity = $01
    tempParity = tempParity + tempData.BIT0
    tempParity = tempParity + tempData.BIT1
    tempParity = tempParity + tempData.BIT2
    tempParity = tempParity + tempData.BIT3
    tempParity = tempParity + tempData.BIT4
    tempParity = tempParity + tempData.BIT5
    tempParity = tempParity + tempData.BIT6
    tempParity = tempParity + tempData.BIT7
    tempParity = tempParity & $01

RETURN

'====================================================================
Este programa funciona perfectamente.  Me deje correr durante horas, y se hizo sin problemas el cursor del ratón se mueven entre dos ubicación exacta en la pantalla.  Esto es lo que yo estaba buscando: un control preciso del ratón para que pueda interactuar con el software. 

Después de buscar en el Internet, he descubierto que otra persona utilizó un ordenador para BASIC Stamp interfaz PS/2 (simulando un teclado).  Esta persona utiliza la PBASIC instrucción SHIFTOUT para manejar la CLOCK y DATA señales, que es realmente grande.  Esto haría que mi “TransmitPacket” subrutina mucho más corto, tal vez 5 líneas de código total! 

También vi que otras personas utilizan TTL buffers, con aportaciones conectado directamente PS/2 de señales (CLOCK y DATA), y los productos relacionados directamente a los pines en el microcontrolador chip.  En el mismo circuito, líneas de salida del microcontrolador se dirigía directamente a la base de alfileres en los transistores que tienen sus colectores conectados directamente a la PS/2 señales.  Todo esto el acoplamiento directo de los diferentes circuitos parece una mala idea para mí, no sea un circuito de freír el otro.  No sé lo que me gustaría hacer si me frito PS/2 el puerto en mi PC.  Comprar una nueva placa madre, supongo!  Una excusa para actualizar.  No creo que una placa base PS/2 puerto fusión es probable, pero yo lo hice al instante mi ordenador apagado cuando accidentalmente en cortocircuito la +5V y GROUND señales de ir al PS/2 ratón.  Tal vez es una característica!  Yo podría añadir un nuevo botón para el ratón que acaba de corto-circuitos de potencia con el ratón para el instante de cierre de la PC.  ;-) 

Aquí está el enlace a la información relativa a la utilización de SHIFTOUT para la PS/2 protocolo:
http://ourworld.compuserve.com/homepages/steve_lawther/keybinfo.htm
Puedes buscar en el siguiente vínculo:
KEYBTST.ZIP   gives a very basic program for the parallax
-----------
BASIC stamp II, to send key-codes to the PC's keyboard port.
It also gives a write-up of the XT and AT keyboard interfaces
(although IMO some details could be wrong / different to the
keyboards I've looked at).
A nivel local-copia en caché del archivo:
keybtst.zip

10655 bytes
MD5: c5667557f96db53fb878bd11bfbe4f74
El siguiente enlace proporciona más información con respecto a PS/2 ratón interfaz:
http://panda.cs.ndsu.nodak.edu/ ~ achapwes/PICmicro/PS2/ps2.htm
colinfahey.com
información de contacto
English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية