geekhack

geekhack Projects => Making Stuff Together! => Topic started by: Tarzan_ on Wed, 16 October 2013, 09:03:03

Title: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Wed, 16 October 2013, 09:03:03
Thread to document the process of modifying a Televideo terminal keyboard to use a Teensy controller - AKA the lowpoly method.  The Televideo keyboard I'm using as a project foundation uses complicated linear Futuba switches and SS-profile keycaps. 
[attach=1]
(http://en.wikipedia.org/wiki/TeleVideo (http://en.wikipedia.org/wiki/TeleVideo))

Progress to date:
a. Desoldered switches/removed stock PCB
[attach=2]

b. Painted stock plate
[attach=3]

c. Lubed and replaced switches
[attach=4]

d. Retr0brited case
e. Wired rows with diodes
[attach=5][attach=6]
[attach=7][attach=8]

f. Wired columns
[attach=9][attach=10]
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: SpAmRaY on Wed, 16 October 2013, 09:14:45
http://geekhack.org/index.php?topic=49503.0

^^ you guys should get together!!
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Wed, 16 October 2013, 09:49:04
http://geekhack.org/index.php?topic=49503.0

^^ you guys should get together!!

I had a request to split the thread - the Keyboards forum will have the specifications information for Televideo, and the Making Stuff Together will have the hardwiring mod, painting, etc.
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Wed, 16 October 2013, 11:37:54
I think I've spotted one error already; I have a total of 25 rows+columns with this wiring layout.  However, the Teensy 2.0 controllers I have only have 19 (?) usable pins.

I'm going to have to resolder some of the columns, see if I can get the number of columns down to 10 or so.  Perhaps I can put all the number pad into one column, then combine pairs of columns into one with 10 switches per...  That would give me 9 columns/6 rows.
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Thu, 17 October 2013, 07:30:42
A pic to show how grubby the cases were when I got them...

[attachimg=1]

And how it looks after a peroxide bath

[attachimg=2]

Okay, that's not completely accurate.  ;D  These are two different cases, the one shown in the first picture is still a little beige along the front edge, which is why I chose one of the other two as the case for the Teensy modded keyboard.  The case in the second picture is one of the two from the OP, as you can see it's cleaned up very nicely. 

The keycaps also cleaned up very well, the ones in the second pic are the original ones shown on the really sun-damaged case.

Edit: I realized the pictures I was referring to, in the original post, are actually in a different thread.  My bad.  This is the case shown above (cleaned version) as I got it from Ebay:
[attachimg=3]
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Thu, 17 October 2013, 07:47:20
I wired up the Teensy controller last night, using one of the GH breakout boards.  I realized after I finished that I could have just used the Teensy as-is, since I don't plan to drill into the case to mount the mini PCB.  However, it was fun to see how it went together, nice bit of soldering practice.  (Flux everywhere, even after scrubbing with alcohol...)

[attachimg=1]
[attachimg=2]

There is plenty of room inside the case, as the back of the case is quite tall.  Ignore the sloppy wiring, still figuring out how to best line everything up. 
[attachimg=3]

One idea I've been considering is to mount the Teensy upside down over the old speaker grill, enabling the reset button to be accessed with a thin screwdriver.  The top case is completely separate from the lower case/keyboard assembly, the keyboard works fine with the top removed, so I may just use a dab or two of hot glue to hold the Teensy and skip the remote access idea.

Work in progress...
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Thu, 17 October 2013, 08:09:16
Couple of notes, for anyone thinking of using Futuba switches or Televideo keyboards:

1. The switch pins/lugs/screws transmit heat really well.  I found this out the hard way - when I'd finished soldering the top row of switches, half of them wouldn't depress fully, switch stems were binding and sticking.  Taking a switch apart I found out why - the inside plastic of the case was partially melted, warping the channel for the stem slider.  Damage doesn't show from the outside, the pin conducted the heat from the soldering inside the switch case.  Sure glad I bought some extras... 

2. Whoever designed the Return key is an idiot.   Notice that little "ear" that sticks up from the keycap, to bridge the gap between Line Feed and Clear Space?  Yeah, that's just for show.  If you actually try to depress the switch and your fingertip is on that section of the keycap, it doesn't work, the key just binds.  Don't even get me started on the fact that this keycap is a different profile from the rest of the row...   :mad:
[attach=1]
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Thu, 17 October 2013, 22:14:40
No nifty graphics for this update, just a wall of text.  Got the Teensy to work, using the test LED applet, and downloaded a bunch of utilities - not really sure what I'll end up using.

Started with the tmk_keyboard GH60 config file, currently stuck on defining the pins for rows and columns.  Mapped all the keys to rows/columns and pins on the Teensy in an Excel file, now I need to figure out what values to edit in the GH60 files to create a Televideo-specific hex file for the Teensy bootloader....

Gah.  Too tired to focus.  Enough for one day.
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Photoelectric on Thu, 17 October 2013, 22:17:01
This is one classy keyboard! (well, two). Good luck with the programming.
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Dubsgalore on Thu, 17 October 2013, 22:40:03
Those caps are really awesome....

Great work, nice use of the teensy!
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: rowdy on Thu, 17 October 2013, 22:48:57
That Return really looks like it doesn't belong there, but given the shape, it is probably unique and is the only one that would fit!
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Fri, 18 October 2013, 14:07:26
Edited the keymap.c file:

Code: [Select]
/* Layer 0: Default Layer
     * ,------------------------------------------------------------------------------------------------------------------.
     * |SCKLOCK| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| INSERT| DELETE| INSERT| DELETE| CLEAR| CLEAR_AGAIN| EXECUTE|
     * |------------------------------------------------------------------------------------------------------------------|
     * |ESC|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  MINUS|  EQUAL|  GRAVE|  BSLASH|  BSPACE|   KP_7|   KP_8|   KP_9|    |
     * |------------------------------------------------------------------------------------------------------------------|
* |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  LBRACKET| SEPARATOR| CLEAR|  KP_4|  KP_5|  KP_6|                  |
     * |------------------------------------------------------------------------------------------------------------------|
     * |CAPSLOCK|   A|  S|  D|  F|  G|  H|  J|  K|  L| RCTRL| SCOLON| QUOTE| RETURN| RETURN| STOP|  KP_1|  KP_2|  KP_3|   |
     * |------------------------------------------------------------------------------------------------------------------|
     * |LSHIFT  |  Z|  X|  C|  V|  B|  N|  M|  COMMA| PRIOR| DOT| SLASH| RSHIFT | RBRACKET| DELETE| KP_DOT| KP_0| KP_COMMA|
     * |------------------------------------------------------------------------------------------------------------------|
     * |PSCREEN | LALT|                     SPACE|                     HOME| DOWN| UP| LEFT| RIGHT|                       |
     * `------------------------------------------------------------------------------------------------------------------'
     */
KEYMAP(SCKLOCK, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, INSERT, DELETE, INSERT, DELETE, CLEAR, CLEAR_AGAIN, EXECUTE, \
ESC,  1,  2,  3,  4,  5,  6,  7,  8,  9,  0,  MINUS,  EQUAL,  GRAVE,  BSLASH,  BSPACE,   KP_7,   KP_8,   KP_9,  \
Tab,  Q,  W,  E,  R,  T,  Y,  U,  I,  O,  P,  LBRACKET, SEPARATOR, CLEAR,  KP_4,  KP_5,  KP_6, \                 
CAPSLOCK, A,  S,  D,  F,  G,  H,  J,  K,  L,  RCTRL,  SCOLON, QUOTE, RETURN, RETURN, STOP,  KP_1,  KP_2,  KP_3,  \
LSHIFT,   Z,  X,  C,  V,  B,  N,  M,  COMMA,  PRIOR,  DOT, SLASH, RSHIFT , RBRACKET, DELETE, KP_DOT, KP_0, KP_COMMA,  \
PSCREEN,  LALT,                     SPACE,                     HOME, DOWN, UP, LEFT, RIGHT),

Anyone know if this is how the keys are supposed to be defined?  Or do I need to edit the upper section of the file;

Code: [Select]
#define KEYMAP( \
    K11, K10, K20, K30, K40, K41, K51, K50, K60, K70, K80, K81, K61, K02, \
    K12, K13, K23, K33, K43, K42, K52, K53, K63, K73, K83, K82, K62, K01, \
    K15, K14, K24, K34, K44, K45, K55, K54, K64, K74, K84, K85, K06, \
    K67, K16, K26, K36, K46, K47, K57, K56, K66, K76, K87, K32, K35, \
    K75, K22, K00, K07, K21, K04, K37, K27, K17 \
) { \
    { KC_##K00, KC_##K01, KC_##K02, KC_NO,    KC_##K04, KC_NO,    KC_##K06, KC_##K07 }, \
    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_NO,    KC_##K26, KC_##K27 }, \
    { KC_##K30, KC_NO,    KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
    { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
    { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
    { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_NO,    KC_##K66, KC_##K67 }, \
    { KC_##K70, KC_NO,    KC_NO,    KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_NO    }, \
    { KC_##K80, KC_##K81, KC_##K82, KC_##K83, KC_##K84, KC_##K85, KC_NO,    KC_##K87 } \
}

#define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)]))

I'm using the tmk_keyboard macway files as a template. 

https://github.com/tmk/tmk_keyboard/tree/master/keyboard/macway (https://github.com/tmk/tmk_keyboard/tree/master/keyboard/macway)
Title: Re: Televideo Terminal Keyboard - Hardwired Version
Post by: Tarzan_ on Fri, 18 October 2013, 19:35:11
Closing out this thread.