Omnikey Ultra Gen4 - programming software? Way to reset?

Cattlesquat

16 Oct 2023, 22:21

Hi All,

I have a Northgate Omnikey Ultra "Gen 4" keyboard that is notionally programmable. However it has either been "misprogrammed" or else the chip is dead/semi-dead, meaning various silly things like "D key makes an S, G key makes an E, R key makes "Up", etc, etc.

My questions are:
(1) Does anyone have a link or copy of programming software that will work with Windows 7+? (I found a dead link out there somewhere, but so far haven't found a live one)
(2) Does anyone know a way to at least "factory reset" the Gen4?

Thanks,

Brian

User avatar
engr

17 Oct 2023, 00:22

The keyboard shortcuts for reset, etc. should be the same as for Avant Stellar (Press and hold the <Escape> key while turning on your system to do a factory reset). You can try this software if the link still works (I haven't tried it personally). Most likely the ROM chip has gone bad and you will have to desolder it; the keyboard will still work but will not be programmable. Bob Tibbetts used to remove them from all Ultra/Stellar boards he repaired because they are so prone to going bad.

Cattlesquat

17 Oct 2023, 04:04

Thanks - it's funny you mention Bob because I got this keyboard from him years ago. I suppose possibly before he started doing that by default.

Cattlesquat

17 Oct 2023, 04:10

Oh and alas, the software link is indeed dead -- that's the dead link I had found as well.

HOWEVER, I was able to get to the file successfully by going to the directory: https://www.lexitec.fi/xywrite/

kb_nerd

13 Nov 2023, 08:48

The software from the link in your last post is spot-on for Avant keyboards (Stellar, Prime). But, I never got the Avant software to work on any Omnikey keyboards.

This year I worked on a project to get some software running on newer Windows versions to program the Avant keyboards, and I got it running, with some limitations. I'll post the source code and documentation somewhere, when I get time.

As part of that, I did some tests by sending programming bytes to an Omnikey Ultra, and it seemed to respond to some commands but not in the same ways as the Avants. This led me to think the Ultras were in fact programmable somehow...

Just now I ran across this, which is the most complete Omnikey manual I think I've seen:

https://sandy55.telcontar.net/Omnikey_Ultra_102.pdf

It mentions a 'kbutil.exe' program (for DOS, I imagine). But, I couldn't find that anywhere online. I've owned Omnikeys and Avants since the early 90s and I don't remember ever seeing that utility myself. I wonder if someone on the forums has a copy?

I opened up my Ultra and it has an SCN8032 controller, which from what I can tell, is a ROM-less controller. Then it has a 27C64 ROM chip, so that must contain the firmware, but it's only UV-eraseable and so won't hold any programming info.

Based on that, if you pull the ROM chip or unsolder it (mine is in a socket), I wouldn't expect the keyboard to work at all. But I guess you could try it. Another thought might be to burn a new ROM -- there are firmware images I've seen on the web, for various Northgate models. (There are none for the Avants because they use a microcontroller with an on-board flash memory that's read-locked...)

So, getting back to your questions: I still don't know how you can program (or factory-reset) an Ultra through software, or what aspects of it are programmable. It doesn't appear to me that it can retain the programming after being powered off, although the above manual suggests it can.

Have you looked at the DIP switches in the back? At first I thought you might have it set to a Dvorak layout, but that doesn't match with your description.

Other than that... maybe check for shorts or wiring problems in the keyboard matrix? Based on the wrong keystrokes you mentioned, only S/D seem to be in the same row (going by the schematic in the above manual), so that's probably not it... but worth a check?

HTH,

-Paul

User avatar
Polecat

13 Nov 2023, 18:16

I just saw this thread; I've been out of town for a couple weeks. This sounds like a classic case of the EEPROM chip going bad. Removing that chip (the 8 pin 24C16, which is an EEPROM, not a flash chip) is the "sure thing" fix, but that kills the ability of the keyboard to have its keys reassigned by its internal programming routine. That's the closest thing to a factory reset you can do if holding Esc when booting doesn't clear the problem.

The KBUTIL file mentioned in the User's Guide was for earlier models, specifically the Gen2 and Gen3 with dipswitches on the back or under the badge. That file self-extracted and created a program that saved and loaded settings from your hard drive to the keyboard for "14 features" when the computer was booted (in DOS). There is no ability to save settings in the keyboard on Gen2 or Gen3 models like there is on the Gen4. I probably still have a copy of that utility, but it only worked in DOS, and only on the Gen2 or Gen3 models. Those were not true programmable keyboards in the sense that they could save settings internally. Only the Gen4 "P" (Programmable) suffix Northgates (101P, 102P, Ultra-TP) had that capability.

The "14 features" (that number may vary by keyboard and User Guide version) that could be saved on your hard drive by the DOS utility were those mentioned in the book. Typematic rate, function key modifiers, sticky keys, and layout options.

kb_nerd

16 Nov 2023, 00:55

Ok, after reading up on a bunch more of your (Polecat's) posts on these keyboards, I've learned a lot more and I think your assessment is correct.

My Ultra is a Gen2b, has a discrete ROM chip as I mentioned, and no SPI/flash chip, so it's not programmable.

I have a 102 which is a Gen3, with no discrete ROM chip -- it has an 8052B which has a built-in 8KB ROM, also no SPI flash chip, and so is also not programmable.

The OP's Gen4 should be programmable; what I'm curious about is, is its programming protocol the same as on the Avants? In other words, would the CVT/Avant software work for programming it? If so, then my software ought to work on it too...

Using the old Avant software is a pain on modern Windows versions... it doesn't seem to work directly from a VMWare Workstation VM, because VMWare emulates only the basic keyboard 'echo' (0xEE) command but won't pass other commands or responses through, to/from the keyboard.

I recommend running the Win2K/XP version of Avant's software (Avant.exe) to edit the .kbd file -- that runs on Win7, 32-bit or 64-bit, and should also work on Win10/11; then use the DOS USB stick method to run AVANTDWN to push the programming out to the keyboard.

Note this also requires an actual PS/2 port -- none of this works on any USB converter I'm aware of, since those don't have the ability to pass raw bytes between host software and the keyboard. That's another project I want to work on when I get time.

It sounds like the KBUTIL program was meant to run from a DOS autoexec.bat to set up the keyboard as the computer was booting up... but if that wasn't intended for Gen4 boards, I wonder what software they actually provided for those boards?

It seems there was an evolution of the programming capabilities of these boards around the time of the transition from Northgate to CVT... I wasn't aware of it back then -- I always thought the Avants were the first programmable ones. But they were obviously working on it before then...

User avatar
engr

16 Nov 2023, 02:25

I have successfully transplanted an EEPROM chip from Avant Prime into Avant Stellar (or was it the other way around?), and both functioned OK in terms of programmability. However, when I tried transplanting these chips into Northgate-branded Ultra-TP or 101P, the programmability did not work.

That implies that there have been some differences between Northgate-branded Gen4 boards (Ultra-TP, 101P) and CVT boards in terms of programmability.

User avatar
Polecat

16 Nov 2023, 03:36

kb_nerd wrote:
16 Nov 2023, 00:55

The OP's Gen4 should be programmable; what I'm curious about is, is its programming protocol the same as on the Avants? In other words, would the CVT/Avant software work for programming it? If so, then my software ought to work on it too...

Using the old Avant software is a pain on modern Windows versions... it doesn't seem to work directly from a VMWare Workstation VM, because VMWare emulates only the basic keyboard 'echo' (0xEE) command but won't pass other commands or responses through, to/from the keyboard.

I recommend running the Win2K/XP version of Avant's software (Avant.exe) to edit the .kbd file -- that runs on Win7, 32-bit or 64-bit, and should also work on Win10/11; then use the DOS USB stick method to run AVANTDWN to push the programming out to the keyboard.

Note this also requires an actual PS/2 port -- none of this works on any USB converter I'm aware of, since those don't have the ability to pass raw bytes between host software and the keyboard. That's another project I want to work on when I get time.

It sounds like the KBUTIL program was meant to run from a DOS autoexec.bat to set up the keyboard as the computer was booting up... but if that wasn't intended for Gen4 boards, I wonder what software they actually provided for those boards?

It seems there was an evolution of the programming capabilities of these boards around the time of the transition from Northgate to CVT... I wasn't aware of it back then -- I always thought the Avants were the first programmable ones. But they were obviously working on it before then...
I appreciate all the good info you've put together here. That expands on the little bit I had figured out, and it all sounds right to me.

Regarding the Avants being different than the Gen4 Northgates I believe engr has established that to be true. There are, or were bits and pieces online, mostly in old posts by Bill Ingold, who was Northgate's Director of Keyboard Engineering. Unfortunately Mr. Ingold is no longer with us, and some of the online stuff that used to be there is gone now.

The Gen4 Northgates are relatively rare, but I keep hoping someone here will find one "in the box" and share the software and documentation with us. I only own one Gen4 keyboard myself, and it's a (black) Avant Stellar. I'd like to compare the PC board on a Gen4 Northgate to the Avant, but so far I haven't seen a photo of the board on a Gen4.

User avatar
funkmon

16 Nov 2023, 04:48

I didn't even know they were rare. I have a Gen 4 Omnikey with no dip switches and I was like "what the heck is this?" I got it for like 50 bucks. I couldn't figure out how it worked or how to program it, and I'm, to an extent, glad I'm not the only one.

I pulled it out literally last night and went to hit a dip switch and I was like "oh yeah." How rare are they? Should I flip mine on the eBay?

kb_nerd

18 Nov 2023, 21:29

That's very interesting info...

engr - when you took the chips from the Prime/Stellar and tried putting them into the Northgate-branded keyboards, do you mean the 40-pin controller chip or the 8-pin memory chip, or both?

When you did that, did the Northgate keyboards work normally except for not being able to program them through software?

You probably already know this, but on my Avants, the 40-pin controller is an Atmel 89C52 (one's a 20MHz from 1998 and another is a 24MHz from 2006), which has 8KB of flash built in -- at least according to Atmel's current specs, although maybe it was EEPROM back when it was built? I'm going by this, for example:

https://www.mouser.com/datasheet/2/268/ ... 180666.pdf

That on-board 8KB memory stores the firmware for the keyboard, but on mine it was read-locked and so I couldn't read it to see what else might be in there in terms of programming capabilities or anything else.

Then, the 8-pin chip is a 24C16 as Polecat said, an EEPROM, which holds the keyboard's programming info -- key mappings, macros, repeat rate, validation time, comma/period lock and a few others. It sounds like the original ones were EEPROMs which had a limit of maybe 1000 write cycles? Now, there are flash-based replacements which should drop right in and last essentially forever; e.g.:

https://www.farnell.com/datasheets/305352.pdf

So, this all makes me wonder a few more things:

- What chips do the Northgate-branded Gen4s use? In particular, do they use a controller chip that's not read-locked, so that the firmware could be read out?

- Does anyone have software for the Northgate-branded Gen4s? Reverse-engineering that, if feasible, could reveal the programming protocol used on those boards.

To learn the Avant protocol, I approached it from a number of different angles: trying to RE the various versions of Avant's software for DOS, Win9x and Win2K/XP (ultimately it was the Win9x version that provided what was needed); reading the 8-pin chip after programming it in different ways; and deciphering the .kbd file format.

If we can come up with a copy of the original software for the Northgate-branded ones, and/or someone could read the firmware and EEPROM data off a Northgate-branded Gen4, then any or all of that could inform us about the differences between it and the Avant models... then maybe my code could be tweaked to support programming the Northgate ones in addition to the Avants...

User avatar
engr

19 Nov 2023, 02:48

kb_nerd wrote:
18 Nov 2023, 21:29
engr - when you took the chips from the Prime/Stellar and tried putting them into the Northgate-branded keyboards, do you mean the 40-pin controller chip or the 8-pin memory chip, or both?
When you did that, did the Northgate keyboards work normally except for not being able to program them through software?
I transplanted the 8-pin memory chips. I haven't tried the controller chips.
Correct, the keyboards worked as if the chip was completely removed, i.e. they could not be programmed via key combinations. I have never tried programming them through software.
If we can come up with a copy of the original software for the Northgate-branded ones, and/or someone could read the firmware and EEPROM data off a Northgate-branded Gen4, then any or all of that could inform us about the differences between it and the Avant models... then maybe my code could be tweaked to support programming the Northgate ones in addition to the Avants...
You may want to check with @hellothere, he was working on something along those lines.

User avatar
Polecat

19 Nov 2023, 03:37

Just an aside--I searched again and came up with a Geekhack build log which shows a couple photos of a Northgate Gen4 PC board:

https://geekhack.org/index.php?topic=95097.0

It appears the controller is an 80C52. The PC board is markedly different than the one in my Avant Stellar.

kb_nerd

19 Nov 2023, 09:25

Thanks, that's some more good info... aside from @hellothere's ROM dumps (which I think are for Gen1 or Gen2 models?), there are some here too, which you may already know about:

http://bitsavers.org/pdf/northgate/omnikey/firmware/

At some point I'll see if I can set up an 8051 SDK and try to figure out what programmability is in those versions...

Re. @applehugger's 101P - that's cool, I hadn't seen one of those before... and, both sides of the PCB look completely identical to my Avants -- at least I couldn't spot any real differences in the chips, component layout or matrix traces on the bottom.

So Polecat, those are different from your Stellar? Now I'm curious what you've got & how it's different...

Also, the 80C52 in the one in those photos, also has a program-lock capability plus encryption, so it might not be possible to read the firmware from that either.

I had read that you can pull one of these chips and send it to a company in China that will break the chip apart and go in with some kind of tools to read the ROM data from it... it destroys the chip, but then you can in theory burn a new one, modify the code, etc. I don't think I'm willing to go that far with any of my boards though :)

Somewhat related to all this, I'm trying to figure out where to upload all the info and code I have for these keyboards and their hardware, firmware and software... it's way too long for a forum post, probably, but I could put it on the wiki here? Source code too, or maybe put that on github? Any suggestions / guidance?

User avatar
Polecat

19 Nov 2023, 14:22

There were at least two different versions of the Avant PC boards. Probably the easiest way to tell them apart is the LED window in the up-arrow keycap. One version has the window towards the upper part of the cap, the other towards the lower. I can take some photos of the board in my Avant for comparison.

Edit: My Avant (black) has the up arrow LED on the bottom. No provision on the PC board to mount it the other way around. The controller is an Atmel AT89C52. The EEPROM is an RIC 24C16.

User avatar
dotdash

20 Nov 2023, 15:58

kb_nerd wrote:
19 Nov 2023, 09:25
I had read that you can pull one of these chips and send it to a company in China that will break the chip apart and go in with some kind of tools to read the ROM data from it... it destroys the chip, but then you can in theory burn a new one, modify the code, etc. I don't think I'm willing to go that far with any of my boards though :)
There are groups that do this to preserve old arcade games. You might be able to find someone in the emulation community that would be helpful. Here is a page with some great descriptions of the process https://team-europe.blogspot.com/

kb_nerd

21 Nov 2023, 07:58

That's cool... I wouldn't have thought to attempt to take apart one of those chips myself, but I guess it's possible...

I feel like long-term though, since PS/2 ports are already effectively dinosaurs, the best solution for these keyboards is going to be to come up with a PS2-to-USB adapter that includes a capability to send/receive raw bytes to/from the keyboard under software control, so it can be programmed through software; or, to devise a new set of firmware for the 89C52 that's capable of being programmed in some other way.

Polecat, that's interesting, and it kind of sounds like the keyboards with the LED in the upper position are programmable with Avant's software, but the ones with it in the lower position are not, because they use some different programming protocol and software?

As far as resurrecting the EEPROM if it dies: I did a test on my Stellar and pulled the FM24C16 chip (I already had it in a socket for experimenting) and erased it with all FF's (which I think is how they come brand-new?) I put it back in the keyboard and when I powered it up, it blinked all the LEDs about 4-5 times and then it reset itself to the factory keyboard layout. It worked fine, and I was able to reprogram the layout and settings with my software, and that worked fine too.

So, this gives me hope that a replacement 24C16 chip can work in these (at least the Avants). I don't know why the Northgate-branded ones wouldn't work the same way.

I started a wiki page for the Stellar; it's pretty basic and needs photos and a sidebar and more... but hopefully I didn't make any egregious mistakes yet :)

wiki/CVT_Avant_Stellar

User avatar
Polecat

22 Nov 2023, 05:14

kb_nerd wrote:
21 Nov 2023, 07:58
That's cool... I wouldn't have thought to attempt to take apart one of those chips myself, but I guess it's possible...

I feel like long-term though, since PS/2 ports are already effectively dinosaurs, the best solution for these keyboards is going to be to come up with a PS2-to-USB adapter that includes a capability to send/receive raw bytes to/from the keyboard under software control, so it can be programmed through software; or, to devise a new set of firmware for the 89C52 that's capable of being programmed in some other way.

Polecat, that's interesting, and it kind of sounds like the keyboards with the LED in the upper position are programmable with Avant's software, but the ones with it in the lower position are not, because they use some different programming protocol and software?

As far as resurrecting the EEPROM if it dies: I did a test on my Stellar and pulled the FM24C16 chip (I already had it in a socket for experimenting) and erased it with all FF's (which I think is how they come brand-new?) I put it back in the keyboard and when I powered it up, it blinked all the LEDs about 4-5 times and then it reset itself to the factory keyboard layout. It worked fine, and I was able to reprogram the layout and settings with my software, and that worked fine too.

So, this gives me hope that a replacement 24C16 chip can work in these (at least the Avants). I don't know why the Northgate-branded ones wouldn't work the same way.

I started a wiki page for the Stellar; it's pretty basic and needs photos and a sidebar and more... but hopefully I didn't make any egregious mistakes yet :)

wiki/CVT_Avant_Stellar
I'm very happy to see someone taking this several levels beyond my own abilities. Everything, including the wiki page, rings true to me.

For what it's worth all the programmable Northgates and Avants I've documented say "Rev. 1.0" on the label.

One of the previous comments was something to the effect of "only Bill Ingold can program the EEPROMs", so perhaps there's a password or back door to get in and mess with things? If true that's probably the earlier Northgates, since the Avant worked with an erased chip.
Last edited by Polecat on 23 Nov 2023, 03:32, edited 1 time in total.

User avatar
engr

23 Nov 2023, 00:35

Interesting. At one point I tried putting a blank 24C16 chip into one of my Gen4 keyboards (can't remember which one though) and it didn't work. Maybe it wasn't formatted/erased correctly? At one point I emailed Michael Lueck (who used to repair Omnikeys before Bob Tibbetts) and he said that the chip would have to be programmed in a specific way.

User avatar
paddle0

30 Sep 2024, 16:30

kb_nerd wrote:
13 Nov 2023, 08:48
It mentions a 'kbutil.exe' program (for DOS, I imagine). But, I couldn't find that anywhere online. I've owned Omnikeys and Avants since the early 90s and I don't remember ever seeing that utility myself. I wonder if someone on the forums has a copy?
I think I've managed to find it, more or less!

http://cd.textfiles.com/smsharew/UTIL1/KB_OLD.ZIP

Code: Select all

KB_OLD.ZIP 	63604	Utilities For NorthGate OMNIKEY Keyboards
Sure enough, there's all sorts of good stuff inside:

Code: Select all

% unzip -l KB_OLD.ZIP 
Archive:  KB_OLD.ZIP
  Length      Date    Time    Name
---------  ---------- -----   ----
     1190  1990-12-12 14:33   LITES.DOC
      233  1989-12-26 11:14   POURVOUS.COM
      938  1990-12-12 12:00   POURVOUS.DOC
      701  1990-12-13 10:05   README.DOC
     1143  1990-12-12 10:36   SFSET.DOC
     2759  1990-03-14 09:28   LITES.EXE
    70043  1990-12-11 15:47   OC.EXE
    42531  1990-12-05 10:25   SFSET.EXE
     1071  1990-12-12 12:00   OC.DOC
---------                     -------
   120609                     9 files
I am able to run these utilities under FreeDOS 1.3 with my Omnikey Inverted-T Ultra in the PS/2 port.

Unfortunately, it would seem your "autoexec.bat" suspicion is correct: as far as I can tell, changes don't survive keyboard reboots. So the usefulness is limited… I had really been hoping that there somehow was some kind of persistent configuration memory hidden in there. :lol:

Maybe somebody could figure out what instructions are getting sent by the DOS utilities, and then they could be issued by a Soarer's or Hasu's TMK PS/2 to USB keyboard converter? It's frustrating that Northgate went to all the trouble to include special function keys, but made them essentially useless by default. :(

User avatar
Polecat

01 Oct 2024, 07:12

Wow, great find, thanks for sharing! The 1989-90 dates put this in the range of the Gen2 Northgates. I'll have to dig out a DOS computer to see if it works on the Gen3 models also.

The Gen2 Northgates came with several firmware versions on the labels, but the Gen3 models all seem to have the same version (7.03). Gen2 versions in my database are 1.02, 3.04, 3.05, 3.06, 3.13, 3.14, 3.31, 4.05, 6.03, 6.04, 6.05, and 6.05F. I don't have examples of all of those, so this may be an interesting exercise, and not as simple as we want it to be. Also the labels on the cases don't always match the labels on the EPROMs, for what that's worth.

User avatar
paddle0

17 Oct 2024, 17:53

I couldn't let it rest, so I constructed this little friend out of a Teensy 2.0 and a PS/2 breakout board.
ps2_pal_lil.jpeg
ps2_pal_lil.jpeg (187.58 KiB) Viewed 1171 times
I flashed it with some custom code to dump PS/2 commands using the Arduino ps2dev library. I connected the device's USB to Computer 1 and opened up the Serial Monitor in Arduino IDE.

Then, I powered down Computer 2, connected my PS/2 Pal to its PS/2 port, and booted up FreeDOS 1.3. Luckily, FreeDOS does have some limited support for USB keyboards, so I was still able to operate it.

I ran the SFSET utility, and Omnikey's secrets were revealed to me!

It turns that out the scancode for the SFSET command, to change the Special Function Key behavior, is 233 (0xE9).

The next message is a number, indicating which behavior to set:

Code: Select all

SFSET N - Normal: 0
SFSET S - Shift: 1
SFSET C - Ctrl: 2
SFSET A - Alt: 4
In writing this up now, I notice that the number 3 is missing. Maybe there's a secret, undocumented option?

Earlier, I had tried decompiling the SFSET utility, but hadn't enjoyed much progress deciphering it. Now that I know the actual scancode, I can clearly make it out in decompiled source code:

Code: Select all

ax = 0xe9                //int16_t arg_6h
Armed with this knowledge, I was finally able to reprogram my Hasu's PS/2 to USB adapter to issue this command to my Inverted-T Ultra at startup. Here's the modification to tmk/tmk_keyboard:

Code: Select all

diff --git a/converter/ps2_usb/matrix.c b/converter/ps2_usb/matrix.c
index c441a89b..3df20f5f 100644
--- a/converter/ps2_usb/matrix.c
+++ b/converter/ps2_usb/matrix.c
@@ -64,6 +64,9 @@ static uint8_t matrix[MATRIX_ROWS];
 #define PRINT_SCREEN   (0xFC)
 #define PAUSE          (0xFE)
 
+// Set Special Function Keys for Northgate Omnikey Keyboards
+#define SFSET          (0xE9)
+
 static bool is_modified = false;
 
 
@@ -75,6 +78,12 @@ void matrix_init(void)
     // initialize matrix state: all keys off
     for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
 
+    // Initialize Omnikey
+    _delay_ms(500);
+    ps2_host_send(SFSET);
+    ps2_host_send(1);  // SFSET S
+            // asks the Special Function keys to emit shift-Fn
+
     return;
 }
The half-second delay does appear to be necessary.

A few additional discoveries:
  • FreeDOS 1.3 seems to issue a lot of PS/2 command scancodes on startup, including the LED set command. Unexpectedly, it also issues the Omnikey-specific SFSET command! Presumably its scancode wasn't always such a big secret (either that or one of the utilities modified FreeDOS's startup routine, without my realizing it.)
  • The Omnikey LITES utility also works on my decidedly not Northgate-made Unicomp PS/2 Model M keyboard. I guess this makes sense, since the LED command is standardized, but it still surprised me.
