TashKM: ADB Daisy-Chained Keyboard/Mouse Controller

This project really has gone through a lot of iterations, for reasons of "I realized you can't do that", "I realized I can't do that", and most recently, "I realized they don't make those anymore." But I think I'm nearing a destination, even if it wasn't the one for which I originally planned.

I've been having a lot of fun with this lately. Besides a new and, I think, more elegant implementation of the ADB protocol, I now have a system that is actually working with parts that are still manufactured and are even in stock at DigiKey as of the time of this writing.

Here it is, with a useless but cute bit of HyperCard pixel art:
opto.png

The main unit connects to an ADB Mac and a PS/2 keyboard and mouse. It also drives a current loop which can connect to a number (14, currently) of optoisolated downstream units powered by the Macs to which they connect. The main unit can switch between controlling any of the downstream units via a key combination. Because the downstream units are powered by their host Macs, I don't think powering them up remotely is possible.

Currently the downstream units only drive ADB Macs, but there's no reason one can't be made to drive a phone-cord-keyboard/quadrature-mouse Mac, or indeed a PC.

Unfortunately, I can't go through with my earlier idea of using the inner pair of a PhoneNet network - the signals aren't differential and they can't be reversed. I think instead I'll use RCA cables, I have a lot of those lying around and other people probably do too...

I've got this working on a breadboard; next stop, PCBs.
 
I've got this working on a breadboard; next stop, PCBs.
Nicely done!

I know you've already got something actually working and the point is now moot, but I _believe_ (haven't tried it out in person) that pretty much any transformer with a relatively equal winding ratio would have worked. The goal isn't to do anything fancy with pulse shapes or voltage levels or what have you; it's just to induce a pulse on the Mac side whenever one goes past on the bus side, and vice versa. (That's the nice thing about low-complexity stuff like this - it's pretty hard to build it so poorly it doesn't work at all, so the reliability-improvement stages after you get it minimally functional are more about robustness than about basic operational consistency.)
 
I was curious if this project was completed or if there's an update?
I'm afraid there's no update, I've hit several snags that have kind of killed my interest in it, the main one being the absence of any standard driver that allows for absolute positioning of the mouse cursor on the screen. Maybe someday I'll pick it up again but I can't promise anything...
 
I'm afraid there's no update, I've hit several snags that have kind of killed my interest in it, the main one being the absence of any standard driver that allows for absolute positioning of the mouse cursor on the screen. Maybe someday I'll pick it up again but I can't promise anything...

Ah ok, thanks for the update.
 
Hi Tashtari,

I think I'm in a similar situation as you where, I would also like to control my collection of Macintoshes from one single keyboard & mouse.
But then also have the option to display everything on a single LCD monitor ...

I got myself a second hand 8 inputs KVM for PCs with DB15 VGA / PS2 / USB to find out how they where doing it.
And actually there is a microcontroller on every input for the PS2 / USB so I got my scope out to check how it works :

The microcontroller simulates a keyboard / mouse, even if this device is not selected it keeps on sending NO KEY / No Movement
data to the PC, otherwise the PC would disconnect the USB and possible report errors.

I don't know if this is an issue on the ADB bus yet, does the keyboard / mouse send data if there are no changes ?

There is also NO isolation on any signals, as all the machines are "underneath your desk", any ground voltage difference should
be minimal. This is not so with AppleTalk of todays Ethernet with cables running may meters ...

My idea is to use an CPLD instead of a microcontroller as it will have no problem of running 9 ADB part at the same time ?

I will have a look at your sw on Gitlab, but my PIC assembly is a but rusty :(

Br,
Steve
 
I don't know if this is an issue on the ADB bus yet, does the keyboard / mouse send data if there are no changes ?
No, a keyboard or mouse could theoretically drop from the ADB bus and (unless it decided to query register 3, which it never does) the host would never notice it was gone, it would just think there were no keystrokes/movements.

My idea is to use an CPLD instead of a microcontroller as it will have no problem of running 9 ADB part at the same time ?
I don't know, ADB seems to generally be designed around having a microcontroller at either end of the connection, I don't think it translates very well into logic - at least not logic simple enough to fit in a CPLD.

Anyway, I'm afraid TashKM as a project is kind of dead at this point. It conceptually relied on the idea that you can do absolute positioning of the mouse cursor on the screen without a special driver in Mac OS, and unfortunately, you can't. I'm still interested in doing something along the lines of a KVM, though. Not sure how I'll handle ADB, but... will cross that bridge when I come to it. Lots of stuff on the backlog...
 
Anyway, I'm afraid TashKM as a project is kind of dead at this point. It conceptually relied on the idea that you can do absolute positioning of the mouse cursor on the screen without a special driver in Mac OS, and unfortunately, you can't. I'm still interested in doing something along the lines of a KVM, though. Not sure how I'll handle ADB, but... will cross that bridge when I come to it. Lots of stuff on the backlog...
From a software perspective, you can do offset from upper left in pixels, but you still have to process resolution somehow, and I don't think that can be done without querying soft values or writing a driver that queries the hardware. Multiple screens makes that even crazier, as hardware mouse handling is passed off to the cards that are managing the screens in question.

But if you don't care about absolute positioning, you could still do relative positioning and put up with the oddities. The alternative is to pretend the input device is a Wacom trackpad and not a mouse, which would likely still require a special driver, but those drivers already exist, and DO allow for absolute positioning.
 
I was reading some articles about ADB and it always says when you insert a device into a running mac you can destroy it ???
Only detail I found was a soldered fuse on the mainboard , can anybody confirm this, experience ?
I would use an external power supply so this is no issue.

On your original design Tashtari, you used an optocoupler to check the 5V from the Mac, would it not be enough to check the ADB signal ?
In normal use it will be high most of the time, only when it's low for more than 100ms you could conclude the Mac is switched off ?

About switching the Mac on or off with the Keyboard, my LC models don't support it, not sure if SE or classic support it ?
 
Back
Top