XT/AT/PS2/Terminal to USB Converter with NKRO

User avatar
Soarer

12 Mar 2013, 16:09

bester42 wrote:I think it would be nice to have virtual modifiers not reporting to the PC. Mody01 to Mody32 :-)
It would be also a solution for DEAD_KEYS. The Deadkey is calling a macro, locking the modifier, the following keystroke is handled by a macro creating the composed sign and resetting the modifier.
If the dead key is supported by the OS layout, wouldn't the existing remapping and layer functionality sometimes be sufficient?

If it's not, then I think you're right - it needs two macros, since there are two sets of modifiers to match (one for the dead key, and one for the final key). But it also needs some way to connect them, so I think that could be a new macro command which simply sets a number for the current dead key (there can only be one at a time), and a new macro trigger test to match it. The only part of that I haven't quite figured out is when exactly the dead key is reset (since it needs to be automatic) - I think it's simply after the first non-modifier key, and if that hasn't triggered a macro there would be no output.

Another thing I'm not sure about yet is the best way to match Fn keys in a macro trigger. Since it's common to arrange them have left and right keys doing the same thing, and that can already be defined in the layerblock, perhaps the best thing to match in the macro trigger is the layer number instead.

bester42

12 Mar 2013, 19:12

Only ´`^ are supported by German OS-layout, so everything else requires a macro, simmulating keypresses for an unicodecharacter.
As I said - not the most urgent problem to me, as it would be only needed for full neo2 layout with company-PCs without administration rights. A verry special case.

If I understand right, without POP_ALL_META the modifiers set in a macro will stay alive until the modifierkey is pressed and released again. So SET_META lshift in a macro without POP_ALL_META at the end will work like capslock on some old typewiters. If you remap caps_lock to functionkey24 and call a macro on functionkey24 setting lshift, a press on caps_lock will activate shift and only pressing lshift will deactivate it.

Same would be with virtual modifiers. A keypress can directliy set the modifierstate (via remaptable) or call a macro activating the modifier, deactivating it or tongle it. Of course using a virtual modifier to make deadkeys is somehow more complicated - the deadkey calls a macro to set the modifier and any(!) other key has to call a macro with deactivating the modifier in the end (argh and two modifiers on the same character... upps something to think later...).

If I understand right, only the first macro matching is procedured. Maybe doing all matching macros will be an easy solution in the order they are written in the config. So to make a deadkey, the keys activating a virtual modifier are down the list of macros, if you want to reset a key after one following character, you simply put a macro before it deactivating the modifier if its set.

"Mody01 to Mody32" was a little joke, but after it I thought it over: "Mody00 to Mody15" would be realy nice - 4 independend modifiers "ModyA-ModyD" making 32 combinations, so instead of "ModyA -ModyB -ModyC ModyD" a Mody09 would do for good reading.

Maybe different types of macro would be more simple for complex solutions:
- like it is now (first matching, no automatic saving and resetting modifiers)
- automatic embedded (first matching, automatic saving and resetting modifiers)
- done if its conditions fit - even if other macros have been done before

This are just some ideas I had. Virtual Modifiers would be usefull in many more cases than Deadkeys (if an other "layer" meens not a remapping like switching between qwert / neo2 /dvorak but to call another set of macros or enabling "locking" by pressing right and left modifier together).

I am perfectly happy with the converter now, all i wrote about would be nice extras only. In my opinion, from all my ideas the "click-sound-output" would be the most simple an also the most interesting.

I got the ++2.0 Teensy now, so maybe next weekend I will do some work with my NEO-macroset.

User avatar
Soarer

13 Mar 2013, 00:50

bester42 wrote:Only ´`^ are supported by German OS-layout, so everything else requires a macro, simmulating keypresses for an unicodecharacter.
As I said - not the most urgent problem to me, as it would be only needed for full neo2 layout with company-PCs without administration rights. A verry special case.
Sure... I'm just thinking about how these things could work, it might be quite some time before I actually implement any of them!
bester42 wrote:If I understand right, without POP_ALL_META the modifiers set in a macro will stay alive until the modifierkey is pressed and released again. So SET_META lshift in a macro without POP_ALL_META at the end will work like capslock on some old typewiters. If you remap caps_lock to functionkey24 and call a macro on functionkey24 setting lshift, a press on caps_lock will activate shift and only pressing lshift will deactivate it.
PUSH_META and POP_META should occur in pairs. They manipulate a stack of saved meta states, so if there are more PUSH_METAs, the stack will overflow! POP_ALL_META is a shortcut to clearing the stack - think of it as 'pop all (saved meta states)', rather than 'pop (all meta)', since it acts like a sequence of POP_META commands. Almost always the PUSH_META and POP_META will occur within the same macro, with the only (rare) exception being to have a PUSH_META in the make clause, a POP_META in the break clause, and the 'norestoremeta' flag on the break clause.

