¿Hay alguna manera para que pueda usar el mouse Mac Plus o Mac 128k original con una Macbook Pro moderna?

3

Recojo que las Mac originales usaban un puerto serie para el mouse con un conector RS-422 DE-9. Totalmente no estándar hoy. Pero seguramente, en algún momento alguna compañía (¿Apple?) Debe haber hecho un adaptador para usar los primeros ratones con Macs basadas en USB?

Gracias por cualquier información ...

    
pregunta Rufus 04.11.2011 - 19:06

4 respuestas

2

Por lo que sé, los ratones Mac antiguos usaban un conector DE-9, pero esto no es compatible con RS-232. Si lo fuera, podría haber usado un adaptador de RS-232 a PS / 2 y luego un estándar ps/2-usb-converter (ambos deben ser convertidores activos).

Si obtiene un ratón ADB, podrá usarlos ya que hay adaptadores para estos.

Si te gusta la electrónica y la programación, puedes construir tu propio convertidor, por ejemplo. usando un teensy-board por unos pocos dólares. No debería ser demasiado difícil ya que el viejo mouse de Apple simplemente envía señales de cuadratura que deberían traducirse fácilmente a movimientos de puntero .

    
respondido por el Jens Erat 04.11.2011 - 21:44
2

Hilo antiguo, pero estaba buscando el mismo pensamiento

Es posible usar un arduino / teensy con capacidad HID para convertir la cuadratura que se usará en un dispositivo USB.

El pinout DE9 (con los pines de arduino para el código a continuación) es:

DB9     Pro Micro
    1       GND
    2       VCC
    3       GND
    4       D0      (pin 3)
    5       D1      (pin 2)
    6       -       (not connected)
    7       B3      (pin 14)
    8       D3      (pin TXO)
    9       D2      (pin RXI)

Y un código de ejemplo originalmente de GuilleAcoustic y modificado por Johan Berglund:

/* ================================================================================
   Author  : GuilleAcoustic
   Date    : 2015-05-22
   Revision: V1.0
   Purpose : Opto-mechanical trackball firmware
   --------------------------------------------------------------------------------
   Wiring informations: Sparkfun Pro micro (Atmega32u4)
   --------------------------------------------------------------------------------
     - Red    : Gnd                          |   Pin: Gnd
     - Orange : Vcc (+5V)                    |   Pin: Vcc
     - Yellow : X axis encoder / channel A   |   Pin: PD3 - (INT0)
     - Green  : X axis encoder / channel B   |   Pin: PD2 - (INT1)
     - Blue   : Y axis encoder / channel A   |   Pin: PD0 - (INT2)
     - Violet : Y axis encoder / channel B   |   Pin: PD1 - (INT3)
     - Grey   : Switch 1                     |   Pin: PB3
     - White  : Switch 2                     |   Pin: PB2
     - Black  : Switch 3                     |   Pin: PB1

   --------------------------------------------------------------------------------
   Modified for use with Apple M0100 mouse
   By Johan Berglund, 2015-08-10

   Changes in code:
   - Internal pullup set for pin 14 (B3)
   - State check for right and middle buttons commented out

   Connection to DB9:

   DB9     Pro Micro
    1       GND
    2       VCC
    3       GND
    4       D0      (pin 3)
    5       D1      (pin 2)
    6       -       (not connected)
    7       B3      (pin 14)
    8       D3      (pin TXO)
    9       D2      (pin RXI)

   ================================================================================ */

// =================================================================================
// Type definition
// =================================================================================
typedef struct
{
  int8_t  coordinate = 0;
  uint8_t index      = 0;
} ENCODER_;

// =================================================================================
// Constant definition
// =================================================================================
const int8_t lookupTable[] = {0, 1, -1, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, -1,  1,  0};

// =================================================================================
// Volatile variables
// =================================================================================
volatile ENCODER_ xAxis;
volatile ENCODER_ yAxis;

// =================================================================================
// Setup function
// =================================================================================
void setup()
{

  // Set pull-up for mouse switch on M0100
  pinMode(14, INPUT_PULLUP);

  // Attach interruption to encoders channels
  attachInterrupt(0, ISR_HANDLER_X, CHANGE);
  attachInterrupt(1, ISR_HANDLER_X, CHANGE);
  attachInterrupt(2, ISR_HANDLER_Y, CHANGE);
  attachInterrupt(3, ISR_HANDLER_Y, CHANGE);

  // Start the mouse function
  Mouse.begin();
}

// =================================================================================
// Main program loop
// =================================================================================
void loop()
{
  // Update mouse coordinates
  if (xAxis.coordinate != 0 || yAxis.coordinate != 0)
  {
    Mouse.move(xAxis.coordinate, yAxis.coordinate);
    xAxis.coordinate = 0;
    yAxis.coordinate = 0;
  }

  // Update buttons state
  !(PINB & 0b1000) ? Mouse.press(MOUSE_LEFT)   : Mouse.release(MOUSE_LEFT);
  // !(PINB & 0b0100) ? Mouse.press(MOUSE_RIGHT)  : Mouse.release(MOUSE_RIGHT);
  // !(PINB & 0b0010) ? Mouse.press(MOUSE_MIDDLE) : Mouse.release(MOUSE_MIDDLE);


  // Wait a little before next update
  delay(10);
}

// =================================================================================
// Interrupt handlers
// =================================================================================
void ISR_HANDLER_X()
{
  // Build the LUT index from previous and new data
  xAxis.index       = (xAxis.index << 2) | ((PIND & 0b0011) >> 0);
  xAxis.coordinate += lookupTable[xAxis.index & 0b1111];
}

void ISR_HANDLER_Y()
{
  // Build the LUT index from previous and new data
  yAxis.index       = (yAxis.index << 2) | ((PIND & 0b1100) >> 2);
  yAxis.coordinate += lookupTable[yAxis.index & 0b1111];
}

Original de: enlace

    
respondido por el Ken Taylor 16.03.2017 - 04:30
0

Normalmente es un problema de controladores sobre convertidores. Una búsqueda rápida presentará una gran cantidad de convertidores de serie a USB para la compra. Simplemente no contendría la respiración en el sistema reconociendo el dispositivo de entrada.

    
respondido por el David Metcalfe 04.11.2011 - 21:16
0

Sí. Necesitará un chip de microcontrolador con 5 pines de E / S digitales y una interfaz USB que puede hacerse pasar por un dispositivo USB HID. El conector DE-9 del mouse para Mac 128k tiene pines de salida para codificadores en cuadratura 2 XY y el botón del mouse. Puede requerirse alguna programación de microcontrolador.

    
respondido por el hotpaw2 05.11.2011 - 00:46

Lea otras preguntas en las etiquetas