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

User avatar

07 Mar 2016, 14:04

gcardinal wrote:
Soarer wrote: ...
Great firmware! is it possible to change hid codes or in someway modify / add new ones?..

I have it running with TDV 5000 and Arduino Leonardo
You won't get any answers. Soarer vanished long ago, and his code is closed source.


User avatar

07 Mar 2016, 19:04

gcardinal wrote:
Soarer wrote: ...
Great firmware! is it possible to change hid codes or in someway modify / add new ones?..

I have it running with TDV 5000 and Arduino Leonardo
Could you give an example? Soarer had pretty much all keyboard HID codes covered that are in the HID standard AFAIR.

Im not sure if I understood correctly what you'd like to add/modify?


08 Mar 2016, 13:18

Why is there a need to change HID codes? They are just for reference. You can so easily change everything else after you id the HID codes.

User avatar

08 Mar 2016, 14:07

Exactly. I suspect the question is really just how to remap keys, which of course is easy, and it was just an off-key wording.

User avatar

17 Mar 2016, 12:47

Does anyone know what the pinout is on the XT controller?

I know that pins 2, 4, 5, 6 (when looking at the bord from the bottom and with pin 1 being the one furthest away from the plate, but I don't know which is which, and I can't find that info anywhere.


17 Mar 2016, 14:26

alh84001 wrote: Does anyone know what the pinout is on the XT controller?

I know that pins 2, 4, 5, 6 (when looking at the bord from the bottom and with pin 1 being the one furthest away from the plate, but I don't know which is which, and I can't find that info anywhere.
2 - VCC
4 - GND
5 - DATA

User avatar

22 Mar 2016, 15:35

Thanks! It was of great help.

User avatar

30 Mar 2016, 19:55

Is there a way to disable NKRO? My Z-150 misses keypresses sometimes and i think the NKRO over USB could be causing it. I also have a Chicony 5160 that doesnt have blocking so if i hit anything over 6KRO a bunch of random keys get triggered, it works fine with a standard Monoprice and Bluecube adapter since they dont support NKRO but they dont support keymapping.

User avatar

30 Mar 2016, 21:49

consider also that sometimes bounce value tuning might help as well.. not sure how you do it in soarer's controller though...

User avatar

01 Apr 2016, 00:06

gergo2007 wrote:
gergo2007 wrote:
Halvar wrote: Hi and welcome to DT!

I can't show you the joints directly on the PCB, but the SDL connector pinout can be found here, and you can probably go on from there by tracing to the PCB pins:

http://ps-2.kev009.com/ohlandl/keyboard ... _Connector

Awesome! Thank you, will try it in a few minutes!
And im typing this on my model m working via usb!
Pic attached with the pins on the PCB, maybe its helpful to someone:
Yes, it was very helpful to me, thank you!

User avatar

08 May 2016, 23:34

Hello. Im about to buy an F122.
Can someone please say me whats the cheapest/easiest methode to convert it?

Here scottc name the proMicro, but badly no Windows Guide


https://geekhack.org/index.php?topic=58 ... msg1348717

does anything work with Arduino? (Is it basically the same like Teensy - choose file, press flash .hex - and ready? -> but just cheaper?)


09 May 2016, 17:20

you can use a pro micro ( its a clone of one of the uno i don't know what one) and build the converter yourself, its not an issue flashing the pro micro if you get one with the bootstrap already in it , well its easy on linux dont know about windows.

you can ( recommended if price is no issue) replace the controller with a xwhatsit capsence controller f-o-r-s-a-l-e-f58/xwhatsit-s-grand-unif ... t7993.html

the middle of the road option is to use a pre made converter http://www.ebay.co.uk/itm/NEW-Soarers-C ... SwY45USZdd If you cannot solder or don't want to mess taking the ting apart this is what i would get.

i have done all 3 on model F's and they all work well.

I prefer to replace the controller for several reasons, the nice and easy GUI to modify the layout , the fact that you cannot lose something that you solder in, and because its all nice and open source so anyone can update and tweak it .

User avatar
Offtopicthority Instigator

09 May 2016, 17:27

ATmega32u4 Micro Pro 5V mini Leonardo Board is a cheaper "clone" of the Arduino with less options on the board. Still good enough for our purposes. There are other "clones" also I believe.

User avatar
Elder Messenger

09 May 2016, 17:29

I concur with Andrew but I will add that a "real" Teensy from https://www.pjrc.com/store/teensy.html works flawlessly and pjrc provides firmware, whereas the cheap knock-offs seem to require more steps and work.

If you like the 122-key terminal and want to clean and rebuild it to top-shelf operation:

workshop-f7/ibm-model-f-122-key-termina ... %20f%20122

User avatar

09 May 2016, 17:52

The Pro Micro can be flashed almost exactly the same as under linux. But you shouldn't be afraid to use the command line and understanding what you are typing ;)

While it's pretty difficult to really destroy things, it might get frustrating if you don't understand what is happening. The tricky part is resetting the Pro Micro because there's only a small time frame in which you must enter a certain command using a serial port which is also only available during that time frame. It then pops up in the device manager und you have to look up the correct device name there.

But like andrewjoy already pointed out: If you have a new unit, it will boot into an "upload" mode and will wait forever for you to enter that command. It's only a bit unintuitive if you want to upload something the second time.


19 May 2016, 07:36

I've been lurking for a while and wanted to post and say thank you for designing this so that people like me can enjoy using perfectly good hardware at a time where you can spend 4-8x as much money for a brand new one that feels like it will break in half.

I managed to pick up a never-opened / unmodified IBM 122-key silver label model M (yes, a model M, not F) that while obviously built as a terminal keyboard had a PS2 interface. Afterwards I picked up one of the pre-built Sorar converters (PS2 > USB) and learned as much as I could in how to use it. I found instructions that essentially told me to use the hid_listen.exe file to grab the ID generated after the + symbol for every key stroke, and cross-reference that with the code in the HID code set table provided with the documentation.

That was a real blessing - especially since the keyboard mapping went completely bizarre after plugging into the Sorar adapter (which had no config loaded).

After remapping things to a more sane state, we're looking good. However, in using the hid_listen.exe file there are a few things that I still don't understand:

1) In the introduction it says "By using hid_listen, you can see what ID your keyboard has by looking at the two bytes read back after the get ID command (wF2 rFA)." --> How would I go about doing that? I could find no command-line options documented to perform this "get ID" function... nor any key combinations that seem to work. The closest I came to was F2, but that doesn't seem to be even close.

--> UPDATE --> Got PM'd the answer: leave hid_listen.exe running, then with the keyboard plugged into the converter, unplug / replug the converter from / back into the computer.

2) Another issue I'm having are keys that don't remap even when I set them to something else.
* Insert (remains an insert key in spite of remapping)
* Delete (remains delete in spite of remapping)
* Enter key below the right shift (remaps, but alters other enter key too)

Ideally I would remap that lower Enter key into RCTRL but if I did, it would change both the top and bottom enter keys. What I get from the top enter specifically is:

r5A +28 d28
rF0 r5A -28 u28

... and the lower enter key is:

rE0 r5A +28 d28
rE0 rF0 r5A -28 u28

There's a similar thing going on with the alt keys on either side of the spacebar (though I can & have remapped them back to alt, they both remap as the same key because they both show as E0). Left alt:

r11 +E0 dE6
rF0 r11 -E0 uE6

... and the right alt:

rE0 r11 +E0 dE6
rE0 rF0 r11 -E0 uE6

... and then there are my primary arrow keys that mirror the numpad arrow keys but also don't have the exact same output in hid_listen...

The question I am building up to is this: is there some way to be more specific so that these keys which have the same ID but are subtly different can be assigned different actions?

3) There doesn't seem to be any instruction in the documentation for how you would upgrade the firmware on this thing.

