]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - keyboard/hhkb/doc/HHKB.txt
Fix legacy keymap support
[max/tmk_keyboard.git] / keyboard / hhkb / doc / HHKB.txt
index ace931de383de70eaa1b178e237660e9163fb33f..f99a07443770ac253dd1d3621ba80d30ea28dbed 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)
 
     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.
     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,13 +25,16 @@ Keyswitch PCB:
     (HHKB_TP1684.jpg)
 
 
     (HHKB_TP1684.jpg)
 
 
-Two PCBs are connected by 15 lines. Vcc and GND use 3 lines each, other 9 lines are for keyboard signaling.
+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 PCB connector                                 Teensy++ pins
     -------------------------------------------------------------------------------
 
     Keyswitch PCB connector                                 Teensy++ pins
     -------------------------------------------------------------------------------
-     1  Vcc(5V)                                             5V
-     2  Vcc(5V)
-     3  Vcc(5V)
+     1  Vcc(5V)   Not exist on Pro2                         5V
+     2  Vcc(5V)                                             5V
+     3  Vcc(5V)                                             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
      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
@@ -92,9 +44,11 @@ Two PCBs are connected by 15 lines. Vcc and GND use 3 lines each, other 9 lines
     10  LS145     B(bit1)                                   PB4 output
     11  LS145     C(bit2)                                   PB5 output
     12  LS145     D(enable) Low(0) enable selected column   PB6 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
+    13  GND                                                 GND
+    14  GND                                                 GND
+    15  GND       Not exist on Pro2                         GND
+
+    NOTE: guessing pin5(KEY_PREV) may work for hysteresis of capacitive sensing.
 
     (HHKB_connector.jpg)
 
 
     (HHKB_connector.jpg)
 
@@ -103,19 +57,20 @@ Keyswitch matrix
 ----------------
 60 keyswitches in 8*8 matrix. It is ghost-free and bounce-free.
 
 ----------------
 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:
 
 
 Matrix diagram:
+
              +-------------------------+-+-+-+-+-+-+-+     Vcc
              |bias control?            - - - - - - - -     ---
              |                  3.9K*8 R R R R R R R R      |
              +-------------------------+-+-+-+-+-+-+-+     Vcc
              |bias control?            - - - - - - - -     ---
              |                  3.9K*8 R R R R R R R R      |
@@ -141,7 +96,8 @@ Matrix diagram:
                     to controller
                                     
 
                     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.
     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 +113,8 @@ Signals charts:
     (HHKB_chart2.jpg)
 
 
     (HHKB_chart2.jpg)
 
 
-Matrix scan pseudo code:
+Matrix scan pseudo code
+-----------------------
     for (row: 0-7) {
         SELECT_ROW(row);        // set HC4051(A,B,C)
 
     for (row: 0-7) {
         SELECT_ROW(row);        // set HC4051(A,B,C)
 
@@ -190,10 +147,5 @@ Matrix scan pseudo code:
     }
 
 
     }
 
 
-Keymap layers
--------------
-Followings are added layers with additional Fn keys.
-
-see keymap.c
 
 EOF
 
 EOF