C'è un modo per me di usare il mouse originale Mac Plus o Mac 128k con un MacBook Pro moderno?

3

Capisco che i Mac originali usassero una porta seriale per il mouse con un connettore RS-422 DE-9. Totalmente non standard oggi. Ma sicuramente, ad un certo punto qualche azienda (Apple?) Deve aver realizzato un adattatore per usare i primi mouse con i Mac basati su USB?

Grazie per qualsiasi informazione ...

    
posta Rufus 04.11.2011 - 19:06
fonte

4 risposte

2

Per quanto ne so, i vecchi mouse Mac usavano un connettore DE-9, ma questo non è compatibile con RS-232. Se lo fosse, avresti potuto utilizzare un adattatore da RS-232 a PS / 2 e poi uno standard ps/2-usb-converter (entrambi devono essere convertitori attivi).

Se si ottiene un mouse ADB, sarà possibile utilizzarli poiché sono disponibili adattatori .

Se sei interessato all'elettronica e alla programmazione, potresti costruire il tuo convertitore es. utilizzando una pensione per adolescenti per pochi dollari. Non dovrebbe essere troppo difficile dato che il vecchio mouse Apple invia solo segnali di quadratura che dovrebbero essere facilmente tradotti in movimenti del puntatore .

    
risposta data 04.11.2011 - 21:44
fonte
2

Thread antico - ma stavo cercando lo stesso pensiero

È possibile utilizzare un arduino / teensy con funzionalità HID per coprire la quadratura da utilizzare su un dispositivo USB.

La piedinatura DE9 (con i pin arduino per il codice seguente) è:

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)

E qualche codice di esempio originario di GuilleAcoustic e modificato da 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];
}

Originale da: link

    
risposta data 16.03.2017 - 04:30
fonte
0

Normalmente si tratta di un problema di driver rispetto ai convertitori. Una ricerca rapida presenterà un pletora convertitori seriale-USB per l'acquisto. Semplicemente non terrei il respiro sul sistema che riconosce il dispositivo di input.

    
risposta data 04.11.2011 - 21:16
fonte
0

Sì. Avrai bisogno di un microcontroller con 5 pin di I / O digitali e un'interfaccia USB mascherata come dispositivo HID USB. Il connettore DE-9 del mouse Mac da 128k presenta pin di uscita per 2 encoder XY in quadratura e il pulsante del mouse. Potrebbe essere necessaria la programmazione di alcuni microcontroller.

    
risposta data 05.11.2011 - 00:46
fonte

Leggi altre domande sui tag