To make a sticky shift lock as you describe, just don't use the PUSH_META command :)
bester42 wrote:Same would be with virtual modifiers. A keypress can directliy set the modifierstate (via remaptable) or call a macro activating the modifier, deactivating it or tongle it. Of course using a virtual modifier to make deadkeys is somehow more complicated - the deadkey calls a macro to set the modifier and any(!) other key has to call a macro with deactivating the modifier in the end (argh and two modifiers on the same character... upps something to think later...).

If I understand right, only the first macro matching is procedured. Maybe doing all matching macros will be an easy solution in the order they are written in the config. So to make a deadkey, the keys activating a virtual modifier are down the list of macros, if you want to reset a key after one following character, you simply put a macro before it deactivating the modifier if its set.

"Mody01 to Mody32" was a little joke, but after it I thought it over: "Mody00 to Mody15" would be realy nice - 4 independend modifiers "ModyA-ModyD" making 32 combinations, so instead of "ModyA -ModyB -ModyC ModyD" a Mody09 would do for good reading.

Maybe different types of macro would be more simple for complex solutions:
- like it is now (first matching, no automatic saving and resetting modifiers)
- automatic embedded (first matching, automatic saving and resetting modifiers)
- done if its conditions fit - even if other macros have been done before

This are just some ideas I had. Virtual Modifiers would be usefull in many more cases than Deadkeys (if an other "layer" meens not a remapping like switching between qwert / neo2 /dvorak but to call another set of macros or enabling "locking" by pressing right and left modifier together).
I may have to read that section again, but I think some of these features go too far beyond what a keyboard should do :)

Trouble is, only certain ways of doing things can be made totally reliable. Simply tracking which keys are up or down becomes unreliable if two keys produce the same code - press both, release only one, but the code thinks neither are pressed... damn!

I can't really see the need for virtual modifiers, in the form you're currently thinking of. I think the dead key solution I outlined is reasonably self-contained and can be made reliable quite easily. For other uses of virtual modifiers, using the Fn keys to access layers would achieve similar functionality (once I allow triggering a macro based on the layer). So the only part missing from virtual modifiers is being able to set them from a macro, and I'm struggling to see the need (apart from the specific case of dead keys). Perhaps some other mechanism could be just as useful, but without examples of what it would allow people to do I can't think what that might be!

Layers are not for switching between say qwerty / dvorak etc, that is what 'ifselect' is for. Layers allow you to remap to a different key depending on the Fn keys - for example, people have used it to have F1 to F12 available by pressing a Fn key with keys on the number row.

The key thing about reusing the Fn keys as virtual modifiers would be that you can already set it up so there is a left and right key accessing the same layer, but from different FN keys. So it would also be possible to trigger a macro from pressing both FN keys (once I implement layer match in the macro trigger, and also pass FN key codes through to the macro stage).

I'm almost certain to change macros so they have a PUSH_META and POP_META by default, with a flag to remove them. However, I think it should still be that only the first one matched is executed, because I think allowing the alternative is very hard to write good (predictable!) configs for.

