{"id":1125,"date":"2010-08-11T22:07:25","date_gmt":"2010-08-11T22:07:25","guid":{"rendered":"http:\/\/really.zonky.org\/?p=1125"},"modified":"2021-08-28T21:09:17","modified_gmt":"2021-08-28T21:09:17","slug":"unicom-122-key-keyboard-hacking","status":"publish","type":"post","link":"https:\/\/really.zonky.org\/?p=1125","title":{"rendered":"Unicomp 122-Key Keyboard Layout &#8220;Hacking&#8221;"},"content":{"rendered":"<p><em>Ten years ago? Bloomin&#8217; heck! Still as this still seems to get frequent hits, I suppose quick update is in order &#8211; I no longer use the Unicomp &#8220;naked&#8221; but go through a Soarer converter which is an easier way of mapping the keys and allows macros to be added.<\/em><\/p>\n<p>Thanks to <a href=\"http:\/\/geekhack.org\/showthread.php?t=10985\">these guys<\/a> (the thread eventually gets to the meaty details), I have changed my Unicomp 122-key keyboard (UB40T56) from a funky &#8220;be friendly to Windows IBM Terminal emulators&#8221; mode into something a little more interesting. Specifically each key should be sending a unique keycode &#8211; which if you select the right model from Unicomp, you&#8217;ll get.<\/p>\n<p>This can be done by opening up the keyboard and removing the jumper from JP3 (just below a small chip and close to the scroll LED). In addition, it is strongly suggested that you set the kernel parameter &#8220;atkbd.softraw=0&#8221; which can be done with Ubuntu 10.04 with the following :-<\/p>\n<ol>\n<li>Edit <em>\/etc\/default\/grub<\/em> and change the variable <em>GRUB_CMDLINE_LINUX_DEFAULT<\/em> to include &#8220;atkbd.softraw=0&#8221; at the end of what is already there.<\/li>\n<li>Finish editing and run <em>grub-update<\/em> and finally reboot.<\/li>\n<\/ol>\n<p>Without this, <em>showkey -s<\/em> only shows the scancodes of keys that the kernel knows about &#8211; not what scancodes are sent by the keyboard! It is possible to show the unknown scancodes by enabling the i8042 module debug mode, but <em>atkbd.softraw<\/em> does the same thing more effectively.<\/p>\n<p>This is currently a work in progress, and will need further checking before it can be taken as gospel, but &#8230;<\/p>\n<table border=\"1\" align=\"centre\">\n<tbody>\n<tr>\n<th>Group<\/th>\n<th>Key<\/th>\n<th>Make<\/th>\n<th>Break<\/th>\n<th>Keycode<\/th>\n<\/tr>\n<tr>\n<td colspan=\"5\" bgcolor=\"purple\">Function Keys<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F13<\/td>\n<td>5b<\/td>\n<td>db<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F14<\/td>\n<td>5c<\/td>\n<td>dc<\/td>\n<td>95<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F15<\/td>\n<td>5d<\/td>\n<td>dd<\/td>\n<td>183<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F16<\/td>\n<td>63<\/td>\n<td>e3<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F17<\/td>\n<td>64<\/td>\n<td>e4<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F18<\/td>\n<td>65<\/td>\n<td>e5<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F19<\/td>\n<td>66<\/td>\n<td>e6<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F20<\/td>\n<td>67<\/td>\n<td>e7<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F21<\/td>\n<td>68<\/td>\n<td>e8<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F22<\/td>\n<td>69<\/td>\n<td>e9<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F23<\/td>\n<td>6a<\/td>\n<td>ea<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F24<\/td>\n<td>6b<\/td>\n<td>eb<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>F1<\/td>\n<td>3b<\/td>\n<td>bb<\/td>\n<td>59<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F2<\/td>\n<td>3c<\/td>\n<td>bc<\/td>\n<td>60<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F3<\/td>\n<td>3d<\/td>\n<td>bd<\/td>\n<td>61<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F4<\/td>\n<td>3e<\/td>\n<td>be<\/td>\n<td>62<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F5<\/td>\n<td>3f<\/td>\n<td>bf<\/td>\n<td>63<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F6<\/td>\n<td>40<\/td>\n<td>c0<\/td>\n<td>64<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F7<\/td>\n<td>41<\/td>\n<td>c1<\/td>\n<td>65<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F8<\/td>\n<td>42<\/td>\n<td>c2<\/td>\n<td>66<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F9<\/td>\n<td>43<\/td>\n<td>c3<\/td>\n<td>67<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F10<\/td>\n<td>44<\/td>\n<td>c4<\/td>\n<td>68<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F11<\/td>\n<td>57<\/td>\n<td>d7<\/td>\n<td>87<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>F12<\/td>\n<td>58<\/td>\n<td>d8<\/td>\n<td>88<\/td>\n<\/tr>\n<tr>\n<td colspan=\"5\" bgcolor=\"purple\">Left Keypad (Top left is &#8220;Esc&#8221;)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Esc<\/td>\n<td>7e<\/td>\n<td>fe<\/td>\n<td bgcolor=\"red\"><em>121<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Cent<\/td>\n<td>76<\/td>\n<td>f6<\/td>\n<td>85<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Print Screen<\/td>\n<td>72<\/td>\n<td>f2<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Pause<\/td>\n<td>e1 1d 45<\/td>\n<td>e1 9d c5<\/td>\n<td>119<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Print<\/td>\n<td>74<\/td>\n<td>f4<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Help<\/td>\n<td>6d<\/td>\n<td>ed<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Record<\/td>\n<td>e0 2a e0 37<\/td>\n<td>e0 b7 e0 aa<\/td>\n<td bgcolor=\"red\"><em>99<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Play<\/td>\n<td>6f<\/td>\n<td>ef<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>GUI (Windows)<\/td>\n<td>75<\/td>\n<td>f5<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Menu<\/td>\n<td>6c<\/td>\n<td>ec<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td colspan=\"5\" bgcolor=\"purple\">Editing Pad (between QWERTY and Number Pad)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Backtab<\/td>\n<td>5a<\/td>\n<td>da<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Insert<\/td>\n<td>e0 49<\/td>\n<td>e0 c9<\/td>\n<td bgcolor=\"red\"><em>104<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>PageUp<\/td>\n<td>e0 51<\/td>\n<td>e0 d1<\/td>\n<td bgcolor=\"red\"><em>109<\/em><\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>Blue Return<\/td>\n<td>e0 4f<\/td>\n<td>e0 cf<\/td>\n<td bgcolor=\"red\"><em>107<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Delete<\/td>\n<td>e0 52<\/td>\n<td>e0 d2<\/td>\n<td bgcolor=\"red\"><em>110<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Page Down<\/td>\n<td>e0 53<\/td>\n<td>e0 d3<\/td>\n<td bgcolor=\"red\"><em>111<\/em><\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>Up Arrow<\/td>\n<td>e0 48<\/td>\n<td>e0 c8<\/td>\n<td>103<\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>Left Arrow<\/td>\n<td>e0 4b<\/td>\n<td>e0 cb<\/td>\n<td>105<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Home<\/td>\n<td>e0 47<\/td>\n<td>e0 c7<\/td>\n<td>102<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Right Arrow<\/td>\n<td>e0 4d<\/td>\n<td>e0 cd<\/td>\n<td>106<\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>Down Arrow<\/td>\n<td>e0 50<\/td>\n<td>e0 d0<\/td>\n<td>108<\/td>\n<\/tr>\n<tr>\n<td colspan=\"5\" bgcolor=\"purple\">Number Pad<\/td>\n<\/tr>\n<tr>\n<td>(top row)<\/td>\n<td>End<\/td>\n<td>01<\/td>\n<td>81<\/td>\n<td bgcolor=\"red\"><em>1<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Scroll Lock<\/td>\n<td>46<\/td>\n<td>c6<\/td>\n<td>70<\/td>\n<\/tr>\n<tr>\n<td>(shifted Scroll Lock)<\/td>\n<td>Number Lock<\/td>\n<td>45<\/td>\n<td>c5<\/td>\n<td bgcolor=\"red\"><em>69<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\/<\/td>\n<td>37<\/td>\n<td>b7<\/td>\n<td bgcolor=\"red\"><em>55<\/em><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>*<\/td>\n<td>e0 c5<\/td>\n<td>e0 b5<\/td>\n<td bgcolor=\"red\"><em>98<\/em><\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>KP-7<\/td>\n<td>47<\/td>\n<td>c7<\/td>\n<td>71<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-8<\/td>\n<td>48<\/td>\n<td>c8<\/td>\n<td>72<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-9<\/td>\n<td>49<\/td>\n<td>c9<\/td>\n<td>73<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>&#8211;<\/td>\n<td>4e<\/td>\n<td>ce<\/td>\n<td bgcolor=\"red\"><em>78<\/em><\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>KP-4<\/td>\n<td>41<\/td>\n<td>cb<\/td>\n<td>75<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-5<\/td>\n<td>4c<\/td>\n<td>cc<\/td>\n<td>76<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-6<\/td>\n<td>4d<\/td>\n<td>cd<\/td>\n<td>77<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>+<\/td>\n<td>4a<\/td>\n<td>ca<\/td>\n<td bgcolor=\"red\"><em>74<\/em><\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>KP-1<\/td>\n<td>4f<\/td>\n<td>cf<\/td>\n<td>79<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-2<\/td>\n<td>50<\/td>\n<td>d0<\/td>\n<td>80<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-3<\/td>\n<td>51<\/td>\n<td>d1<\/td>\n<td>81<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Enter<\/td>\n<td>e0 1c<\/td>\n<td>e0 9c<\/td>\n<td>96<\/td>\n<\/tr>\n<tr>\n<td>(next row)<\/td>\n<td>KP-0<\/td>\n<td>52<\/td>\n<td>d2<\/td>\n<td>82<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>KP-.<\/td>\n<td>53<\/td>\n<td>d3<\/td>\n<td>83<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><strong>Group<\/strong>. To break things up a little, I&#8217;ve grouped the keys into the 5 separate parts of the keyboard &#8211; the function keys, the keypad to the left, the qwerty pad, the editing pad, and the number pad (&#8220;keypad&#8221;). The details of the qwerty pad will be the last as the other groups are more interesting (&#8216;qwerty&#8217; keys just work).<\/li>\n<li><strong>Key<\/strong>. This is the label on the key on <em>my<\/em> keyboard. This may be different on different variants so in all cases I have started with the top left, worked left and down (the &#8220;qwerty&#8221; row before the &#8220;asdf&#8221; row).<\/li>\n<li><strong>Make<\/strong>. This is the scancode produced when the key is pressed.<\/li>\n<li><strong>Break<\/strong>. This is the scancode produced when the key is released.<\/li>\n<li><strong>Keycode<\/strong>. The configured keycode produced on the Linux console. The red cells are values that are <em>wrong<\/em>, but in addition many are missing because they are not produced on a keypress. I say <em>wrong<\/em> because the keycode gives a result that does not match the key legend &#8211; in some cases dangerously wrong such as PageDown generating Delete. One thing to be aware of is that you <em>must<\/em> use \u201cshowkey -k\u201d at the console to get the same numbers I have \u2013 X seems to add 8 to each keycode.<\/li>\n<\/ul>\n<p>Three interesting oddities here &#8230; F14 and F15 have somehow been graced with keycodes by default; their scan codes must coincide with keys defined on more popular keyboards. And of course Num Lock and Scroll Lock sharing the same key is a little &#8230; odd. And lastly the Record key is effectively sending two keystrokes in one.<\/p>\n<h2>Fixing The Wrong Keys<\/h2>\n<p>The first place to start is to map the keys that return a keycode that represents a key other than that written on the keycap \u2013 such as the key marked \u201cEnd\u201d which thinks it is an \u201cEsc\u201d key. I have left out two of the wrong keys from this group as they fit better into the next section.<\/p>\n<p>The wrong keys can be fixed with the following commands :-<\/p>\n<pre>setkeycodes 7e\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\u00a0\u00a0\u00a0 # Esc\nsetkeycodes e049\u00a0\u00a0\u00a0\u00a0\u00a0 82\u00a0\u00a0\u00a0 # Insert\nsetkeycodes e051\u00a0\u00a0\u00a0\u00a0 105\u00a0\u00a0\u00a0 # PageUp\nsetkeycodes e052\u00a0\u00a0\u00a0\u00a0 111\u00a0\u00a0\u00a0 # Delete\nsetkeycodes e053\u00a0\u00a0\u00a0\u00a0 109\u00a0\u00a0\u00a0 # PageDown\nsetkeycodes 01\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 107\u00a0\u00a0\u00a0 # End\nsetkeycodes 37\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 98\u00a0\u00a0\u00a0 # KP-\/\nsetkeycodes e035\u00a0\u00a0\u00a0\u00a0\u00a0 55\u00a0\u00a0\u00a0 # KP-*\nsetkeycodes 4e\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 74\u00a0\u00a0\u00a0 # KP--\nsetkeycodes 4a\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 78\u00a0\u00a0\u00a0 # KP-+<\/pre>\n<p>I have left out a couple of the wrong keys from this section as they do not return dangerously incorrect values, and they fit more logically into the next section (being <span style=\"color: #3366ff;\">Record<\/span> and <span style=\"color: #3366ff;\">Blue Return<\/span>).<\/p>\n<h2>Dealing With The Extra Keys<\/h2>\n<p>Now onto dealing with the extra keys. The tricky bit here was coming up with new keycodes for these keys that did not conflict with existing keycodes, and were reasonable. This is effectively impossible, as <em>xmodmap -pk<\/em> appears to show no significant range of unused keycodes although some of the used keycodes are for things like &#8220;Shop&#8221; buttons!<\/p>\n<p>So I picked a range with a larger number of useless key symbols and some unused ones :-<\/p>\n<pre>setkeycodes 5b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 222\u00a0\u00a0\u00a0 # F13\nsetkeycodes 5c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 223\u00a0\u00a0\u00a0 # F14\nsetkeycodes 5d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 224\u00a0\u00a0\u00a0 # F15\nsetkeycodes 63\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 225\u00a0\u00a0\u00a0 # F16\nsetkeycodes 64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 237\u00a0\u00a0\u00a0 # F17\nsetkeycodes 65\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 238\u00a0\u00a0\u00a0 # F18\nsetkeycodes 66\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 228\u00a0\u00a0\u00a0 # F19\nsetkeycodes 67\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 229\u00a0\u00a0\u00a0 # F20\nsetkeycodes 68\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 230\u00a0\u00a0\u00a0 # F21\nsetkeycodes 69\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 231\u00a0\u00a0\u00a0 # F22\nsetkeycodes 6a\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 232\u00a0\u00a0\u00a0 # F23\nsetkeycodes 6b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 233\u00a0\u00a0\u00a0 # F24\nsetkeycodes 72\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 99\u00a0\u00a0\u00a0 # Record (after keyswap)\nsetkeycodes 74\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 209\u00a0\u00a0\u00a0 # Print\nsetkeycodes 6d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 138\u00a0\u00a0\u00a0 # Help\nsetkeycodes 6f\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 239\u00a0\u00a0\u00a0 # Play\nsetkeycodes 75\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 234\u00a0\u00a0\u00a0 # Windows (GUI)\nsetkeycodes 6c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 240\u00a0\u00a0\u00a0 # Menu\nsetkeycodes 5a\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 235\u00a0\u00a0\u00a0 # Backtab\nsetkeycodes e04f\u00a0\u00a0\u00a0\u00a0 236\u00a0\u00a0\u00a0 # BlueReturn<\/pre>\n<p>Once this has run, we can look at fixing the X mappings &#8230; which is why F17 and F18 are out of sequence in the above! One key has to be (at least until someone comes up with a better solution!) sorted out with a keycap swap. Take the keycap from the <span style=\"color: #3366ff;\">Record<\/span> key and swap it for the one marked &#8220;Print Screen&#8221;. This is because the scancode for <span style=\"color: #3366ff;\">Record<\/span> is effectively two scancodes in one and attempting to remap it will result in strange things happening.<\/p>\n<h2>Sorting Out X11<\/h2>\n<p>Once you have a set of keycodes that don&#8217;t do funny things under X (for instance F17 and F18 when in sequence produce not a keystroke under X11 but some other event), you can move onto configuring the X keyboard. The following attempts to map as close to the keycaps as possible without going to extremes :-<\/p>\n<pre>xmodmap -e \"keycode 230 = F13\"\nxmodmap -e \"keycode 231 = F14\"\nxmodmap -e \"keycode 232 = F15\"\nxmodmap -e \"keycode 233 = F16\"\nxmodmap -e \"keycode 245 = F17\"\nxmodmap -e \"keycode 246 = F18\"\nxmodmap -e \"keycode 236 = F19\"\nxmodmap -e \"keycode 237 = F20\"\nxmodmap -e \"keycode 238 = F21\"\nxmodmap -e \"keycode 239 = F22\"\nxmodmap -e \"keycode 240 = F23\"\nxmodmap -e \"keycode 241 = F24\"\nxmodmap -e \"keycode 217 = Print\"\nxmodmap -e \"keycode 9 = Escape 3270_Attn\"\nxmodmap -e \"keycode\u00a0 93 = cent bar\"\nxmodmap -e \"keycode 175 = 3270_Record\"\nxmodmap -e \"keycode 175 =\"\nxmodmap -e \"keycode 247 = 3270_Play\"\nxmodmap -e \"keycode 242 = Super_L\"\nxmodmap -e \"keycode 248 = Multi_key\"\nxmodmap -e \"keycode 243 = 3270_BackTab\"\nxmodmap -e \"keycode 118 = Insert 3270_Duplicate\"\nxmodmap -e \"keycode 112 = Prior 3270_Jump\"\nxmodmap -e \"keycode 117 = Next 3270_Rule\"<\/pre>\n<p>This results in a keyboard that more or less matches the key caps. For some of the blue symbols, you press the key in combination with shift.<\/p>\n<p>The number pad could do with a little more attention in the realm of X-mapping, and there are a few blue symbols on the main qwerty pad that might be usefully mapped, but this is sufficient for my purposes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ten years ago? Bloomin&#8217; heck! Still as this still seems to get frequent hits, I suppose quick update is in order &#8211; I no longer use the Unicomp &#8220;naked&#8221; but go through a Soarer converter which is an easier way of mapping the keys and allows macros to be added. Thanks to these guys (the <a href='https:\/\/really.zonky.org\/?p=1125' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","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},"_share_on_mastodon":"0"},"categories":[4,209],"tags":[334,109,43,335,336,333],"class_list":["post-1125","post","type-post","status-publish","format-standard","hentry","category-it","category-linux-it","tag-buckling-spring","tag-keyboards","tag-linux","tag-scancode","tag-showkeys","tag-unicom","category-4-id","category-209-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"share_on_mastodon":{"url":"","error":""},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1f2KI-i9","_links":{"self":[{"href":"https:\/\/really.zonky.org\/index.php?rest_route=\/wp\/v2\/posts\/1125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/really.zonky.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/really.zonky.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/really.zonky.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/really.zonky.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1125"}],"version-history":[{"count":25,"href":"https:\/\/really.zonky.org\/index.php?rest_route=\/wp\/v2\/posts\/1125\/revisions"}],"predecessor-version":[{"id":6042,"href":"https:\/\/really.zonky.org\/index.php?rest_route=\/wp\/v2\/posts\/1125\/revisions\/6042"}],"wp:attachment":[{"href":"https:\/\/really.zonky.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/really.zonky.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/really.zonky.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}