I'm excited to start mapping all my Omnikey's special function keys, now that they're actually distinct from the Ordinary ones! Anybody know where I can get a good re-labelable function template overlay? :)

User avatar
Polecat

18 Oct 2024, 04:42

Excellent, thanks for moving this forward! I haven't had a chance to break out my Northgates to see if the F-key utility works on both Gen2 and Gen3 Ultra models. The Ultra-T was Gen3 only, so it will be the Gen2 Ultra that needs checking.

Bob Tibbetts at Northgate Keyboard Repair sold new F-key overlays (in three sections, not full width). Sadly Bob passed away, but I believe the company was revived by a new owner, so those may still be available.

User avatar
paddle0

18 Oct 2024, 05:29

polecat wrote:Excellent, thanks for moving this forward!
My pleasure!
polecat wrote:Bob Tibbetts at Northgate Keyboard Repair sold new F-key overlays (in three sections, not full width). Sadly Bob passed away, but I believe the company was revived by a new owner, so those may still be available.
Interesting, thanks for the tip! I think the new owner is Legacy Keyboard and Repair, but they don't list any on their website. I'll keep an eye out on auction sites.

I managed to find a picture of the overlays on the Wayback Machine. Bob called them "Replacement Function key strips". I guess these were intended to replace the integrated mylar strip on the Omnikey 102, located where the function keys live on a 101 and where the special function keys live on the Ultra?