PeaInApod

18 Mar 2013, 02:35

Hi everyone,

New to the forums. I found an old IBM Model M collecting dust at my office and brought it home. It ended up being a terminal Model M. I found both this website, geekhack.org, and Soarer's Converter while researching how to convert the terminal output to PS2/USB. Before I got started I wanted to get the input of people here so I didn't screw up the keyboard on my first go.

This is the circuit board inside the Model MImage

A side view of the onboard connector the terminal cable was originally attached at.
Image

The end of the terminal cable itself. The photo is oriented so that the bottom left pin (yellow) matches up with the bottom left pin in the above photo.
Image


I have read through the forums and the documentation that comes with Soarer's Converter. As best I can figure the pin-out from the keyboard to the Teensy would follow this scheme.
Image

The identifiers on the back of the keyboard are as follows:
Part No: 1392595
ID No: 1040164
Plt No: J2

I have a soldering iron but it has a fairly large tip and I do not have anything to hold a Teensy or a wire in place while soldering. To that end I was thinking of going the breadboard route for simplicity. I figured on getting these Female-to-Male jumper extensions - https://www.adafruit.com/products/826 and going right from the "terminal header" on the circuit board to a piece of breadboard.

So awesome members of DeskThority, do you have any tips? Is the pinout I diagrammed above correct or did I fall prey to the n00b error of swapping the ground? I'll take any pointers/advice as I want to know exactly what I am doing and what parts I need to get before proceeding.

Thanks!


edit: Also what exactly is a "bolt mod" and does anyone have any guides/resouces about it? I looked online and found a lot but none of it was what I would call informative.

User avatar
Soarer

18 Mar 2013, 05:03

Pinout looks fine, it matches one I just checked. I think the same (internal) connector is used on a lot of Model Ms, 101- and 122-key.

You could skip the breadboard unless you are going to add other components... there are also Female-to-Female jumpers, which would hook that connector straight to a Teensy-with-pins. But I guess a breadboard is easier to stick down!

PeaInApod

18 Mar 2013, 05:41

Teensy with Pins = Perfect! I had been looking on adafruit.com and had not even double checked PJRC to see what they had. But yes a Teensy w/ Pins + Female to Female headers would fit the bill perfectly.

Also, thanks for confirming the pin-out was correct. Since there are two black cables in the terminal connector one that terminates at the circuit board and the other with that screw down connector I wasn't sure which cable was which at first when I was looking at the various pin-out diagrams.

tinctus

27 Mar 2013, 13:46

First I want to thank Soarer for his efforts on his wonderful keyboard converter :D .

For while I've been wanting to get an old IBM M keyboard up and running. After quite a bit of googling, I came across very sparse information regarding my particular variation of the model M (1392366). The only standout feature of this keyboard was its connector: Image

Well, after finding its pinout, flashing an Arduino Micro and getting it all connected up, I used hid_listen to determine what protocol I needed to use (terminal, set3) aswell as remap a few keys for proper usage. This is where I need some help. The only functions of the keyboard that are acting odd are the lock keys, CAPS, SCROLL LOCK, and NUMLOCK. each of these keys function properly as expected, but some abnormalities happen.

When I first press CAPS, hid_listen outputs

Code: Select all

r14 +39 d39 wED W105wED W105wED rFA w00 rFA
while turning on the NUMLOCK LED.


Pressing CAPS again outputs

Code: Select all

r14 +39 d39 wED W105wED W105wED R06 R106!!00rFA +00
and then freezes the converter or keyboard... hid_listen no longer responds till I reset the adapter OR plug in a normal PS2 keyboard and press CAPS again.


SCROLL LOCK behaves similarly but the proper LED lights. And NUM LOCK behaves just like CAPS, but lights up the CAPS LED.