--> UPDATE --> You can't. If you buy the pre-built one that's embedded in the cable, then the reset button is inaccessible and therefore the Teensy Loader will not recognize the device.


I would appreciate any help you guys can provide. I am willing to take this keyboard apart / provide pictures, provide a complete keymap of all the keys in their original layout as well as HID-code original layout if needed.

I've got a couple other guys here at work who are waiting to see if I can get past these hurdles before they go out and get their own.

User avatar

19 May 2016, 10:01

Hi and welcome to DT!

The two ALT keys have different codes in Soarer's docs, he calls them LALT (0xE2) and RALT (0xE6). That's also what I get in hid_listen on my Model F-122 (which should be the same as a standard M-122 in that respect to the codes they send).

As for the lower Enter key, I get E4 from that (= RCTRL, right Control in Soarer's doc). I should mention that I didn't remap any of these.

What keyboard ID and code set does hid_listen print out for your keyboard?

I get:

Code: Select all

Keyboard ID: BFBF
Code Set: 3
If you get ID 0000 and Code set 1, there is a problem with recognizing your keyboard and the converter falls back to PC/XT mode, which would explain to some degree what you see (the XT only has 1 Alt and 1 Enter). Check cabling on the Teensy for correct and working connections and that there are no shorts.

If you get something different, especially a different code set or an ID not starting with BF, then the DIP switches on the controller might have been tampered with or your keyboard (controller) might be a special model in some other way.

You wrote that your keyboard has a PS/2 connector. There were some M-122 that were made not for terminals but for PCs that ran a terminal emulation. These should have Code Set 2 like a normal PC PS/2 keyboard I think. Still I would expect the Alt and Enter keys to be discernible. Maybe there are other code sets for other terminal emulations?

Is there some kind of mode switch on the keyboard apart from the DIP switches on the controller?


20 May 2016, 04:20

I get the following when I start up my device w/ a blank config:

Code: Select all

Waiting for new device:.......................
rAA wEE rEE wF2 rFA rAB r85

remaining: 0000
wF8 rFA

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

wED rFA w02 rFA
... but when I load a config file the Keyboard ID changes to 0000. The code set stays the same as does the mode.

I don't see any dip switches or pins that can be used similarly... though there looks like an area on the right of the circuit board that I might be able to solder some on if I had to.

Photos of interest for this keyboard:
* Top of Keyboard, original layout
* PS/2 plug
* Label on the bottom of the keyboard
* With the bottom off...
* Inside Label
* Circuit Board
* Circuit Board Label

Other files of interest:
* Code Map - MSExcel - shows original layout
* My config file as of 5-19-2016

If you would like the full hid_listen output for each key on this keyboard, I would be happy to provide that if you think it would help.

As an update to my previous post, I got a reply from the person who made the pre-built converter I purchased on eBay and was advised it is in fact running the latest firmware - scinfo confirmed it for me.

User avatar

20 May 2016, 09:39

I can't really help you there I'm afraid. Soarer writes something in his troubleshooting docs about "the ID must not start with AB", but as there seem to be no jumpers or DIP switches on your controller I don't see how you would go about to change the ID.

Some links that might help you in some way that I don't anticipate:

Soarer discusses keyboards with an ID starting with AB:
https://geekhack.org/index.php?topic=17 ... #msg648235

Some writeup about a PC terminal emulator keyboard similar to yours (maybe).

I also have a wrecked model M-122 here in storage. If nothing else helps, I can send you its controller for the cost of shipping.


17 Jun 2016, 03:26

Thanks for the information - I've been trying to work within the bounds of what this keyboard allows. Since this is used at work and I always have 20 things going at once, I've found some interesting caveats due to the high amount of usage...

* Holding down the up/dwn/left/right buttons do not repeatedly move the cursor in that direction as expected. The only one that does is the remapped F11 (center button in the middle of all the arrow keys) that I've remapped as DOWN. I can also get this functionality back if I turn off NumLk though.
* Shift + Left/Right/Up/Down does not highlight as expected (again, the only exception is the remapped F11 = DOWN key). I can't get this to work with the NumLk turned off either.
* Remapping the 10-key zero/decimal also remaps the other insert/delete... same for the space key on the 10-key (very top-right)
* Cannot separately remap the keys on either side of the spacebar
* Cannot separately remap the enter key underneath the right shift
* Cannot remap the Insert or Delete keys at all (has no effect)
* When using an Ubuntu VM running through VirtualBox, every time it captures my mouse, all ifselects are reset and in many cases macros fail to work. However I suspect this isn't directly related to the keyboard itself.
* My keyboard also does not have LEDs for the NumLk, ScrLk etc which caused me to use roidayan.com's free Keyboard Indicator app.
* I am so used to the new position of the Insert/Delete keys that when I use other keyboards I get mixed-up.

It seems to play nice using Synergy with the PC as the host and a MacBook as a client. I've found that if I instead run my Ubuntu VM on my Macbook, then access it via Synergy from my PC, my keyboard states are preserved. I'm also using the Alfred app and it's Workflows to intercept certain macros that only work on the PC side and translate them into their OSX key combo equivalents.
-- When using Synergy, AutoHotKey stops intercepting key commands on my Windows box and is why I can't use it for supplementary software macros.
-- Yes, I could use layers to define an alternative macro layout which is OSX-friendly, but using software translation I can keep my one-button-press actions on both operating systems without having to specify a special function key.

Based on everything I can find, this keyboard does not have the required pins to make it function as later editions did. Nor does it have solder points with which I could add them.

In spite of those small annoyances, I'm super happy with what I have... though that's not to say that there isn't room for improvement. I'd be interested in seeing if another controller board would be able to overcome some of these issues I'm running into. Halvar, if you still have that Model M controller board available and/or are willing to be compensated to ship it out to me, please PM me and let me know.

User avatar

21 Jun 2016, 18:13

Recently I finished my Soarer Converter - works so far nicely with an F122.
But sometimes it does not work in BIOS (e.g. TrueCrypt decryption on boot).
Also once Windows is booted there is quite some delay (~1-3minutes) in which no keyboards are recognized (either the F122 and an QFR)

Is this "normal" or is there something I need to add to the firmare?
Or may this be due to 10m USB 3.0 extension Im using?

anyway really thanks for your outstanding work!
Last edited by Phenix on 22 Jun 2016, 12:14, edited 1 time in total.

User avatar
ISO Advocate

22 Jun 2016, 11:39

This is my first post ever made on a Model-F (122)

Thanks so much for the work you put into this Soarer, without your help this wouldn't be possible.

God damn those buckling springs feel fantastic.

User avatar

02 Jul 2016, 10:08

I just tried getting a GUI key macro to work. I can set it, but I can't use it since any additional key will trigger the pop_meta, it seems.

Code: Select all

    break SPACE
    push_meta clear_meta LALT
    set_meta LGUI
Is there even a correct way to do it?

User avatar

21 Jul 2016, 23:27

Im also on the lookout for an code:
How can I get "v" (or any other key) to act as v if tapped and act as Layer 1 or as CTRL key while heald? Are there any workarounds??


19 Aug 2016, 05:54

Wondering if anybody can give me a hand. I have a Monterey K104 that I just wired up to a Soarer's converter last night. Everything works except for the blank key in the left hand modifier group (where the windows key might normally be).

Firstly, how can I figure out if this key is even connected to anything? It sounds strange that there would be a key that didn't work, but I saw a thread where it was briefly mentioned that maybe this key wasn't jumpered on some boards source: wiki-talk-f33/monterey-k104-t7407.html. When I press the key, nothing registers on the computer, and nothing is printed when viewing using hid_listen. Does this mean that the key is not connected, or could it simply be not mapped (I haven't changed the config at all since flashing Soarer's to the ProMicro)? If it's not mapped, what should the scancode be?

Secondly, if the key is indeed not connected, how should I go about connecting it? I'd prefer to do something on the PCB. I can see traces that go to and from the key, but how do I figure out where they connect and how to hook them up? I guess if worst comes to worst, I could just run some wires directly from the switch to the aux input pins on the ProMicro, but I'd like to avoid this if at all possible.

Thanks in advance!

EDIT: Going to be a good netizen and update this with answers to my own questions.

Firstly, connectivity. You can see if the switch itself is working by placing a multimeter in continuity mode across the two terminals of the switch and pressing. If the switch is fine you should see continuity.

The way to test if the switch is connected to the rest of the board is to basically follow the circuit traces that run to it. One way of testing is to look for the main chip on the keyboard PCB and do a continuity test between each of the terminals of the switch and the main processing chip. The easiest way to do this is to put one test lead on the lead of the switch, and then just run the other test lead along the pins of the chip. Then repeat for the other switch lead. In my case, I found that one of the leads wasn't connected at all.

To answer my second question, it was easy enough for me to figure out where to bridge the connection. I traced the lead that didn't seem to be connected to anything backwards to another switch, but I found that there was no continuity between the leads despite an obvious trace on the PCB. Eventually I noticed that there were a few blobs of solder along that trace, and sure enough, there was no continuity between them. It seems like this was left as some sort of optional connection why by default (or at least on my copy of the board) wasn't bridged. As soon as I dropped a bit of solder there the key started working fine.

Hopefully that helps any other K104 owners out there!


02 Sep 2016, 03:41

I have a few questions about macros
  • [1]Can you cancel macros?

Code: Select all

macro F6 LSHIFT
	Press A
	Press A
	Press A
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Delay 250
	Press A
	Press A
	Press A
  • [2]Is it possible to have other keys trigger simultaneously while running a macro?
Wish Soarer was here. Feels like I missed the boat

User avatar

09 Sep 2016, 08:52

I've been trying to get the converter orihalcon made for the zentih z-10/dc-2014 for my zenith keyboard (http://www.ebay.com/itm/272328994093?_t ... EBIDX%3AIT). I had previously given up trying to get it to work, but since I've got some spare time before I start teaching again I thought I'd dig a little deeper and see if I can solve the issue.

Originally it did work, but some key presses would be missed/skipped - but then the next morning it wouldn't register any keypresses at all. Confusingly, though, the lock lights come on, and even the beeper occasionally sounds. HID Listen recognizes they keyboard with an ID of 0000, with set code 1 in XT, which seems correct, but nothing comes up when I press any keys. The ID of 0000 seems off as well.

Anyone have any suggestions on what I can do?

User avatar
Last Man Standing

04 Oct 2016, 11:28


I know Soarer is a bit obsolete as it's creator is not around, but for me it has been working so far with AT keyboards that I have been using with DIN connector. Now I wanted to hook some PS/2 keyboards using it. Our local electronic store had some Pololu A-Star 32U4 Micro controllers in stock, so I bought one and soldered PS/2 female connector into it.

I got firmware into the device just fine using Arduino Builder and manually giving the reset from ISP header, but when I tried to connect some of my PS/2 keyboards into the controller, I wasn't able to get any reasonable input from it. Both Num and Caps lock lit up, but they don't react into anything. Enter, space etc are giving wrong characters and also in some cases flooding it the PC. Same happens with rest of the keys.

I tried manually setting ifset to set2ext and also with force, but behavior didn't change anyhow.

With hid_listen I got some pretty strange codes. Here I connected the keyboard, then pressed enter twice, space twice and esc twice.

Code: Select all


remaining: 0000

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

wED rFA w02 rFA 
r1C +04 d04
r9C +00
r01 +42 d42
r39 +B3 dB3
Any ideas what could be causing this?

And yes, I have like n+x times checked that I have soldered everything properly, Data goes to PD0 and Clock into PD1. I have checked the pin layout from the out / socket side of the connector. Keyboards that I tried to use with it were Skidata and IBM Model M2, both PS/2 boards as we know.

User avatar

04 Oct 2016, 12:39


Check a few things on the Pro Micro (?) that you purchased. First, look at the solder joints. Second, check the pinout in Soarer's documentation to ensure that the Reset line is actually working. Third, check to see if any pull up resistors were used from +5v to Clock and Data. Their value should be around 1k Ohm if present.

My Pro Micro had a defective power supply that prevented it from working properly. After switching to a Teensy, all of my issues went away. ¯\_(ツ)_/¯


Soarer's converter isn't obsolete, per se. It does everything it needs to. It could use a port to a newer and cheaper chip, though!

Model M2s are notorious for having bad capacitors. It may be a case where both of your keyboards are defective and your converter is fine. That's immensely unlikely, but have you tested your keyboards with a desktop/different converter?

User avatar
Last Man Standing

04 Oct 2016, 13:01

@ohaimark, Thanks from fast reply. I will check these keyboards with some other device / adapter. I just don't have any around, that is actually the reason why I built this adapter. I think I have third PS/2 keyboard somewhere near by that I can test too.

Last time I checked these keyboards were fine, but it's been 2-3 months.

Post Reply

Return to “Workshop”