]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - keyboard/hhkb/doc/HHKB.txt
Added keyboard definition file for KTouch
[max/tmk_keyboard.git] / keyboard / hhkb / doc / HHKB.txt
index ace931de383de70eaa1b178e237660e9163fb33f..422c452c90b30c3578ac8b76269cd08c165bdb59 100644 (file)
@@ -1,67 +1,16 @@
-Alternative Controller for HHKB pro
-===================================
-I want to add vi cursor and mouse keys to HHKB. Original HHKB controller is not programmable and
-firmware source code is not open. So, customizing HHKB needs to replace original controller with programmable one.
-I used Teensy++ as alternative controller. Though a Teensy has enough ports to drive HHKB,
-Teensy++ has clean pinout and it makes programing and wiring easier.
+Internal of HHKB pro
+=====================
+HHKB pro has MCU and some chips on separate two PCBs.
 
-This is just a proof of concept for replacing controller of HHKB, not a complete firmware.
-
-My prototype firmware source tree is here:
-    github(http://github.com/tmk/tmk_keyboard)
-This firmware is a port of my previous project:
-    HHKB style Mod(http://geekhack.org/showwiki.php?title=Island:11930)
-PJRC:
-    Teensy++/Teensy(http://www.pjrc.com/teensy/)
-
-
-Pros:
-    * without pattern cutting, case mod  and soldering
-    * can keep original controller intact
-    * can change HHKB behaviour as you like(by C programming)
-
-Cons:
-    * void your warranty
-    * unavailability of Teensy++/Teensy(because of PS3 cracking boom?)
-
-Features:
-    * customized keymap
-    * more keymap layers
-    * mouse keys for minimum mouse operation(never comfortable for normal use)
-    * and more...(in the future)
-
-Any suggestions or ideas are welcome.
-
-
-NOTE:
-    My HHKB is just "Professional". This means followings may not be applied to "Professional2".
-
-DISCLAIMER:
-    I'm not a professional for electronics and MCU programming. This may damage your HHKB.
-    And my English writing is poor, I'm not sure I can convey my notions accurately.
-
-
-Teensy++ installation
----------------------
-Angled USB mini B adapter is used to install Teensy++ laterally.
-(teensy_install.jpg)
-
-Bread baord wires are used to connect Teensy++.
-(teensy_wiring.jpg)
-(connector_contact.jpg)
-
-
-HHKB internal
--------------
-HHKB pro has some chips on separate two PCBs.
-
-Controller PCB:
+Controller PCB
+--------------
     M38K07M4    Renesas MCU with USB function
                 http://documentation.renesas.com/eng/products/mpumcu/rej03b0192_38k0ds.pdf
 
     (HHKB_controller.jpg)
 
-Keyswitch PCB:
+Keyswitch PCB
+-------------
     HC4051      Analog Multiplexer: select a row line.
                 http://www.alldatasheet.com/datasheet-pdf/pdf/203989/KODENSHI/KK74HC4051A.html
     LS145       BCD Decoder: select a column line.
@@ -76,25 +25,32 @@ Keyswitch PCB:
     (HHKB_TP1684.jpg)
 
 
-Two PCBs are connected by 15 lines. Vcc and GND use 3 lines each, other 9 lines are for keyboard signaling.
-
-    Keyswitch PCB connector                                 Teensy++ pins
-    -------------------------------------------------------------------------------
-     1  Vcc(5V)                                             5V
-     2  Vcc(5V)
-     3  Vcc(5V)
-     4  TP1684    KEY: Low(0) when key pressed              PE6 input(with pullup)
-     5  TP1684    KEY_PREV: assert previous key state???    PE7 output
-     6  HC4051    A(bit0) select 8 rows(0 to 7)             PB0 output
-     7  HC4051    B(bit1)                                   PB1 output
-     8  HC4051    C(bit2)                                   PB2 output
-     9  LS145     A(bit0) select 8 columns(0 to 7)          PB3 output
-    10  LS145     B(bit1)                                   PB4 output
-    11  LS145     C(bit2)                                   PB5 output
-    12  LS145     D(enable) Low(0) enable selected column   PB6 output
-    13  GND
-    14  GND
-    15  GND                                                 GND
+Connector Cable
+---------------
+Two PCBs are connected by 15 lines(13 in case of Pro2).
+Vcc and GND use 3(2) lines each, other 9 lines are for keyboard signaling.
+
+    Keyswitch connector
+    pro  pro2           Description                               Teensy++ pins
+    --------------------------------------------------------------------------------------------
+     1       Vcc(5V)    Not exist on Pro2                         5V
+     2   1   Vcc(5V)                                              5V
+     3   2   Vcc(5V)                                              5V
+     4   3   TP1684     KEY: Low(0) when key pressed              PE6 input(with pullup)
+     5   4   TP1684     KEY_PREV: make threshold                  PE7 output
+     6   5   HC4051     A(bit0)\                                  PB0 output
+     7   6   HC4051     B(bit1) > select row(0 to 7)              PB1 output
+     8   7   HC4051     C(bit2)/                                  PB2 output
+     9   8   LS145      A(bit0)\                                  PB3 output
+    10   9   LS145      B(bit1) > select column(0 to 7)           PB4 output
+    11  10   LS145      C(bit2)/                                  PB5 output
+    12  11   LS145      D(enable) Low(0) enables selected column  PB6 output
+    13  12   GND                                                  GND
+    14  13   GND                                                  GND
+    15       GND        Not exist on Pro2                         GND
+
+    NOTE: guessing pin5(KEY_PREV) may work for hysteresis of capacitive sensing.
+    NOTE: 1KOhm didn't work as pullup resistor on KEY. AVR internal pullup or 10KOhm resistor was OK.
 
     (HHKB_connector.jpg)
 
@@ -103,19 +59,20 @@ Keyswitch matrix
 ----------------
 60 keyswitches in 8*8 matrix. It is ghost-free and bounce-free.
 
-  COL 0     1       2       3       4       5       6       7
-ROW ---------------------------------------------------------------
-  0|  2     q       w       s       a       z       x       c
-  1|  3     4       r       e       d       f       v       b
-  2|  5     6       y       t       g       h       n       _NONE_
-  3|  1     Esc     Tab     Control LShift  LAlt    LMeta   Space
-  4|  7     8       u       i       k       j       m       _NONE_
-  5|  \     `       Delete  Return  Fn      RShift  RAlt    RMeta
-  6|  9     0       o       p       ;       l       ,       _NONE_
-  7|  -     +       ]       [       '       /       .       _NONE_
+      COL 0     1       2       3       4       5       6       7
+    ROW ---------------------------------------------------------------
+      0|  2     q       w       s       a       z       x       c
+      1|  3     4       r       e       d       f       v       b
+      2|  5     6       y       t       g       h       n       _NONE_
+      3|  1     Esc     Tab     Control LShift  LAlt    LMeta   Space
+      4|  7     8       u       i       k       j       m       _NONE_
+      5|  \     `       Delete  Return  Fn      RShift  RAlt    RMeta
+      6|  9     0       o       p       ;       l       ,       _NONE_
+      7|  -     +       ]       [       '       /       .       _NONE_
 
 
 Matrix diagram:
+
              +-------------------------+-+-+-+-+-+-+-+     Vcc
              |bias control?            - - - - - - - -     ---
              |                  3.9K*8 R R R R R R R R      |
@@ -141,7 +98,8 @@ Matrix diagram:
                     to controller
                                     
 
-Signals charts:
+Signals charts
+--------------
     While pressing space bar, watched HHKB original controller signals by logic analyzer.
     Row and column is looping between 0-7 each for selecting a key.
     A key is scaned every about 15ms, so scan rate is 66Hz.
@@ -157,7 +115,8 @@ Signals charts:
     (HHKB_chart2.jpg)
 
 
-Matrix scan pseudo code:
+Matrix scan pseudo code
+-----------------------
     for (row: 0-7) {
         SELECT_ROW(row);        // set HC4051(A,B,C)
 
@@ -190,10 +149,5 @@ Matrix scan pseudo code:
     }
 
 
-Keymap layers
--------------
-Followings are added layers with additional Fn keys.
-
-see keymap.c
 
 EOF