When looking at the output of hid_listen, messing with those three keys are the only time I see any errors. I tried turning off toggle keys in windows 7 (I like hearing the tone when I hit a lock key) and that changed nothing. I am maybe wondering if it has something to do with the length of the cord that is attached to the keyboard being it its almost 10ft long. I am hoping someone has had similar issues before and fixed them or maybe some other fix has yet to be discovered.

Other pictures of the keyboard can be found at http://imgur.com/a/OgRnJ.

User avatar
Soarer

27 Mar 2013, 15:11

It could be the long cable, or perhaps there's something different about the IO circuitry or code in the keyboard. In either case adding pull-up resistors to clock and data might help, since it seems to almost work. Can you post the output from the initial negotiation please? (i.e. run hid_listen, then connect converter usb).

Found some info in HaaTa's thread, and in the Technical Reference Volume 1 on bitsavers.

It seems that the LEDs just are in a different order on that keyboard! Annoying, but will be fairly easy to deal with if I put special code in for its keyboard ID (BFB0).

The other thing I found was that the keyboard has only a 4 code output buffer, so it won't take much to fill it and produce overrun ('00') errors. I'm not sure if it's the keyboard or my converter that is then stuck, but if it's unstuck by toggling the lock on another keyboard then I presume it's the keyboard. In which case, after an overrun, it's expecting to get something from the host to reset it. My converter doesn't do that, since other keyboards don't need it. So this is a problem, but it's secondary since it's mostly caused by the write taking too long when trying to set LEDs.

PeaInApod

28 Mar 2013, 02:36

Does anyone have any pointers on proper bolt-modding technique?

I've seen posts were people say they drilled holes through the plastic tray and ran bolts all the way through and secured them with nuts against the metal backplate. I've seen others yet suggest drilling a pilot hole were the rivet stud is/was and then running a screw into it.

I saw lots of talk about "Ripsters Bolt-Mod" and randomly found this Imgur Photo Album of Ripsters mod. This appears to be the "bolt thru keyboard" method. I also saw a similar guide on Geekhack.

Just looking for advice on which method to follow and what pitfalls to avoid from others who have done this before.

Many thanks - Pea.

tinctus

28 Mar 2013, 03:44

Thanks for the Reply Soarer :) I tried connecting up pull-up resistors as described in the converters documents, but I only had 220 ohm and 1000K ohm resistors on hand. Despite that I gave it a go ahead with the 220 ohm ones but didn't notice a difference in behavior or errors. I suppose I could open the keyboard up and wire it directly to the board, as eventually Id like to get rid of the gigantic permanently attached cord and opt for a usb connector.

Anyway, I ran the listner as you asked while connecting up the connector. Here is the output I get from it:

Code: Select all

Waiting for new device:.............
Listening:


remaining: 0018
18@0008 remaps
layerdefs: 00
max_layer: 00
total_macros: 00
alloc ok.
wF8 rFA

Keyboard ID: 0000
Code Set: 3
Mode: AT/PS2

Also in case its useful, here is the configuration I had to upload to the converter:

Code: Select all

force set3

remapblock
	F13		ESC
	ESC		NUM_LOCK
	NUM_LOCK	PAD_SLASH
	SCROLL_LOCK	PAD_ASTERIX
	EXTRA_SYSRQ	PAD_MINUS
	PAD_ASTERIX	PAD_PLUS
	PAD_PLUS	PAD_ENTER
	F23		PRINTSCREEN
	F24		SCROLL_LOCK
	LANG_4		PAUSE
endblock

User avatar
Soarer

28 Mar 2013, 14:34

220 ohm is right on the limit of what might damage the '32U4 on the Arduino from too much current!!! Anyway, it's told us that pull-ups don't help this particular problem.

Unfortunately it looks like the OS/hid_listen was slightly too slow to connect, and we've missed the initial negotiation (it always starts with wEE). Clearly the negotiation didn't work though, because the ID has been detected as 0000, and that's why you've had to use 'force set 3' in the config. The tech ref says it supports the comands used in the negotiation, so perhaps once the problem of sending to the keyboard is solved it will work without force.

