{"id":614,"date":"2020-01-14T21:52:07","date_gmt":"2020-01-14T21:52:07","guid":{"rendered":"https:\/\/justanotherelectronicsblog.com\/?p=614"},"modified":"2020-01-14T21:52:08","modified_gmt":"2020-01-14T21:52:08","slug":"reverse-engineering-an-old-keyboard","status":"publish","type":"post","link":"https:\/\/justanotherelectronicsblog.com\/?p=614","title":{"rendered":"Reverse engineering an old keyboard"},"content":{"rendered":"\n<p>Recently I got an old keyboard from the 1980s, it has a 20 pin ribbon cable connector, weights almost 3kg&#8217;s and has no information on Google. This should be fun.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1024x768.jpg\" alt=\"\" class=\"wp-image-623\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1024x768.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-300x225.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-768x576.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1536x1152.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The keyboard in question is a Computervision branded one, though the PCB says it&#8217;s an Amkey MPNK-68. Looking at the insides, the date codes on the circuit board are from 1984 and 1985, meaning this keyboard is probably from the end of the 1980s. Taking a look at the keycaps and all the special functions, it was most likely used for a terminal. <\/p>\n\n\n\n<p>Now to reverse engineer it. A few tools are required to do so:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>A multimeter.<\/li><li>A logic analyzer, like a Saleae Logic.<\/li><li>Some screwdrivers to take the keyboard apart.<\/li><li>A power suply, most likely 5V<\/li><\/ol>\n\n\n\n<p>Very simply put, the steps are as follows:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Open the keyboard<\/li><li>See what the pinout of the connector is.<\/li><li>Power the keyboard.<\/li><li>Hook up a logic analyzer to all signal pins.<\/li><li>Figure out how it works, is it a serial protocol, parallel, something else.<\/li><li>Build a converter using a microcontroller board like an Arduino.<\/li><\/ol>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Open the keyboard.<\/h2>\n\n\n\n<p>The easiest step as this keyboard was easy to open, several philips screws undone and the bottom came off, another few and the whole keyboard was disassembled.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3557-1024x768.jpg\" alt=\"\" class=\"wp-image-624\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3557-1024x768.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3557-300x225.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3557-768x576.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3557-1536x1152.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3557-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3558-1024x768.jpg\" alt=\"\" class=\"wp-image-625\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3558-1024x768.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3558-300x225.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3558-768x576.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3558-1536x1152.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3558-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3559-1024x768.jpg\" alt=\"\" class=\"wp-image-626\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3559-1024x768.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3559-300x225.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3559-768x576.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3559-1536x1152.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3559-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Check the pinout<\/h2>\n\n\n\n<p>First and most important, see where the power is going. To do so I looked up the datasheet of the <a href=\"https:\/\/www.ti.com\/lit\/ds\/symlink\/sn74ls04.pdf\">7404<\/a> ICs that are close to the connector, looked at the GND and 5V pin on those and probed from there to the connector.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3562-1024x768.jpg\" alt=\"\" class=\"wp-image-627\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3562-1024x768.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3562-300x225.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3562-768x576.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3562-1536x1152.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3562-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p> This gave me a few pins with GND and 5V. Next I probed all connector pins, following the traces, to the nearby IC&#8217;s. In the end the pinout is as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"426\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_223941-1024x426.png\" alt=\"\" class=\"wp-image-628\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_223941-1024x426.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_223941-300x125.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_223941-768x320.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_223941.png 1132w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Power the keyboard<\/h2>\n\n\n\n<p>Looking at the IC&#8217;s used, it&#8217;s 1 microcontroller and some logic gates. They all operate on 5V, meaning that the keyboard can be powered using 5V. To be safe, I used a lab power supply with the current limit on 100mA. After hooking this up to the keyboard and seeing no smoke or high current, I pressed the shift lock key and was greeted with a nice red LED. Nice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Hook up a logic analyzer<\/h2>\n\n\n\n<p>Looking at the rest of the pins, 7 are connected to outputs of 7404 inverter gates and 2 are going to a microcontroller. This means it could either be a serial protocol on those two pins, or some parallel protocol using almost all of the pins. As I have a 16 bit Saleae logic analyzer, I have the luxury of just hooking all of them to the logic analyzer. So let&#8217;s see what we get.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"402\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/logic-1024x402.jpeg\" alt=\"\" class=\"wp-image-618\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/logic-1024x402.jpeg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/logic-300x118.jpeg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/logic-768x301.jpeg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/logic.jpeg 1287w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I pressed several keys at random, and it seems to be some parallel protocol on the 7 pins from the 7404 chips, one of the two lines from the microcontroller does nothing so far, one has a small pulse on every key press, cool.<\/p>\n\n\n\n<p>After pressing every key, it seems the blank key is connected directly to the second line from the microcontroller. Pressing is turns the line high and releasing it makes it go back low again.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"513\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_195619-1024x513.png\" alt=\"\" class=\"wp-image-619\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_195619-1024x513.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_195619-300x150.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_195619-768x385.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_195619.png 1049w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Figure out how it works<\/h2>\n\n\n\n<p>Part of this is done already, except for 1 blank key, the keyboard uses a 7 bit parallel protocol with a separate line to indicate a key event.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"491\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_201010.png\" alt=\"\" class=\"wp-image-620\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_201010.png 612w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/Screenshot_20200114_201010-300x241.png 300w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><figcaption>Zooming in on an event.<\/figcaption><\/figure>\n\n\n\n<p>This behaviour is almost always true, except for the modifiers. Pressing shift, shift lock, ctrl or tty lock do not generate an event, instead they modify the code the other keys output.<br>All other keys generate an event and output a parallel code on the 7 other lines. This code remains on the lines until the next key is pressed.<\/p>\n\n\n\n<p>So to read this keyboard in a microcontroller, an input pin used as interrupt, and in the interrupt read in the 7 line key code should work. After that it would be needed to map that to a PS\/2 or USB protocol so it would work on a modern computer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: build a converter<\/h2>\n\n\n\n<p>While reverse engineering the keyboard, I noticed some keys don&#8217;t work at all. Sadly the key switches in the keyboard are foam and foil type keyswitches and the foam does not last forever. Re-doing all the foam is needed to get the keyboard in working order. Because of that, I have not finished a converter yet, but I have finished code that spits out the pressed key to serial. The code can be found below for reference.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int busbits[7] = {8, 7, 6, 5, 4, 3, 9};\nint keyEvent = 2;\nint blankKey = 12;\n\n\/\/This maps the read code to ascii. \nint keymap[] = \n{\n  32, 32, 32, 32, 32, 32, 32, 32,           \/\/0-7\n  64, 68, 65, 69, 66, 70, 32, 71,           \/\/8-15\n  32, 32, 32, 13, 10, 32, 32, 32,           \/\/16-23\n  72, 76, 73, 77, 74, 78, 75, 32,           \/\/24-31\n  32, 32, 32, 32, 32, 32, 32, 32,           \/\/32-39\n  79, 84, 81, 85, 82, 86, 83, 87,           \/\/40-47\n  32, 32, 32, 32, 32, 32, 32, 32,           \/\/48-55\n  88, 32, 89, 93, 90, 94, 91, 127,          \/\/56-63\n  32, 36, 32, 37, 34, 38, 35, 39,           \/\/64-71\n  32, 100, 97, 101, 98, 32, 32, 103,        \/\/72-79\n  40, 44, 41, 32, 42, 46, 43, 47,           \/\/80-87\n  104, 108, 105, 109, 106, 110, 107, 111,   \/\/88-95\n  48, 52, 49, 53, 50, 54, 51, 55,           \/\/96-103\n  112, 116, 113, 117, 114, 118, 115, 119,   \/\/104-111\n  56, 60, 57, 32, 58, 62, 59, 63,           \/\/112-119\n  120, 32, 121, 125, 122, 126, 123, 8       \/\/120-127\n};\n\nvoid setup() {\n  Serial.begin(115200);\n  for (int i = 0; i &lt; 7; ++i)\n  {\n    pinMode(busbits[i], INPUT);\n  }\n  pinMode(blankKey, INPUT);\n  pinMode(keyEvent, INPUT_PULLUP);\n  attachInterrupt(digitalPinToInterrupt(keyEvent), keyPressed, RISING); \/\/interrupt for key event.\n}\n\n\/\/Ugly global variables that should never be used.\nint keyread = 0;\nint oldKeyread = 0;\nint ctrlPressed = 0;\nstatic int blankKeyPressed = 0;\nint event = 0;\n\nvoid loop() {\n  \/\/Read the blank key first, only throw an event when going from unpressed to pressed.\n  if(digitalRead(blankKey) &amp;&amp; (blankKeyPressed == 0))\n  {\n      blankKeyPressed = 1;\n      Serial.println(\"magic blank key pressed\");\n      event = 1;\n  }\n  else if((!digitalRead(blankKey) &amp;&amp; (blankKeyPressed == 1)))\n  {\n    blankKeyPressed = 0;\n  }\n\n  \/\/If either the blank key or another key (in the below interrrupt handler) is pressed, print it out.\n  if(event)\n  {\n    if(blankKeyPressed == 1)\n    {\n      Serial.println(\"magic blank key pressed\");\n    }\n    else\n    {\n      if(ctrlPressed)\n      {\n        Serial.println(\"ctrl pressed\");\n      }\n      Serial.write(keymap[keyread]);\n      Serial.println(\" \");\n    }\n    Serial.flush();\n    event = 0;\n  }\n       \n}\n\nvoid keyPressed()\n{\n  event = 1;\n  keyread = 0;\n  ctrlPressed = 0;\n  for (int i = 0; i &lt; 7; ++i)\n  {\n    int keyval = digitalRead(busbits[i]);\n    keyread += (keyval &lt;&lt; i);\n  }\n  \n  Serial.println(keyread);\n\n  \/\/ctrl raises the key value by 72, rolls over on 128. ctrl only modifies a to z and ^{} keys.\n  \/\/This ugly thing takes care of that.\n  if(keymap[keyread] == 32 &amp;&amp; keyread != 64) \n  {\n    oldKeyread = keyread;\n    if((keyread + 72) >= 128)\n    {\n      keyread = keyread - 72;\n    }\n    else\n    {\n      keyread = keyread + 72;\n    }\n    if((keymap[keyread] &lt;= \"z\") || (keymap[keyread] >= \"a\") || (keymap[keyread] == \"^\") || (keymap[keyread] == \"{\") || (keymap[keyread] == \"}\") || (keymap[keyread] == \"@\"))\n    {\n      ctrlPressed = 1;\n    }\n    else\n    {\n      keyread = oldKeyread;\n    }\n  }\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Recently I got an old keyboard from the 1980s, it has a 20 pin ribbon cable connector, weights almost 3kg&#8217;s and has no information on Google. This should be fun. The keyboard in question is a Computervision branded one, though the PCB says it&#8217;s an Amkey MPNK-68. Looking at the insides, the date codes on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-614","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Reverse engineering an old keyboard - jaeblog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/justanotherelectronicsblog.com\/?p=614\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reverse engineering an old keyboard - jaeblog\" \/>\n<meta property=\"og:description\" content=\"Recently I got an old keyboard from the 1980s, it has a 20 pin ribbon cable connector, weights almost 3kg&#8217;s and has no information on Google. This should be fun. The keyboard in question is a Computervision branded one, though the PCB says it&#8217;s an Amkey MPNK-68. Looking at the insides, the date codes on [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/justanotherelectronicsblog.com\/?p=614\" \/>\n<meta property=\"og:site_name\" content=\"jaeblog\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-14T21:52:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-14T21:52:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1024x768.jpg\" \/>\n<meta name=\"author\" content=\"riktw\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"riktw\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614\"},\"author\":{\"name\":\"riktw\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"headline\":\"Reverse engineering an old keyboard\",\"datePublished\":\"2020-01-14T21:52:07+00:00\",\"dateModified\":\"2020-01-14T21:52:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614\"},\"wordCount\":752,\"commentCount\":2,\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/IMG_3556-1024x768.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614\",\"name\":\"Reverse engineering an old keyboard - jaeblog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/IMG_3556-1024x768.jpg\",\"datePublished\":\"2020-01-14T21:52:07+00:00\",\"dateModified\":\"2020-01-14T21:52:08+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#primaryimage\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/IMG_3556-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/IMG_3556-scaled.jpg\",\"width\":2560,\"height\":1920},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=614#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reverse engineering an old keyboard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\",\"name\":\"jaeblog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\",\"name\":\"riktw\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reverse engineering an old keyboard - jaeblog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/justanotherelectronicsblog.com\/?p=614","og_locale":"en_US","og_type":"article","og_title":"Reverse engineering an old keyboard - jaeblog","og_description":"Recently I got an old keyboard from the 1980s, it has a 20 pin ribbon cable connector, weights almost 3kg&#8217;s and has no information on Google. This should be fun. The keyboard in question is a Computervision branded one, though the PCB says it&#8217;s an Amkey MPNK-68. Looking at the insides, the date codes on [&hellip;]","og_url":"https:\/\/justanotherelectronicsblog.com\/?p=614","og_site_name":"jaeblog","article_published_time":"2020-01-14T21:52:07+00:00","article_modified_time":"2020-01-14T21:52:08+00:00","og_image":[{"url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1024x768.jpg","type":"","width":"","height":""}],"author":"riktw","twitter_card":"summary_large_image","twitter_misc":{"Written by":"riktw","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#article","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=614"},"author":{"name":"riktw","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"headline":"Reverse engineering an old keyboard","datePublished":"2020-01-14T21:52:07+00:00","dateModified":"2020-01-14T21:52:08+00:00","mainEntityOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=614"},"wordCount":752,"commentCount":2,"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1024x768.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/justanotherelectronicsblog.com\/?p=614#respond"]}]},{"@type":"WebPage","@id":"https:\/\/justanotherelectronicsblog.com\/?p=614","url":"https:\/\/justanotherelectronicsblog.com\/?p=614","name":"Reverse engineering an old keyboard - jaeblog","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#primaryimage"},"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-1024x768.jpg","datePublished":"2020-01-14T21:52:07+00:00","dateModified":"2020-01-14T21:52:08+00:00","author":{"@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"breadcrumb":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/justanotherelectronicsblog.com\/?p=614"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#primaryimage","url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-scaled.jpg","contentUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/01\/IMG_3556-scaled.jpg","width":2560,"height":1920},{"@type":"BreadcrumbList","@id":"https:\/\/justanotherelectronicsblog.com\/?p=614#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/justanotherelectronicsblog.com\/"},{"@type":"ListItem","position":2,"name":"Reverse engineering an old keyboard"}]},{"@type":"WebSite","@id":"https:\/\/justanotherelectronicsblog.com\/#website","url":"https:\/\/justanotherelectronicsblog.com\/","name":"jaeblog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/justanotherelectronicsblog.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b","name":"riktw","url":"https:\/\/justanotherelectronicsblog.com\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=614"}],"version-history":[{"count":8,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/614\/revisions"}],"predecessor-version":[{"id":631,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/614\/revisions\/631"}],"wp:attachment":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}