[apple] 현대 MacBook Pro에서 원본 Mac Plus 또는 Mac 128k 마우스를 사용할 방법이 있습니까?

원래 Mac은 RS-422 DE-9 커넥터가있는 마우스 직렬 포트를 사용합니다. 오늘은 완전히 비표준입니다. 그러나 언젠가 어떤 회사 (Apple?)가 USB 기반 Mac에서 초기 마우스를 사용하기 위해 어댑터를 제작 했어야했는지도 모르겠습니다.

어떤 정보 주셔서 감사합니다 …



답변

내가 아는 한, 구형 Mac 마우스는 DE-9 커넥터를 사용했지만 이것은 RS-232 호환이 아닙니다. 그랬다면, 당신은 RS-232에서 PS / 2 어댑터 그리고 나서 표준 ps / 2-usb-converter (둘 다 활성 변환기 여야 함).

ADB 마우스를 사용하면 마우스를 사용할 수 있습니다. 어댑터들 이것들을 위해.

전자 제품과 프로그래밍에 관심이 있다면 자신 만의 변환기를 만들 수 있습니다. ~을 사용하여 십대 보드 몇 달러. 오래 된 사과 마우스가 그냥 보내면 너무 어렵지 않아야합니다. 직교 신호 포인터 이동으로 쉽게 변환되어야합니다.


답변

고대 스레드 -하지만 같은 생각을 찾고 있었어.

USB 장치에서 사용할 구적 변조를 감추기 위해 HID 기능이있는 arduino / teensy를 사용할 수 있습니다.

DE9 핀아웃 (아래 코드의 arduino 핀 포함)은 다음과 같습니다.

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)

GuilleAcoustic의 원래 샘플 코드 중 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];
}

원본 : https://geekhack.org/index.php?topic=74340.0


답변

일반적으로 변환기를 능가하는 운전자의 문제입니다. 빠른 검색을 통해 과다한 시리얼 -USB 변환기를 구매할 수 있습니다. 나는 단순히 입력 장치를 인식하는 시스템에 숨을 멈추지 않을 것이다.


답변

예. 5 개의 디지털 I / O 핀과 USB HID 장치로 가장 할 수있는 USB 인터페이스가 모두있는 마이크로 컨트롤러 칩이 필요합니다. Mac 128k 마우스 DE-9 커넥터에는 2X 직각 인코더 및 마우스 버튼에 대한 출력 핀이 있습니다. 일부 마이크로 컨트롤러 프로그래밍이 필요할 수 있습니다.


답변