Since the main problem is it timing out, I've knocked together a test version with a higher timeout when it starts sending to the keyboard. I think that's the most likely place for it to be failing, but also I've added more error codes that will hopefully tell us exactly when it's timing out in case that doesn't work.
Attachments
Soarer_at2usb_v1.11_test_atmega32u4.zip
(15.56 KiB) Downloaded 253 times

tinctus

29 Mar 2013, 09:05

Flashing this new test firmware yields a response when I connect the keyboard up, I've never had any output prior unless I forced via a config. Here is the output it now gives;

Code: Select all

Waiting for new device:.............
Listening:
wEE rEE wF2

remaining: 0000


Keyboard ID: 0000
Code Set: 2 (extended)
Mode: AT/PS2
Still no keyboard ID however. Prior to my first post, I had forced set 3 as more keys worked off the bat. Without doing any remapping right now (for example the "Action" key functions as CAPS rather than R CTRL), I am still getting the errors I described earlier.

User avatar
Soarer

29 Mar 2013, 13:42

Are you sure the errors are exactly the same? Instead of error W105 it should now be W1n5, where n is a hex digit (and same change for W005 and W205).

I forgot before that it won't try any negotiation if force is used (apart from setting the keyboard to send break codes if set3 is forced). But now it's odd that it just cuts off after wF2 (sending a read ID command)... there must be errors there since the ID wasn't read, but they aren't being printed for some reason.

tinctus

29 Mar 2013, 14:32

You're right, the error code IS different than earlier, I just missed it. I apologize.

I have rerun the listener, and reconnected the keyboard with your test v1.11 several times starting from a CAPS off state, as if I don't, it seems to still act odd. I am taking a guess here (I have no experience with such things prior to this) that the system (HID?) records the state of a caps lock if a keyboard is disconnected and then reconnected.

Anyway, here are three runs of errors, pressing the "Action" button that behaves like CAPS. No remapping/config loaded.

Code: Select all

Waiting for new device:................
Listening:
wEE rEE wF2

remaining: 0000


Keyboard ID: 0000
Code Set: 2 (extended)
Mode: AT/PS2


r58 +39 d39
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W145wED rFA w04 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W185wED rFA w00 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED rFA w04 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W1E5wED rFA w00 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W185wED rFA w04 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W105wED R06 R106!!00rFA +00

Code: Select all

Waiting for new device:.................
Listening:
wEE rEE wF2

remaining: 0000


Keyboard ID: 0000
Code Set: 2 (extended)
Mode: AT/PS2


r58 +39 d39 wED W185wED rFA w04 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W175wED R06 R106!!00rFA +00

Code: Select all

Waiting for new device:.............
Listening:
wEE rEE wF2

remaining: 0000


Keyboard ID: 0000
Code Set: 2 (extended)
Mode: AT/PS2


r58 +39 d39 wED W185wED W165wED rFA w04 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W1F5wED rFA w00 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED rFA w04 rFA
rF0 r58 -39 u39
r58 +39 d39 wED W185wED W1E5wED R05 R105!!00rFA +00

Strikes me as odd how it varies the number of presses I can get in, each roughly a second apart.

User avatar
Soarer

29 Mar 2013, 15:02

Wow, that thing is slow to respond! Quite often it's failing to even start to respond within the current timeout of 2.4ms. (The order of the extra hex digit counts down, so 8,7,6,5,4,3,2,1,0,F,E).

Let's try giving it 20ms... to be fair, the PS/2 spec does say it can take up to 20ms, but I always thought that was just for special cases - none of the other keyboards take anything like as long as that in normal operation.

Yes, with HID the OS will update the LED state when a keyboard is connected.
Attachments
Soarer_at2usb_v1.11_test2_atmega32u4.zip
(15.56 KiB) Downloaded 252 times

tinctus

30 Mar 2013, 05:33

