{"id":1280,"date":"2023-12-18T14:51:23","date_gmt":"2023-12-18T05:51:23","guid":{"rendered":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/?p=1280"},"modified":"2023-12-23T09:40:06","modified_gmt":"2023-12-23T00:40:06","slug":"next_keyboard_v1","status":"publish","type":"post","link":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/2023\/12\/18\/next_keyboard_v1\/","title":{"rendered":"The way to a modified keyboard (Reiwa NeXT keyboard V1)"},"content":{"rendered":"<div class=\"entry-content\" itemprop=\"text\">\nThis article is the 15th day of the <a href=\"https:\/\/adventar.org\/calendars\/9326\">advent calendar of Studio Aquatan 2023<\/a>.<\/p>\n<p>This is Prof. omzn (keyboard modification studies).<\/p>\n<h2>Heisei Version of the NeXT Keyboard<\/h2>\n<p>When I was still young, in the 2000s, I enjoyed modifying old computers to convert them into the latest PCs.<br \/>\nI modified NeXT cube, NeXT station, Macintosh LC II (I think), Mac G4 cube, etc. to make a mini PC.<br \/>\nDespite all the hard work, we produced a terrible machine that could not deliver much performance, and would run out of control quickly because of its broken thermal design.<br \/>\nI feel bad for the old computers that were sacrificed.<\/p>\n<p>The NeXT keyboard was something like a Mac-style ADB, but at the time it was just a useless keyboard.<br \/>\nThen, young omzn had a flash of inspiration.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-scaled.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-1024x768.jpeg\" alt=\"\" width=\"640\" height=\"480\" class=\"alignleft size-large wp-image-1285\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-1024x768.jpeg 1024w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-300x225.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-768x576.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-1536x1152.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-2048x1536.jpeg 2048w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-640x480.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2414-48x36.jpeg 48w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><br clear=\"both\" \/><\/p>\n<p>&#8220;I think I can get a controller from a junk PS\/2 keyboard lying around here and port it to the NeXT keyboard.&#8221;<\/p>\n<p>He immediately investigated the keyboard mechanism, and found that the keyboard had a key matrix decoder on it, and, unfortunately, the key matrices were all different.<\/p>\n<p>&#8220;I want to make the most of this PS\/2 keyboard I&#8217;ve taken apart&#8230;&#8221;<\/p>\n<p>Here, omzn had another flash of inspiration.<\/p>\n<p>&#8220;I see, I can rewire the NeXT side to fit this PS\/2 keyboard.&#8221;<\/p>\n<p>Thus was born the Heisei version of the NeXT keyboard.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-scaled.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-1024x768.jpeg\" alt=\"\" width=\"640\" height=\"480\" class=\"alignleft size-large wp-image-1283\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-1024x768.jpeg 1024w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-300x225.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-768x576.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-1536x1152.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-2048x1536.jpeg 2048w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-640x480.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2254-48x36.jpeg 48w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><br \/>\n<br clear=\"both\" \/><\/p>\n<p>I thought it would be OK to use PS\/2, which was the standard at the time, but the era soon gave way to USB, and the NeXT keyboard was used for nearly 20 years with the USB conversion. However, because it was originally a PC\/AT keyboard, it did not work well with Macs, and I had to use it with key-swapping software. In addition, there was no way to access the function keys, which sometimes caused me a great deal of trouble.<\/p>\n<p>Therefore, for 20 years, I had been thinking, &#8220;Someday, I would like to remake this keyboard into a modern keyboard&#8230;.&#8221;<\/p>\n<h2>Reiwa NeXT Keyboard V1<\/h2>\n<p>In the fall of 2023, <a href=\"https:\/\/esa-pages.io\/p\/sharing\/8538\/posts\/1285\/adbeccc68076374986a4.html\">Yuyu showed me a keyboard that he had made by himself<\/a>, which ignited my heart, and I started to aim for a complete transition to a self-made keyboard.<\/p>\n<p>Basically, what we need to do is the same as before, which is to make a matrix decoder that matches the physical matrix. QMK provides an easy mechanism to do this.<\/p>\n<h2>Layout<\/h2>\n<p>The keyboard looks like a normal keyboard, except that the Function keys are missing, and the backquote is on the numeric keypad, but that&#8217;s OK.<\/p>\n<h2>Physical Switches<\/h2>\n<p>The NeXT keyboard uses ALPS cream axes. The light click feeling is very addictive.<br \/>\n(For more information about ALPS axis, please visit <a href=\"https:\/\/mousefan.telcontar.net\/alpsk.htm\">this site<\/a>.)<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-300x300.jpeg\" alt=\"\" width=\"300\" height=\"300\" class=\"alignleft size-medium wp-image-1316\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-300x300.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-1024x1024.jpeg 1024w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-150x150.jpeg 150w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-768x768.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-1536x1536.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-2048x2048.jpeg 2048w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-640x640.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-48x48.jpeg 48w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-50x50.jpeg 50w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2421-75x75.jpeg 75w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Matrix Analysis<\/h2>\n<p>The above of the following figure shows the matrix of a PS\/2 keyboard that I had posted on my web page 20 years ago.<br \/>\nThe matrix was so extravagantly constructed that it would have required 25 matrix pins as it is.<br \/>\nI was able to reduce the number of columns by three, since the columns can simply be merged where they do not conflict with each other even if they take ORs (see the bottom of the figure). (bottom of the figure).<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-1024x438.png\" alt=\"\" width=\"640\" height=\"274\" class=\"alignleft size-large wp-image-1292\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-1024x438.png 1024w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-300x128.png 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-768x328.png 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-1536x657.png 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-2048x876.png 2048w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-640x274.png 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.02.25-48x21.png 48w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>This still requires 22 GPIOs.<br \/>\nThe Pi Pico has 26 GPIOs, so there are still 4 GPIOs left over for this application. We can increase the number of functions by allocating them to LED driving and I2C.<\/p>\n<h2>Hardware creation<\/h2>\n<h3>Put Pi Pico on the board.<\/h3>\n<p>Cut the razor cable connected to the PS\/2 controller, and connect it to Pi Pico&#8217;s GPIOs.<br \/>\nThis is the first prototype, so we soldered the cable as it is, but it would be better to make the cable removable with a socket.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-scaled.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-768x1024.jpeg\" alt=\"\" width=\"640\" height=\"853\" class=\"alignleft size-large wp-image-1287\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-768x1024.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-225x300.jpeg 225w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-1152x1536.jpeg 1152w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-1536x2048.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-640x853.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-300x400.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-36x48.jpeg 36w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2403-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><br clear=\"both\" \/><\/p>\n<h3>Install the USB terminal<\/h3>\n<p>3D print the base of the Pi Pico and make the USB port. The photo shows the prototype in red, but the final model will be in black.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-scaled.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-768x1024.jpeg\" alt=\"\" width=\"640\" height=\"853\" class=\"alignleft size-large wp-image-1288\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-768x1024.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-225x300.jpeg 225w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-1152x1536.jpeg 1152w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-1536x2048.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-640x853.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-300x400.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-36x48.jpeg 36w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2408-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><br clear=\"both\" \/><\/p>\n<p>The final shape looks like this. Compared to before modification, it looks much cleaner now that the extra board is gone.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-scaled.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-1024x768.jpeg\" alt=\"\" width=\"640\" height=\"480\" class=\"alignleft size-large wp-image-1294\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-1024x768.jpeg 1024w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-300x225.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-768x576.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-1536x1152.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-2048x1536.jpeg 2048w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-640x480.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2419-48x36.jpeg 48w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><br \/>\n<br clear=\"both\"\/><\/p>\n<h2>Configuration of QMK<\/h2>\n<h3>Configuration of the keyboard<\/h3>\n<ul>\n<li>Define MATRIX_HAS_GHOST for a matrix without diodes, like this keyboard.<\/li>\n<li>The LED of CapsLock is controlled by GP0.<\/li>\n<\/ul>\n<p><script src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/plugins\/embed-extended\/assets\/js\/embed.js?ver=1.4.0\"><\/script><br \/>\n<iframe class=\"ee-iframe\" sandbox=\"allow-scripts\" security=\"restricted\"\n\tsrc=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-admin\/admin-ajax.php?action=embed_extended_iframe&#038;url=https:\/\/github.com\/omzn\/next_keyboard_v1\/blob\/main\/config.h#secret=660d2687aa3ee\" title=\"config.h\" data-secret=\"660d2687aa3ee\"\n\twidth=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"\n\tdata-class=\"wp-embedded-content\"><\/iframe><\/p>\n<h3>Keymap<\/h3>\n<p>The keymap is written in the same way as the previous matrix.<\/p>\n<ul>\n<li>Use NeXT Power key as Fn key.<\/li>\n<li>Page up, Page down for Volume up, Volume down (Fn key is the original function)<\/li>\n<li>Brightness up, Brightness down as Home, End (press Fn for original function)<\/li>\n<li>Fn + number&#8221; for &#8220;F1~F10<\/li>\n<li>Left Command key alone for &#8220;Eisuji&#8221;, Right Command key alone for &#8220;Kana<\/li>\n<li>The left Command key alone is &#8220;Eisuji&#8221;, the right Command key alone is &#8220;Kana&#8221;, and so on.<\/li>\n<li>The Esc area is somewhat special, with a single press of Esc, Shift + Esc for &#8220;~&#8221;, and Shift + Alt + Esc for &#8220;\uff40&#8221;.<\/li>\n<\/ul>\n<p><script src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/plugins\/embed-extended\/assets\/js\/embed.js?ver=1.4.0\"><\/script><br \/>\n<iframe class=\"ee-iframe\" sandbox=\"allow-scripts\" security=\"restricted\"\n\tsrc=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-admin\/admin-ajax.php?action=embed_extended_iframe&#038;url=https:\/\/github.com\/omzn\/next_keyboard_v1\/blob\/main\/keymaps\/via\/keymap.c#secret=660d26890dfb9\" title=\"keymap.c\" data-secret=\"660d26890dfb9\"\n\twidth=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"\n\tdata-class=\"wp-embedded-content\"><\/iframe><\/p>\n<p>The correspondence between the GPIO and the matrix to be used is written in <code>info.json<\/code>.<\/p>\n<p><script src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/plugins\/embed-extended\/assets\/js\/embed.js?ver=1.4.0\"><\/script><br \/>\n<iframe class=\"ee-iframe\" sandbox=\"allow-scripts\" security=\"restricted\"\n\tsrc=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-admin\/admin-ajax.php?action=embed_extended_iframe&#038;url=https:\/\/github.com\/omzn\/next_keyboard_v1\/blob\/main\/info.json#secret=660d268a4648a\" title=\"info.json\" data-secret=\"660d268a4648a\"\n\twidth=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"\n\tdata-class=\"wp-embedded-content\"><\/iframe><\/p>\n<h3>Creating graphical key layout with KLE<\/h3>\n<p>Create a layout in <a href=\"http:\/\/www.keyboard-layout-editor.com\/\">KLE<\/a> for GUI when you change the key layout in VIA or Remap.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-1024x428.png\" alt=\"\" width=\"640\" height=\"268\" class=\"alignleft size-large wp-image-1296\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-1024x428.png 1024w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-300x125.png 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-768x321.png 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-1536x642.png 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-2048x856.png 2048w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-640x267.png 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/2023-12-05-at-13.31.04-48x20.png 48w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><br clear=\"both\" \/><\/p>\n<p>The key is to write the coordinates of the matrix in the Legend of the keytop.<br \/>\nThe matrix of the PS\/2 controller does not match the physical layout at all.<\/p>\n<h3>Setting up VIA<\/h3>\n<p>Create <code>via.json<\/code> file. This is used to change the keymap in GUI with tools such as Remap.<br \/>\nThe contents of this file contains the key arrangement data created by KLE, the keyboard name, Vender ID, Product ID, and matrix of matrix.<\/p>\n<p><script src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/plugins\/embed-extended\/assets\/js\/embed.js?ver=1.4.0\"><\/script><br \/>\n<iframe class=\"ee-iframe\" sandbox=\"allow-scripts\" security=\"restricted\"\n\tsrc=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-admin\/admin-ajax.php?action=embed_extended_iframe&#038;url=https:\/\/github.com\/omzn\/next_keyboard_v1\/blob\/main\/v1_via.json#secret=660d268b4a7e7\" title=\"v1_via.json\" data-secret=\"660d268b4a7e7\"\n\twidth=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"\n\tdata-class=\"wp-embedded-content\"><\/iframe><\/p>\n<h2>The keyboard is ready to use!<\/h2>\n<p>After burning the firmware, the keyboard should be ready for use.<\/p>\n<pre><code>qmk flash -kb next_keyboard_v1 -km via\n<\/code><\/pre>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-scaled.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-768x1024.jpeg\" alt=\"\" width=\"640\" height=\"853\" class=\"alignleft size-large wp-image-1308\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-768x1024.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-225x300.jpeg 225w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-1152x1536.jpeg 1152w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-1536x2048.jpeg 1536w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-640x853.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-300x400.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-36x48.jpeg 36w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2424-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><br clear=\"both\" \/><\/p>\n<p>The source code is available on GitHub.<\/p>\n<p><script src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/plugins\/embed-extended\/assets\/js\/embed.js?ver=1.4.0\"><\/script><iframe loading=\"lazy\" class=\"ee-iframe\" sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-admin\/admin-ajax.php?action=embed_extended_iframe&#038;url=https:\/\/github.com\/omzn\/next_keyboard_v1#secret=660d268c71c10\" title=\"GitHub - omzn\/next_keyboard_v1\" data-secret=\"660d268c71c10\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" data-class=\"wp-embedded-content\"><\/iframe> <\/p>\n<h2>(Extra) Adding an OLED panel<\/h2>\n<p>The keyboard by itself is a little bit lonely, so I added a HUD-like display using a transparent OLED. This is a bit of a long story.<\/p>\n<p><a href=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-954x1024.jpeg\" alt=\"\" width=\"640\" height=\"687\" class=\"alignleft size-large wp-image-1311\" srcset=\"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-954x1024.jpeg 954w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-280x300.jpeg 280w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-768x824.jpeg 768w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-1432x1536.jpeg 1432w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-1909x2048.jpeg 1909w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-640x687.jpeg 640w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-300x322.jpeg 300w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106-45x48.jpeg 45w, https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/IMG_2457-scaled-e1701753403106.jpeg 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p><br clear=\"both\" \/><\/p>\n<p><iframe loading=\"lazy\" title=\"NeXT keyboard with a transparent OLED display\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/Xo495xB14XQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><br clear=\"both\" \/><\/p>\n<p>Actually, this story was just a prelude.<br \/>\nThe main story will be in the next article.<\/p>\n<p>See you!\n<\/div>\n","protected":false},"excerpt":{"rendered":"<div class=\"entry-summary\" itemprop=\"text\">\n<p>This article is the 15th day of the advent calendar of Studio Aquatan 2023. This is Prof. omzn (keyboard modification studies). Heisei Version of the NeXT Keyboard When I was still young, in the 2000s, I enjoyed modifying old computers to convert them into the latest PCs. I modified NeXT cube, NeXT station, Macintosh LC II (I think), Mac G4 cube, etc. to make a mini PC. Despite all the hard work, we produced a terrible machine that could not deliver much performance, and would run out of control quickly because of its broken thermal design. I feel bad for the old computers that were sacrificed. The NeXT keyboard was &#8230;<\/p>\n\n<\/div>\n","protected":false},"author":1,"featured_media":1373,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_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_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[21,11,7],"tags":[],"class_list":["post-1280","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-iot","category-misc","category-software","entry-lead"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp\/wp-content\/uploads\/2023\/12\/NeXT-1.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6EDR2-kE","_links":{"self":[{"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/posts\/1280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/comments?post=1280"}],"version-history":[{"count":48,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/posts\/1280\/revisions"}],"predecessor-version":[{"id":1411,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/posts\/1280\/revisions\/1411"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/media\/1373"}],"wp:attachment":[{"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/media?parent=1280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/categories?post=1280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/se.is.kit.ac.jp\/~o-mizuno\/wp-json\/wp\/v2\/tags?post=1280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}