I've never laid my hands on a 102… do you know if you can write on their strips with erasable marker?

Maybe I could just use a strip of transparency film…

User avatar
Polecat

18 Oct 2024, 05:58

Sorry, I misunderstood you on the overlays. I know that an Ultra doesn't have the write-on inserts, honest! I don't know about Bob's strips, but the originals were made of the same plastic as the LED overlays. Focus used similar ones, as did Datacomp. An erasable marker will just wipe off. I think they were intended to be used with a permanent marker. Some early 102 models had pre-printed legends on the strips, probably to match the menus on Northgate computers. You could try using some Scotch tape and a permanent marker over the strips to make them "reusable".

There were lots of F-key overlays (the kind you were actually asking about!) back in the DOS days. Most were pre-printed for existing programs, but there were some blank ones also to make your own custom versions. Might be worth a look on ebay. Some were peel-and-stick, others just laid over the F-keys. It's not uncommon to see a yellowed keyboard with the area that was under the overlay not yellowed. That's one of the reasons I have trouble trusting the people who say to put a keyboard in the sun or UV light to undo yellowing.

User avatar
paddle0

18 Oct 2024, 14:14

I believe it! :)

The wrap-around, hug-style overlays are retro & cool, but I suspect one of Bob's 102 replacement strips (or indeed a piece of dry erase tape, etc.) would work fine in lieu of them, if I were to stick one down inside the Ultra's pencil-holder channel.

