Geac 8340
-
- Location: San Francisco
- Main keyboard: Das Keyboard
- Main mouse: Logitech
- Favorite switch: MicroSwitch Hall Effect
- DT Pro Member: 0240
A library's worth of Geac 8000 series Public Enquiry Terminal (PET) keyboards showed up on eBay recently for a reasonable price.
The switches are Hi-Tek grid, with the expected fraction of broken corners. The PCB has some 74-series TTL, but no computing elements. Instead, the terminal needs to scan the matrix somewhat directly. In another post there was some interest in the details of how this works, so here goes.
Two input signals control the serial-to-parallel shift register U3 (74LS164).
The last bit into the SR (QA) selects one of two demultiplexers U1 and U2 (74LS156), roughly the left and ride sides of the keyboard.
The previous three bits (QB, QC, QD) are the select lines for both demuxes.
These four bits drive exactly one column in the matrix low and the rest high.
The first bit (QH) into the SR is not connected, but must be accounted for in serial loading.
The next three bits (QE, QF, QG) are the select lines for the multiplexer U4 (74LS251). They read one row of the matrix.
The output signal is the inverting output of the mux (W). It is high if the switch is closed at the selected position. The clock line also drives the mux's gate, so the output is hi-Z when not active. A pull-up resistor is therefore inappropriate; a pull-down resistor could be added, but isn't really necessary, provided the keyboard is always plugged in.
The choice of key codes and the row and column designations are arbitrary, provided that all 128 patterns are checked. The scheme here gives codes that (roughly) correspond to the physical layout of keys.
The remaining output gives the state of the jumper J2, which has a pull-up. Maybe this selected a French layout or something?
Any four GPIOs can be used. A quick QMK prototype uses the first Arduino ones. I chose an A-Star Micro here because the power pins are less in the way of the USB connector for this bare-bones converter. A Teensy or even Pro Micro would work fine.
With this scanning arrangement, every clock pulse reads the state of some key. I enumerated the key codes in the most straightforward way. This old TTL can still handle a clock faster than an ATMega32U4's 16MHz, so there's no performance issue. But it's presumably possible to devise a more clever CS undergrad quiz kind of de Bruijn sequence algorithm that accounts for the intermediate states and the fact that the eighth bit shifted out doesn't matter to visit all 128 keys in fewer than 1024 clock cycles.
I suspect that they are all the same model, but the one I snagged is 8340-01.
The keys are strikingly orange, so this must have been near a sunny window for decades. The red SEND key still manages to stand out.The switches are Hi-Tek grid, with the expected fraction of broken corners. The PCB has some 74-series TTL, but no computing elements. Instead, the terminal needs to scan the matrix somewhat directly. In another post there was some interest in the details of how this works, so here goes.
Two input signals control the serial-to-parallel shift register U3 (74LS164).
The last bit into the SR (QA) selects one of two demultiplexers U1 and U2 (74LS156), roughly the left and ride sides of the keyboard.
The previous three bits (QB, QC, QD) are the select lines for both demuxes.
These four bits drive exactly one column in the matrix low and the rest high.
The first bit (QH) into the SR is not connected, but must be accounted for in serial loading.
The next three bits (QE, QF, QG) are the select lines for the multiplexer U4 (74LS251). They read one row of the matrix.
The output signal is the inverting output of the mux (W). It is high if the switch is closed at the selected position. The clock line also drives the mux's gate, so the output is hi-Z when not active. A pull-up resistor is therefore inappropriate; a pull-down resistor could be added, but isn't really necessary, provided the keyboard is always plugged in.
The choice of key codes and the row and column designations are arbitrary, provided that all 128 patterns are checked. The scheme here gives codes that (roughly) correspond to the physical layout of keys.
The remaining output gives the state of the jumper J2, which has a pull-up. Maybe this selected a French layout or something?
Any four GPIOs can be used. A quick QMK prototype uses the first Arduino ones. I chose an A-Star Micro here because the power pins are less in the way of the USB connector for this bare-bones converter. A Teensy or even Pro Micro would work fine.
With this scanning arrangement, every clock pulse reads the state of some key. I enumerated the key codes in the most straightforward way. This old TTL can still handle a clock faster than an ATMega32U4's 16MHz, so there's no performance issue. But it's presumably possible to devise a more clever CS undergrad quiz kind of de Bruijn sequence algorithm that accounts for the intermediate states and the fact that the eighth bit shifted out doesn't matter to visit all 128 keys in fewer than 1024 clock cycles.
Last edited by MMcM on 21 Dec 2020, 19:17, edited 1 time in total.
-
- Location: United States
I haven't even gotten around to cleaning all the keycaps and you've already figured out the entire keyboard and how to convert it... I swear you're way too smart
I guess I'll be ordering two teensys now, one for your tandy conversion and one for this.
I guess I'll be ordering two teensys now, one for your tandy conversion and one for this.
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
I'm so relieved I wasn't the only one who bought one of these. My board and keycaps could use some retrobriting, but it's great to see the conversion is so straightforward. I wish more boards used the RJ12 cable (6 wires, not 4), they're still used for telephone data(?) lines, so they're cheap and fairly easy to find. Anything beats "mystery serial" connectors which would need an uncommon female connector to avoid hardwiring the converter.
The threading in the top shell on mine had several cracks, so I reinforced the outsides with JB weld. I probably should have used the clear epoxy for plastic, but I went with the original (because it smells better less bad )
I'm curious what information you've been able to find about the Geac terminals, I've found mention of a OLIS in reference to library systems.
I found a picture of a similar terminal (a similar but larger keyboard) referred to as Chester. The keyboard is absolutely massive next to the monitor.
https://www.library.rochester.edu/about ... u-met-alma
The threading in the top shell on mine had several cracks, so I reinforced the outsides with JB weld. I probably should have used the clear epoxy for plastic, but I went with the original (because it smells better less bad )
I'm curious what information you've been able to find about the Geac terminals, I've found mention of a OLIS in reference to library systems.
I found a picture of a similar terminal (a similar but larger keyboard) referred to as Chester. The keyboard is absolutely massive next to the monitor.
https://www.library.rochester.edu/about ... u-met-alma
- Attachments
-
- GEAC-Chester2 TT.jpg (27.77 KiB) Viewed 6769 times
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
I'm glad that despite only 13 of these coming up for sale there is so much interest in converting them. From what I've heard it took years for certain beamsprings to get converted, but this random library terminal board (with stackpole switches no less) has been cracked wide open remarkably quickly.
If you do make a new PCB I'd be very interested in buying one. Do check the fit of the F keys, on mine the alpha block fits perfectly, but one of the F key rows almost drags the side of the case.
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
I messaged the seller in hopes of finding more information about Geac terminals, and apparently have some larger Geac keyboards as well. Hopefully they come up for sale soon, the sublegends are pretty unique.
- Attachments
-
- s-l1600.jpg (284.7 KiB) Viewed 6629 times
- Polecat
- Location: Downstream from Silicon Valley
- Main keyboard: Monterey K104 Industrial Gray
- Main mouse: Logitech Optical
- Favorite switch: Early Alps SKCM
- DT Pro Member: -
- jsheradin
- Location: USA
I scanned and counted pixels on the case, switch grid, and PCB and everything seems to be standard 19.05mm/u. The right F row was spaced a little funky on the PCB at only ~0.94u. I rounded it up so it should better match the case. The arrow key column wasn't a clean fraction of a U in distance from the rest of the keys so I just went with what I could best measure it as on the PCB.
I'm gonna check the fit before adding traces and stuff but the measurements should be pretty spot on. I just need to figure out how to get KiCAD to output something that I can throw at a 3D printer :/
I'm gonna check the fit before adding traces and stuff but the measurements should be pretty spot on. I just need to figure out how to get KiCAD to output something that I can throw at a 3D printer :/
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
Glad I wasn't the only one with a misaligned F row
I'd love to buy one of these PCBs. Either from you if you end up with extras, or from JLCPCB if you share the files.
Is it possible to export the PCB as a DXF and extrude that into a model you could print? The final thickness will depend on what manufacturers offer, but as long as the diodes are cut flush it should fit as well as the original, right?
- jsheradin
- Location: USA
I'll definitely make the files available once I finish them. I think the minimum order quantity is 5 so I'll definitely have some extras!
I'm able to get the layers plotted to DXF and extrude but there doesn't seem to be an easy way to do that for the drill map. I'm probably just going to print the Cu mask layer. It's not as precise since all the holes are the size of the entire pad but should be enough for a sanity check.
The stock PCB is just standard 1.6mm available at any PCB shop. Going the next step up in thickness is ~4x the price on JLCPCB. Not worth the marginal added stiffness imo.
There should be plenty of room on the backside of the PCB for diodes since the board mounts to standoffs. The bottom of the switch grid has a convenient channel around each switch so there should be room for the diode legs to stick through the top a bit.
I'm able to get the layers plotted to DXF and extrude but there doesn't seem to be an easy way to do that for the drill map. I'm probably just going to print the Cu mask layer. It's not as precise since all the holes are the size of the entire pad but should be enough for a sanity check.
The stock PCB is just standard 1.6mm available at any PCB shop. Going the next step up in thickness is ~4x the price on JLCPCB. Not worth the marginal added stiffness imo.
There should be plenty of room on the backside of the PCB for diodes since the board mounts to standoffs. The bottom of the switch grid has a convenient channel around each switch so there should be room for the diode legs to stick through the top a bit.
- jsheradin
- Location: USA
Well the sanity check passed! The PCB won't be perfect but there's enough wiggle room that alignment can be made to look good. I finished up the PCB and ordered a set of 5 (the minimum); they should be here in about a week.
Here's the KiCad project and the gerbers that I sent out: https://github.com/jsheradin/geac8340-01 I'll throw whatever FW I end up using in that repo at some point too.
Side note, these keycaps bounced back really well on my sous vide retrobrite setup with the following:
~8% peroxide at 120F for ~96 hours on all keys
~8% peroxide at 135F for an additional 15 hours on all keys but the spacebar
I didn't do anything to the red key since it looks pretty alright to me.
Here's the KiCad project and the gerbers that I sent out: https://github.com/jsheradin/geac8340-01 I'll throw whatever FW I end up using in that repo at some point too.
Side note, these keycaps bounced back really well on my sous vide retrobrite setup with the following:
~8% peroxide at 120F for ~96 hours on all keys
~8% peroxide at 135F for an additional 15 hours on all keys but the spacebar
I didn't do anything to the red key since it looks pretty alright to me.
Spoiler:
- jsheradin
- Location: USA
Update on the PCB:
Got 5 in the mail from JLCPCB today. There's about 4mm that needs messaging around where the case screws in but other than that they seem like they fit fine.
Looks like stackpoles can't be disassembled once they're soldered so I'm going to get to cleaning the switches before I get it fully together and test.
Got 5 in the mail from JLCPCB today. There's about 4mm that needs messaging around where the case screws in but other than that they seem like they fit fine.
Spoiler:
- jsheradin
- Location: USA
I tore down the switches and ran them through an ultrasonic cleaner before I soldered everything in place. Threw on a quick QMK map and it works great! Switches are surprisingly smooth given their reputation. I got lucky with my board in that very few of the stems were cracked. I just put those on the F keys for now but I will probably try the collar fix at some point.
Eye candy:
I have a couple extra PCBs, PM me if you're interested. I'll just sell them at my break even cost.
I hereby dedicate the PCB design to public domain so feel free to modify the design or print your own.
Eye candy:
Spoiler:
I hereby dedicate the PCB design to public domain so feel free to modify the design or print your own.
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
Glad to see this thing works. Did you retrobrite the case at all?jsheradin wrote: ↑12 Jan 2021, 18:24I tore down the switches and ran them through an ultrasonic cleaner before I soldered everything in place. Threw on a quick QMK map and it works great! Switches are surprisingly smooth given their reputation. I got lucky with my board in that very few of the stems were cracked. I just put those on the F keys for now but I will probably try the collar fix at some point.
Eye candy:I have a couple extra PCBs, PM me if you're interested. I'll just sell them at my break even cost.Spoiler:
I hereby dedicate the PCB design to public domain so feel free to modify the design or print your own.
8% peroxide seemed to work really on the keycaps. How did you heat them for 4 days?
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
The diodes were simple enough, but how did you open the switches without damaging anything? I can't even seperate the individual switches that formed the right column.
- Attachments
-
- 20210122_031512.jpg (2.47 MiB) Viewed 5988 times
- jsheradin
- Location: USA
I left the 'waffle' assembly together and just pulled the sliders. There's two little clips on the bottom that hold in each one. I used some small needle-nose pliers to squeeze them together and they popped right out.
Here's a pic before I ran everything through an ultrasonic cleaner. That's as far as I tore it down.
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
The switches came apart without a hitch, but I'm still out of microcontrollers.jsheradin wrote: ↑23 Jan 2021, 19:07I left the 'waffle' assembly together and just pulled the sliders. There's two little clips on the bottom that hold in each one. I used some small needle-nose pliers to squeeze them together and they popped right out.
Here's a pic before I ran everything through an ultrasonic cleaner. That's as far as I tore it down.
Do I need a Teensy or would a promicro work as well? I've realized I have 10+ boards that need convertors of various kinds so if I can buy a bulk pack of promicros that would save me quite a bit of money.
- jsheradin
- Location: USA
The PCB layout will only fit a Teensy 2.0 but a Pro Micro will work just fine if you are willing to do some creative wiring/jumpers.Rayndalf wrote: ↑05 Mar 2021, 03:22The switches came apart without a hitch, but I'm still out of microcontrollers.Spoiler:
Do I need a Teensy or would a promicro work as well? I've realized I have 10+ boards that need convertors of various kinds so if I can buy a bulk pack of promicros that would save me quite a bit of money.
-
- Location: Texas
- Main keyboard: Kinesis Model 130
- Main mouse: Logitech M-S48, Razer Viper
- Favorite switch: MX Browns
- DT Pro Member: -
I realized I can buy probably not official Teensy 2.0s on Aliexpress for $15 shipped for 2, so I'll see how it works (in a month+ )jsheradin wrote: ↑05 Mar 2021, 14:45The PCB layout will only fit a Teensy 2.0 but a Pro Micro will work just fine if you are willing to do some creative wiring/jumpers.Rayndalf wrote: ↑05 Mar 2021, 03:22The switches came apart without a hitch, but I'm still out of microcontrollers.Spoiler:
Do I need a Teensy or would a promicro work as well? I've realized I have 10+ boards that need convertors of various kinds so if I can buy a bulk pack of promicros that would save me quite a bit of money.