This latest test works great! no more freezing now matter how many time I mash any combination of the lock keys. I guess this tired ol odball from 1989 needs the whole 20 seconds to get its groove on. Thank you so much Soarer, you are a rockstar! :D :D

In addition I am finally seeing a keyboard ID come through. Here is the listener output with no remappings defined, pressing CAPS a few times (and a ton afterward, but its all the same, no errors)

Code: Select all

Waiting for new device:.................
Listening:
wEE rEE wF2 rFA rBF rB0

remaining: 0000
wF8 rFA

Keyboard ID: BFB0
Code Set: 3
Mode: AT/PS2


r14 +39 d39 wED rFA w04 rFA
rF0 r14 -39 u39
r14 +39 d39 wED rFA w00 rFA
rF0 r14 -39 u39
r14 +39 d39 wED rFA w04 rFA
rF0 r14 -39 u39
r14 +39 d39 wED rFA w00 rFA
rF0 r14 -39 u39
The only thing that isn't working right now is the num lock and caps lock LEDs are swapped. Not a HUGE deal. Is there something in the config I can do set to swap the indicators? Maybe its wishful thinking, but would be swell to access that speaker on the bottom, maybe a keyboard bootup melody :lol:

User avatar
Soarer

30 Mar 2013, 05:44

Cool! Well the odd thing is that it's more recent than the XT and original AT, which are much faster to get out of bed in the morning :lol:

Now it's getting the ID - and the one I was expecting - I can think about how to deal with the LED swapping. Also need to check whether the longer timeouts will affect anything else, but I think they'll be ok.

Then I can claim RT PC keyboard support as well :D

The speaker... dunno about a melody, but I was thinking of looking into a 'click' output at some point.

User avatar
Soarer

05 Apr 2013, 22:51

I can't see how this could possibly go wrong :lol: but here's a test where the LEDs are swapped around if the ID is BFB0 :D
Attachments
Soarer_at2usb_v1.11_test3_atmega32u4.zip
(15.61 KiB) Downloaded 251 times

tinctus

06 Apr 2013, 18:13

Test 3 works flawlessly as far as I can tell via mashing the lock keys as fast as I can. And yeah, the correct LED's light up now. No errors or weird output from the listener aswell. So everything is in working order as far as I can tell with this keyboard.

Thank you so much :D Ill keep an eye out if you decide to implement keyboard beeps too for fun :)

User avatar
Soarer

06 Apr 2013, 20:08

Great :D I just added a v1.11 update to the first post, with those RT changes and a couple of other minor tweaks.

One change is to prevent debug output when in BIOS mode - another attempt at fixing the long-standing incompatibility with certain Dell machines (M6300 (BIOS rev A14) and Inspiron 630m). If anyone has one of those, please test! :)

PeaInApod

29 Apr 2013, 03:07

Wondering if someone can help me with key mappings. I read the documentation but it didn't really grasp what was all required software wise. The problem I am having is that on my Terminal Modem M the Num-Pad keys are not registering to "modern" keys. For example I am getting a asterisk like star symbol instead of say the number 4. etc. I have gotten the rewiring, bolt modding, and plastic cleanup all completed but how to do this last step evades me.

Thanks much - Pea.

User avatar
Soarer

29 Apr 2013, 10:33

A good start for a 122-key config is Halvar.sc in the configs folder. Also, for finding out which codes you might want to remap, this post might help.

But I don't know why the numpad '4' key would be producing an asterix or similar... at least the numbers of the numpad should be mapped OK even without a config loaded.

PeaInApod

02 May 2013, 02:25

Thanks for the tip!

I loaded up the default Halvar.sc config and it got me pretty close. Did a few remappings and things are pretty well laid out now.

fschulze

12 May 2013, 20:24

Would this also work with an Arduino UNO? I'm not sure which pins I would have to use. I have one laying around and would like to try this with it before I buy something else. On the Arduino are two microcontrollers. One Atmega 16U2 for the USB side and a ATmega328 which is connected to the pins.