My primary goal here is to get something that won't leave a lot of gunk behind on the case when I inevitably want to replace it.

User avatar
Polecat

18 Oct 2024, 18:12

Bob's multi-piece strips are too wide to fit there, but one from a Focus (FK-2001, etc.) or Datacomp (DFK-191, etc.) would probably work.

User avatar
paddle0

21 Oct 2024, 05:38

After giving up on a few approaches, I ended up sawing a 2cm wide (tall?) strip of craft wood. It fit snugly in the Ultra's top channel, and even left room for a pencil and eraser with which to keep the legend up to date! :)
F-key overlay.jpeg
F-key overlay.jpeg (542.96 KiB) Viewed 767 times
With my firmware mod in place, I was able to map the special function keys using xkb on Ubuntu. Here is what I did, in case anyone would ever like to reproduce this:

First, you'll want an alternate method to access your machine in case you screw anything up and can't type any more! The easiest way to do this is probably to enable remote ssh access.

Next, locate your xkb keyboard symbol file. In my case, it was /usr/share/X11/xkb/symbols/us

If you're using X11 (Ubuntu 20 and earlier, except 17 I think?), make a backup and use sudo to edit this file in place.

If you're using Wayland (Ubuntu 21 and later, and also maybe 17?), you'll need to copy the keyboard symbol file to ~/.config/xkb/symbols/ and edit it there. (The location could be different, if you've set XDG_HOME_CONFIG to something else)

Here was what I added inside xkb_symbols "basic":

Code: Select all

key <FK01> { [ F1, U2026 ] }; # horizontal ellipsis
key <FK02> { [ F2, U22EE ] }; # vertical ellipsis
key <FK03> { [ F3, U00D7 ] }; # multiplication sign
key <FK04> { [ F4, U2192 ] }; # rightwards arrow
key <FK05> { [ F5, U266A ] }; # eighth note
key <FK06> { [ F6, U2126 ] }; # Ohm
key <FK07> { [ F7, U02BB ] }; # okina
key <FK08> { [ F8, U262E ] }; # peace symbol
key <FK09> { [ F9, U2713 ] }; # check mark
key <FK10> { [ F10, U2020 ] }; # dagger
key <FK11> { [ F11, U263A ] }; # smiley face
key <FK12> { [ F12, U2639 ] }; # frowning face
Where the left side of each line is the key to remap, the first item within the brackets is the unshifted target (in this case, the same key), and the second item within the brackets is the shifted target (in this case, the hexadecimal index of a unicode character.)

Everything after the number sign is a comment.

This worked great, with the caveat that unicode characters bearing hex indices of greater than 4 digits caused serious problems. My workaround was not to use any :)

When I went to configure this once again for my Mac Mini, I also made the unwelcome discovery that my tmk_keyboard firmware edit doesn't seem to work on macOS, for some reason. I tried increasing the initial delay, to no avail.

If I perform SFSET manually using the orange button and Pause key on the Ultra, I am able to map the special function keys in macOS using ~/Library/KeyBindings/DefaultKeyBinding.dict

Incidentally, I have tested the firmware mod successfully on Windows 10. But I'm not sure how to map the special function keys there without installing custom software.

User avatar
paddle0

21 Oct 2024, 22:43

I fixed the macOS issue!

https://gist.github.com/dhorlick/f42133 ... 3c761a2bb9

The solution was to wait after matrix scanning starts (not before.)

It can also now tolerate the PS/2 connector being unplugged and plugged back in (which power-cycles the keyboard.)

I promise to stop hijacking the thread with my weird side-project now.

Post Reply

Return to “Keyboards”