Erste Überlegungen zu einen Keyboard/Mouse-Switch

Anforderungen

  • 2 1) Tastaturen (KB) und 2 2) Mäuse (MS) anschließbar (beides PS/2-Schnittstelle)
  • jedes KB/MS paar soll an jeden Ausgang schaltbar sein
  • [X] 3) Ausgänge [mindestens 4]
    • Entweder über Wert (1,2,3,4,5 etc) oder über Bitmaske (1,2,4,8,16 etc)
      • Über den Wert währen bei 8 Bit theoretisch 255 Ausgänge möglich
      • bei der Bitmaske nur 8, allerdings könnte es simpel realisiert werden das ein und dieselbe Eingabe an verschiedene Ausgänge geht.
        • wird das wirklich benötigt oder wäre es nur ein „nice to have“?
  • Umschaltung sowohl über die Tastatur, als auch über ein PC-Programm 4) möglich.
  • Unterschiedliche Tastatur Codes sollten pro Anschluss unterstützt werden
    • Tastatur mit US-Layout an einem und eine mit DE-Layout an dem anderen Anschluss??
  • Der aktuelle Status (NumLock, CapsLock, Rollen) muss richtig an der Tastatur angezeigt werden!
  • Client Anschluss über USB (erweiterung auf PS/2 sollte möglich sein)

Umsetzung

  • Ein µController zur Verwaltung der Eingaben (2x KB/MS)
    • groß genug um auch 3-4 KB/MS zu verwalten
    • Zukunft: Möglichkeit des Anschlusses eines USB-Hubs an den Tastaturen und Mäuse angeschlossen werden können
  • Simples serielles Protokoll zur Übertragung der Daten (SPI oder I2C) 5)

Aufbau

Mögliche SPI Telegramme

Die hier dokumentierten Telegramme dienen erstmal einer ersten Übersicht und keineswegs der fertigen Implementierung! Änderungen können jederzeit stattfinden!

<register> register = general control long desc = general control telegram from the master #short desc = perms = W #addr = 0x0 #reset = 0x0 length = 24 bit range = 7 7 bit name = GC bit desc = 0 - No general control command\n1 - GC Command (see CMD) #bit flags = W1C bit range = 6 0 bit name = CMD bit desc = 000 0001 (0x01) - GET_KB_LED_STATUS\n000 0010 (0x02) - GET_KB_NUMLOCK_STATUS\n000 0011 (0x03) - GET_KB_ROLL_STATUS\n000 0100 (0x05) - GET_KB_CAPSLOCK_STATUS </register>

1) , 2)
evt. 3 oder erweiterbar
3)
tbd (to be defined)
4)
Windows und Linux
5)
damit eine vielzahl von Clients bedient werden kann
Projektwerkzeuge