http://arduino.cc/en/Main/ArduinoBoardUno

I got a simple but buggy converter working with it. I had to flash a keyboard firmware to the USB micro controller and another software for the PS/2 side. BTW, it's not buggy because of the april fools stuff, I removed that :) It's things like not being able to hold shift and use cursor keys to select something.

http://hunt.net.nz/users/darran/weblog/ ... on_03.html
http://hunt.net.nz/users/darran/weblog/ ... board.html

JBert

12 May 2013, 22:26

I don't think so... Those Atmel controllers are not in the official support list:
Soarer wrote:Supported Atmel CPUs:
  • ATmega32U4 (Teensy 2.0, Adafruit '32U4 breakout, etc.)
  • AT90USB1286 (Teensy++ 2.0)
  • AT90USB646 (original Teensy++)
  • ATmega16U4 (???)
The reason is that they don't have hardware support for the USB protocol. That's why the Arduino UNO has a second controller to do USB communication.

User avatar
Soarer

12 May 2013, 23:31

It won't, sorry. It's written only for the bigger AVR chips with USB support (like the ATmega32U4 on the Teensy 2.0). The Arduino Leonardo and Arduino Micro should work fine since they use that CPU.

And yeah, I recall the trouble some of those extended sequences gave me too!

User avatar
Soarer

14 Jun 2013, 01:36

v1.12 added to the first post, which should make Delete repeat correctly again on v3.x Linux kernels :D

The back story to this one is on GH.

User avatar
Muirium
µ

30 Jun 2013, 18:09

I'm eagerly waiting on the mail for my Teensy, because this keyboard needs Soarer's converter:

Image

An IBM PC/XT Model F fresh from 1985! I'm amazed at its condition. This Model F was rescued from a telecom company's closet of soon to be junked computer kit around 20 years ago, by my dad, who only mentioned it to me recently. "An old PC keyboard" in the garage isn't too promising, until you see the huge DIN plug. Ooh! Then a glimpse of the round cornered pyramid shape of the side. To my great surprise it was the best I could hope for! A freaking Model F! Christmas in June! I don't even have a Model M of my own. In fact I don't even have a PS/2 port, let alone one for this.

So you bet I'm making the converter. And I have a question: I've already found the appropriate female DIN connector for the Model F, but can I hook up a PS/2 jack as well to make this a multi purpose converter? I don't intend to swap around keyboards often, and I'd never hot plug PS/2 or that huge DIN anyway. The Teensy would need flashed with the appropriate firmware for any different keyboard I attach as I intend to get creative in the function layers. Have you seen that layout? But it might be handy to have two plugs to choose from at some point. I'm wondering if it's doable to just solder them up in parallel. I promise never to plug keyboards into both together!

Anyway, really looking forward to typing on that beast. Huge thanks to Soarer and everyone who has worked on this little bit of time travelling magic!

JBert

30 Jun 2013, 21:23

Ooh, the one and only PC keyboard. Typing on the very same at this moment.

A converter can have both input ports, just connect them according to the schemes and don't use them both at the same time.

However, I can't recall whether the PC and AT pinout of the DIN plug were the same, so be careful if you ever plug an AT keyboard into the DIN port.

bester42

30 Jun 2013, 22:30

As my main keyboard is an terminal with RJ45, I connected a female RJ45 to the teensy. For useing PS2 or DIN I simply cut an old cable with DIN-female / ps2-female connector and crimped an RJ45 connector on the other end. I think it as the most handy solution (especialy as I have a very small case for the teensy, no connector exept the mini-usb of the teensy itself fits and the RJ45 female is from a ISDN cable)

On the other hand, the old keybord has no LED at all, but the converter supports discrete LEDs. So you may like to make a bigger case to place on the desktop. If you do a big case for the teensy anyway, build in all possible connectors (RJ45/PS2/DIN/serial) seem a good idea.

Post Reply

Return to “Workshop”