summary refs log tree commit diff
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2012-06-11 10:53:02 +0900
committertmk <nobody@nowhere>2012-06-11 10:53:02 +0900
commit62d1ebb91c7b381ce3d88aad9ee0b03bea9fce26 (patch)
tree6b10864a310f611187e1b61102da7da1db1d2e29
parent225de7a847a511d004bf909b1334e19497cf2f9d (diff)
parent81706d1130fdc3c0d6d110f4d8665c47ffd7fb59 (diff)
Merge branch 'newdir'
-rw-r--r--LICENSE.txt27
-rw-r--r--README151
-rw-r--r--README.md184
-rw-r--r--common.mk5
-rw-r--r--common/bootloader.c (renamed from bootloader.c)0
-rw-r--r--common/bootloader.h (renamed from bootloader.h)0
-rw-r--r--common/command.c (renamed from command.c)0
-rw-r--r--common/command.h (renamed from command.h)0
-rw-r--r--common/controller_teensy.h (renamed from controller_teensy.h)0
-rw-r--r--common/debug.h (renamed from debug.h)0
-rw-r--r--common/host.c (renamed from host.c)0
-rw-r--r--common/host.h (renamed from host.h)0
-rw-r--r--common/host_driver.h (renamed from host_driver.h)0
-rw-r--r--common/keyboard.c (renamed from keyboard.c)0
-rw-r--r--common/keyboard.h (renamed from keyboard.h)0
-rw-r--r--common/keymap.h (renamed from keymap.h)0
-rw-r--r--common/layer.c (renamed from layer.c)0
-rw-r--r--common/layer.h (renamed from layer.h)0
-rw-r--r--common/led.h (renamed from led.h)0
-rw-r--r--common/matrix.h (renamed from matrix.h)0
-rw-r--r--[-rwxr-xr-x]common/mousekey.c (renamed from mousekey.c)0
-rw-r--r--common/mousekey.h (renamed from mousekey.h)0
-rw-r--r--common/print.c (renamed from print.c)0
-rw-r--r--common/print.h (renamed from print.h)0
-rw-r--r--common/report.h (renamed from report.h)0
-rw-r--r--common/sendchar.h (renamed from sendchar.h)0
-rw-r--r--common/sendchar_null.c (renamed from sendchar_null.c)0
-rw-r--r--common/sendchar_uart.c (renamed from sendchar_uart.c)0
-rw-r--r--common/timer.c (renamed from timer.c)0
-rw-r--r--common/timer.h (renamed from timer.h)0
-rw-r--r--common/uart.c (renamed from uart.c)0
-rw-r--r--common/uart.h (renamed from uart.h)0
-rw-r--r--common/usb_keycodes.h (renamed from usb_keycodes.h)0
-rw-r--r--common/util.c (renamed from util.c)0
-rw-r--r--common/util.h (renamed from util.h)0
-rw-r--r--converter/adb_usb/Makefile (renamed from adb_usb/Makefile)8
-rw-r--r--converter/adb_usb/README (renamed from adb_usb/README)0
-rw-r--r--converter/adb_usb/config.h (renamed from adb_usb/config.h)0
-rw-r--r--converter/adb_usb/keymap.c (renamed from adb_usb/keymap.c)0
-rw-r--r--converter/adb_usb/led.c (renamed from adb_usb/led.c)0
-rw-r--r--converter/adb_usb/matrix.c (renamed from adb_usb/matrix.c)0
-rw-r--r--converter/m0110_usb/Makefile (renamed from m0110_usb/Makefile)8
-rw-r--r--converter/m0110_usb/README.md (renamed from m0110_usb/README.md)0
-rw-r--r--converter/m0110_usb/config.h (renamed from m0110_usb/config.h)0
-rw-r--r--converter/m0110_usb/doc/m0110.jpg (renamed from m0110_usb/doc/m0110.jpg)bin49360 -> 49360 bytes
-rw-r--r--converter/m0110_usb/doc/teensy.jpg (renamed from m0110_usb/doc/teensy.jpg)bin50081 -> 50081 bytes
-rw-r--r--converter/m0110_usb/keymap.c (renamed from m0110_usb/keymap.c)0
-rw-r--r--converter/m0110_usb/led.c (renamed from m0110_usb/led.c)0
-rw-r--r--converter/m0110_usb/matrix.c (renamed from m0110_usb/matrix.c)0
-rw-r--r--converter/news_usb/Makefile.pjrc (renamed from sony_usb/Makefile.pjrc)8
-rw-r--r--converter/news_usb/config_pjrc.h (renamed from sony_usb/config_pjrc.h)0
-rw-r--r--converter/news_usb/keymap.c (renamed from sony_usb/keymap.c)0
-rw-r--r--converter/news_usb/led.c (renamed from sony_usb/led.c)0
-rw-r--r--converter/news_usb/matrix.c (renamed from sony_usb/matrix.c)0
-rw-r--r--converter/ps2_usb/Makefile (renamed from ps2_usb/Makefile)8
-rw-r--r--converter/ps2_usb/Makefile.pjrc_usart (renamed from ps2_usb/Makefile.pjrc_usart)8
-rw-r--r--converter/ps2_usb/Makefile.vusb (renamed from ps2_usb/Makefile.vusb)8
-rw-r--r--converter/ps2_usb/README (renamed from ps2_usb/README)0
-rw-r--r--converter/ps2_usb/README.vusb (renamed from ps2_usb/README.vusb)0
-rw-r--r--converter/ps2_usb/config_pjrc.h (renamed from ps2_usb/config_pjrc.h)0
-rw-r--r--converter/ps2_usb/config_pjrc_usart.h (renamed from ps2_usb/config_pjrc_usart.h)0
-rw-r--r--converter/ps2_usb/config_vusb.h (renamed from ps2_usb/config_vusb.h)0
-rw-r--r--converter/ps2_usb/keymap.c (renamed from ps2_usb/keymap.c)0
-rw-r--r--converter/ps2_usb/led.c (renamed from ps2_usb/led.c)0
-rw-r--r--converter/ps2_usb/matrix.c (renamed from ps2_usb/matrix.c)0
-rw-r--r--converter/ps2_usb/usbconfig.h (renamed from ps2_usb/usbconfig.h)0
-rw-r--r--converter/terminal_usb/Makefile.102_pjrc (renamed from terminal_usb/Makefile.102_pjrc)8
-rw-r--r--converter/terminal_usb/Makefile.122_pjrc (renamed from terminal_usb/Makefile.122_pjrc)8
-rw-r--r--converter/terminal_usb/README (renamed from terminal_usb/README)0
-rw-r--r--converter/terminal_usb/config_102_pjrc.h (renamed from terminal_usb/config_102_pjrc.h)0
-rw-r--r--converter/terminal_usb/config_122_pjrc.h (renamed from terminal_usb/config_122_pjrc.h)0
-rw-r--r--converter/terminal_usb/keymap_102.c (renamed from terminal_usb/keymap_102.c)0
-rw-r--r--converter/terminal_usb/keymap_122.c (renamed from terminal_usb/keymap_122.c)0
-rw-r--r--converter/terminal_usb/led.c (renamed from terminal_usb/led.c)0
-rw-r--r--converter/terminal_usb/matrix.c (renamed from terminal_usb/matrix.c)0
-rw-r--r--converter/x68k_usb/Makefile (renamed from x68k_usb/Makefile)8
-rw-r--r--converter/x68k_usb/README (renamed from x68k_usb/README)0
-rw-r--r--converter/x68k_usb/config_pjrc.h (renamed from x68k_usb/config_pjrc.h)0
-rw-r--r--converter/x68k_usb/keymap.c (renamed from x68k_usb/keymap.c)0
-rw-r--r--converter/x68k_usb/led.c (renamed from x68k_usb/led.c)0
-rw-r--r--converter/x68k_usb/matrix.c (renamed from x68k_usb/matrix.c)0
-rw-r--r--doc/COPYING.GPLv2 (renamed from COPYING.GPLv2)0
-rw-r--r--doc/COPYING.GPLv3 (renamed from COPYING.GPLv3)0
-rw-r--r--doc/FUSE.txt (renamed from hhkb/FUSE.txt)0
-rw-r--r--doc/POWER.txt (renamed from POWER.txt)0
-rw-r--r--doc/USB_NKRO.txt (renamed from USB_NKRO.txt)0
-rw-r--r--keyboard/hbkb/Makefile (renamed from hbk/Makefile)8
-rw-r--r--keyboard/hbkb/config.h (renamed from hbk/config.h)0
-rw-r--r--keyboard/hbkb/controller_teensy.h (renamed from hbk/controller_teensy.h)0
-rw-r--r--keyboard/hbkb/keymap.c (renamed from hbk/keymap.c)0
-rw-r--r--keyboard/hbkb/led.c (renamed from hbk/led.c)0
-rw-r--r--keyboard/hbkb/matrix.c (renamed from hbk/matrix.c)0
-rw-r--r--keyboard/hhkb/Makefile.iwrap (renamed from hhkb/Makefile.iwrap)10
-rw-r--r--keyboard/hhkb/Makefile.pjrc (renamed from hhkb/Makefile.pjrc)8
-rw-r--r--keyboard/hhkb/Makefile.vusb (renamed from hhkb/Makefile.vusb)8
-rw-r--r--keyboard/hhkb/README (renamed from hhkb/README)0
-rw-r--r--keyboard/hhkb/config_iwrap.h (renamed from hhkb/config_iwrap.h)0
-rw-r--r--keyboard/hhkb/config_pjrc.h (renamed from hhkb/config_pjrc.h)0
-rw-r--r--keyboard/hhkb/config_vusb.h (renamed from hhkb/config_vusb.h)0
-rw-r--r--keyboard/hhkb/doc/Bluetooth.txt (renamed from hhkb/doc/Bluetooth.txt)0
-rwxr-xr-xkeyboard/hhkb/doc/Bluetooth_img/.picasa.ini (renamed from hhkb/doc/Bluetooth_img/.picasa.ini)0
-rw-r--r--[-rwxr-xr-x]keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg (renamed from hhkb/doc/Bluetooth_img/BT_circuit.jpg)bin502118 -> 502118 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB.txt (renamed from hhkb/doc/HHKB.txt)0
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg (renamed from hhkb/doc/HHKB_img/HHKB_TP1684.jpg)bin149082 -> 149082 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg (renamed from hhkb/doc/HHKB_img/HHKB_chart1.jpg)bin155342 -> 155342 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg (renamed from hhkb/doc/HHKB_img/HHKB_chart2.jpg)bin148225 -> 148225 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg (renamed from hhkb/doc/HHKB_img/HHKB_connector.jpg)bin193900 -> 193900 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg (renamed from hhkb/doc/HHKB_img/HHKB_controller.jpg)bin135100 -> 135100 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg (renamed from hhkb/doc/HHKB_img/HHKB_keyswitch.jpg)bin171469 -> 171469 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/connector_contact.jpg (renamed from hhkb/doc/HHKB_img/connector_contact.jpg)bin192830 -> 192830 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg (renamed from hhkb/doc/HHKB_img/logic_analyzer.jpg)bin169564 -> 169564 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/probe_contact.jpg (renamed from hhkb/doc/HHKB_img/probe_contact.jpg)bin208477 -> 208477 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/teensy_install.jpg (renamed from hhkb/doc/HHKB_img/teensy_install.jpg)bin135851 -> 135851 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg (renamed from hhkb/doc/HHKB_img/teensy_wiring.jpg)bin154695 -> 154695 bytes
-rw-r--r--keyboard/hhkb/keymap.c (renamed from hhkb/keymap.c)0
-rw-r--r--keyboard/hhkb/led.c (renamed from hhkb/led.c)0
-rw-r--r--keyboard/hhkb/matrix.c (renamed from hhkb/matrix.c)0
-rw-r--r--keyboard/hhkb/usbconfig.h (renamed from hhkb/usbconfig.h)0
-rw-r--r--keyboard/macway/Makefile (renamed from macway/Makefile)8
-rw-r--r--keyboard/macway/config.h (renamed from macway/config.h)0
-rw-r--r--keyboard/macway/doc/back.jpg (renamed from macway/doc/back.jpg)bin122135 -> 122135 bytes
-rw-r--r--keyboard/macway/doc/case.jpg (renamed from macway/doc/case.jpg)bin146003 -> 146003 bytes
-rw-r--r--keyboard/macway/doc/keys.jpg (renamed from macway/doc/keys.jpg)bin116365 -> 116365 bytes
-rw-r--r--keyboard/macway/doc/side.jpg (renamed from macway/doc/side.jpg)bin109755 -> 109755 bytes
-rw-r--r--keyboard/macway/doc/switch.jpg (renamed from macway/doc/switch.jpg)bin115526 -> 115526 bytes
-rw-r--r--keyboard/macway/doc/teensy.jpg (renamed from macway/doc/teensy.jpg)bin165814 -> 165814 bytes
-rw-r--r--keyboard/macway/doc/wiring.jpg (renamed from macway/doc/wiring.jpg)bin165569 -> 165569 bytes
-rw-r--r--keyboard/macway/doc/withHHKB.jpg (renamed from macway/doc/withHHKB.jpg)bin152832 -> 152832 bytes
-rw-r--r--keyboard/macway/doc/withThinkPad.jpg (renamed from macway/doc/withThinkPad.jpg)bin118993 -> 118993 bytes
-rw-r--r--keyboard/macway/keymap.c (renamed from macway/keymap.c)0
-rw-r--r--keyboard/macway/led.c (renamed from macway/led.c)0
-rw-r--r--keyboard/macway/matrix.c (renamed from macway/matrix.c)0
-rw-r--r--pjrc/host.c183
-rw-r--r--protocol.mk2
-rw-r--r--protocol/adb.c (renamed from adb.c)0
-rw-r--r--protocol/adb.h (renamed from adb.h)0
-rw-r--r--protocol/iwrap.mk (renamed from iwrap.mk)2
-rw-r--r--protocol/iwrap/iWRAP.txt (renamed from iwrap/iWRAP.txt)0
-rw-r--r--protocol/iwrap/iwrap.c (renamed from iwrap/iwrap.c)0
-rw-r--r--protocol/iwrap/iwrap.h (renamed from iwrap/iwrap.h)0
-rw-r--r--protocol/iwrap/main.c (renamed from iwrap/main.c)0
-rw-r--r--protocol/iwrap/suart.S (renamed from iwrap/suart.S)0
-rw-r--r--protocol/iwrap/suart.h (renamed from iwrap/suart.h)0
-rw-r--r--protocol/iwrap/wd.h (renamed from iwrap/wd.h)0
-rw-r--r--protocol/m0110.c (renamed from m0110.c)0
-rw-r--r--protocol/m0110.h (renamed from m0110.h)0
-rw-r--r--protocol/news.c (renamed from sony_usb/news.c)0
-rw-r--r--protocol/news.h (renamed from sony_usb/news.h)0
-rw-r--r--protocol/pjrc.mk (renamed from pjrc.mk)2
-rw-r--r--protocol/pjrc/bootloader_teensy.c (renamed from pjrc/bootloader_teensy.c)0
-rw-r--r--protocol/pjrc/main.c (renamed from pjrc/main.c)0
-rw-r--r--protocol/pjrc/pjrc.c (renamed from pjrc/pjrc.c)0
-rw-r--r--protocol/pjrc/pjrc.h (renamed from pjrc/pjrc.h)0
-rw-r--r--protocol/pjrc/usb.c (renamed from pjrc/usb.c)0
-rw-r--r--protocol/pjrc/usb.h (renamed from pjrc/usb.h)0
-rw-r--r--protocol/pjrc/usb_debug.c (renamed from pjrc/usb_debug.c)0
-rw-r--r--protocol/pjrc/usb_debug.h (renamed from pjrc/usb_debug.h)0
-rw-r--r--protocol/pjrc/usb_extra.c (renamed from pjrc/usb_extra.c)0
-rw-r--r--protocol/pjrc/usb_extra.h (renamed from pjrc/usb_extra.h)0
-rw-r--r--protocol/pjrc/usb_keyboard.c (renamed from pjrc/usb_keyboard.c)0
-rw-r--r--protocol/pjrc/usb_keyboard.h (renamed from pjrc/usb_keyboard.h)0
-rw-r--r--protocol/pjrc/usb_mouse.c (renamed from pjrc/usb_mouse.c)0
-rw-r--r--protocol/pjrc/usb_mouse.h (renamed from pjrc/usb_mouse.h)0
-rw-r--r--protocol/ps2.c (renamed from ps2.c)0
-rw-r--r--protocol/ps2.h (renamed from ps2.h)0
-rw-r--r--protocol/ps2_mouse.c (renamed from ps2_mouse.c)0
-rw-r--r--protocol/ps2_mouse.h (renamed from ps2_mouse.h)0
-rw-r--r--protocol/ps2_usart.c (renamed from ps2_usart.c)0
-rw-r--r--protocol/vusb.mk (renamed from vusb.mk)2
-rw-r--r--protocol/vusb/bootloader_usbasp.c (renamed from vusb/bootloader_usbasp.c)0
-rw-r--r--protocol/vusb/main.c (renamed from vusb/main.c)0
-rw-r--r--protocol/vusb/sendchar_usart.c (renamed from vusb/sendchar_usart.c)0
-rw-r--r--protocol/vusb/usbdrv/Changelog.txt (renamed from vusb/usbdrv/Changelog.txt)0
-rw-r--r--protocol/vusb/usbdrv/CommercialLicense.txt (renamed from vusb/usbdrv/CommercialLicense.txt)0
-rw-r--r--protocol/vusb/usbdrv/License.txt (renamed from vusb/usbdrv/License.txt)0
-rw-r--r--protocol/vusb/usbdrv/Readme.txt (renamed from vusb/usbdrv/Readme.txt)0
-rw-r--r--protocol/vusb/usbdrv/USB-ID-FAQ.txt (renamed from vusb/usbdrv/USB-ID-FAQ.txt)0
-rw-r--r--protocol/vusb/usbdrv/USB-IDs-for-free.txt (renamed from vusb/usbdrv/USB-IDs-for-free.txt)0
-rw-r--r--protocol/vusb/usbdrv/asmcommon.inc (renamed from vusb/usbdrv/asmcommon.inc)0
-rw-r--r--protocol/vusb/usbdrv/oddebug.c (renamed from vusb/usbdrv/oddebug.c)0
-rw-r--r--protocol/vusb/usbdrv/oddebug.h (renamed from vusb/usbdrv/oddebug.h)0
-rw-r--r--protocol/vusb/usbdrv/usbconfig-prototype.h (renamed from vusb/usbdrv/usbconfig-prototype.h)0
-rw-r--r--protocol/vusb/usbdrv/usbdrv.c (renamed from vusb/usbdrv/usbdrv.c)0
-rw-r--r--protocol/vusb/usbdrv/usbdrv.h (renamed from vusb/usbdrv/usbdrv.h)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm.S (renamed from vusb/usbdrv/usbdrvasm.S)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm.asm (renamed from vusb/usbdrv/usbdrvasm.asm)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm12.inc (renamed from vusb/usbdrv/usbdrvasm12.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm128.inc (renamed from vusb/usbdrv/usbdrvasm128.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm15.inc (renamed from vusb/usbdrv/usbdrvasm15.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm16.inc (renamed from vusb/usbdrv/usbdrvasm16.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm165.inc (renamed from vusb/usbdrv/usbdrvasm165.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm18-crc.inc (renamed from vusb/usbdrv/usbdrvasm18-crc.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbdrvasm20.inc (renamed from vusb/usbdrv/usbdrvasm20.inc)0
-rw-r--r--protocol/vusb/usbdrv/usbportability.h (renamed from vusb/usbdrv/usbportability.h)0
-rw-r--r--protocol/vusb/vusb.c (renamed from vusb/vusb.c)0
-rw-r--r--protocol/vusb/vusb.h (renamed from vusb/vusb.h)0
-rw-r--r--protocol/x68k.c (renamed from x68k_usb/x68k.c)0
-rw-r--r--protocol/x68k.h (renamed from x68k_usb/x68k.h)0
-rw-r--r--rules.mk12
199 files changed, 270 insertions, 414 deletions
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index de622df54c..0000000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Codes are released under each license. See heading of each file for details.
-
-Modified BSD license:
-    ps2.c
-    ps2.h
-    adb.c
-    adb.h
-
-GPLv2 or later:
-    other codes
-
-PJRC's license:
-    print.c
-    print.h
-    pjrc/
-
-GPLv2 or GPLv3 or OBJECTIVE DEVELOPMENT's commercial license:
-    vusb/
-
-
-
-
-This software includes following codes from other parties.
-    - V-USB from OBJECTIVE DEVELOPMENT
-        http://www.obdev.at/products/vusb/index.html
-    - Teensy example codes from PJRC
-        http://www.pjrc.com/teensy/
diff --git a/README b/README
deleted file mode 100644
index d85f512c71..0000000000
--- a/README
+++ /dev/null
@@ -1,151 +0,0 @@
-t.m.k. Keyboard Firmware
-========================
-This is keyboard firmware for Teensy(AVR USB MCU) and V-USB board.
-
-source code repository:
-http://github.com/tmk/tmk_keyboard
-
-This firmware is used in following projects:
-HHKB mod:   http://geekhack.org/showwiki.php?title=Island:12047
-Macway mod: http://geekhack.org/showwiki.php?title=Island:11930
-PS2 to USB: http://geekhack.org/showwiki.php?title=Island:14618
-ADB to USB: http://geekhack.org/showwiki.php?title=Island:14290
-
-The project is heavily based on PJRC USB Keyboard/Mouse Example and
-owes a debt to preceding keyboard firmware projects.
-http://www.pjrc.com/teensy
-
-
-Features
---------
-Mouse key
-    control mouse cursor from keyboard.
-System Control Key
-    Power Down, Sleep, Wake Up & USB Remote Wake up
-Media Control Key
-    Volume Down/Up, Mute
-USB NKRO
-    send 120 keys(+ 8 modifiers) at most simultaneously.
-PS/2 mouse support
-    integrate PS/2 mouse(TrackPoint) into keyboard as composite device.
-
-
-Limitations
------------
-
-
-Files & Directories
--------------------
-Target:
-hhkb/                           keyboard controller for PFU HHKB pro
-macway/                         keyboard controller for Macway mod
-ps2_usb/                        PS2 to USB keyboard converter
-adb_usb/                        ADB to USB keyboard converter
-
-USB Protocol Stack:
-pjrc/                           PJRC  USB stack
-vusb/                           V-USB USB stack
-ps2.[ch]                        PS/2 protocol
-adb.[ch]                        ADB protocol
-
-
-Build
------
-To compile needs AVR GCC, AVR Libc and GNU make.
-You can use WinAVR on Windows.  http://winavr.sourceforge.net/
-
-$ cd <target>
-$ make
-
-The firmware will be compiled as a file tmk_<target>.hex.
-
-
-Build your own firmware
------------------------
-Copying exsistent target(macway) is easy way.
-1. Copy contens of macway/ to your own target directory.
-2. Edit Makefile. See next section.
-3. Edit config.h. See next section.
-4. Edit matrix.c. You will need to fix followings at least.
-     matrix_init()
-     matrix_scan()
-     read_col()
-     unselect_rows()
-     select_row()
-5. Edit keymap.c. NOTE: It is not final design and a bit messy.
-   You will need to fix followings at least.
-     KEYMAP
-     fn_layer[]
-     fn_keycode[]
-     keymaps[]
-6. Build.
-
-If you have a build error like following, comment out "--relax" option in Makefile.common.
-    (.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12'
-
-
-Build Options
--------------
-<target>/Makefile:
-1. Set target name for your firmware.
-     TARGET = tmk_<target>
-2. Choose a MCU and its frequency.
-     MCU = atmega32u4       # Teensy 2.0
-     #MCU = at90usb1286      # Teensy++ 2.0
-     F_CPU = 16000000
-3. Choose optional modules as needed. Comment out to disable optional modules.
-     MOUSEKEY_ENABLE = yes	# Mouse keys
-     PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support
-     EXTRAKEY_ENABLE = yes	# Enhanced feature for Windows(Audio control and System control)
-     NKRO_ENABLE = yes		# USB Nkey Rollover
-
-<target>/config.h:
-1. USB vendor/product ID and device description
-     #define VENDOR_ID       0xFEED
-     #define PRODUCT_ID      0xBEEF
-     /* device description */
-     #define MANUFACTURER    t.m.k.
-     #define PRODUCT         Macway mod
-     #define DESCRIPTION     t.m.k. keyboard firmware for Macway mod
-2. Keyboard matrix configuration
-     #define MATRIX_ROWS 8
-     #define MATRIX_COLS 8
-     #define MATRIX_HAS_GHOST
-3. Mouse keys configuration if needed.
-4. PS/2 mouse configuration if needed.
-
-
-Debuging & Rescue
------------------
-Use PJRC's hid_listen.exe to see debug messages.
-Press <COMMAND> + H to debug menu. 
-(see config.h for <COMMAND> key combination.)
-
-Pressing any 3 keys when connected enables debug output.
-Pressing any 4 keys when connected makes bootloader comes up.
-
-
-Projects related
-----------------
-PJRC USB Keyboard/Mouse Example
-    http://www.pjrc.com/teensy/usb_keyboard.html
-    http://www.pjrc.com/teensy/usb_mouse.html
-kbupgrade
-    http://github.com/rhomann/kbupgrade
-    http://geekhack.org/showwiki.php?title=Island:8406
-c64key
-    http://symlink.dk/projects/c64key/
-rump
-    http://mg8.org/rump/
-    http://github.com/clee/rump
-dulcimer
-    http://www.schatenseite.de/dulcimer.html
-humblehacker-keyboard
-    http://github.com/humblehacker
-    http://www.humblehacker.com/keyboard/
-    http://geekhack.org/showwiki.php?title=Island:6292
-ps2avr
-    http://sourceforge.net/projects/ps2avr/
-
-
-EOF
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..d6d8fb4ec8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,184 @@
+t.m.k. Keyboard Firmware Collection
+====================================
+This is a keyboard firmware with some features for Atmel AVR controller.
+
+Source code is available here: <http://github.com/tmk/tmk_keyboard>
+
+
+Features
+--------
+* Mouse key - Mouse control by keyboard
+* System Control Key - Power Down, Sleep, Wake Up and USB Remote Wake up
+* Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc. 
+* USB NKRO - Can send 120 keys(+ 8 modifiers) simultaneously.
+* PS/2 mouse support - integrate PS/2 mouse(TrackPoint) into keyboard as composite device.
+
+
+Projects
+--------
+### converter
+* [ps2_usb][c1] - [PS/2 keyboard to USB][GH_ps2]
+* [adb_usb][c2] - [ADB keyboard to USB][GH_adb]
+* [m0110_usb][c3] - [Machintosh 128K/512K/Plus keyboard to USB][GH_m0110]
+* [terminal_usb][c4] - [IBM Model M terminal keyboard(PS/2 scancode set3) to USB][GH_terminal]
+* [news_usb][c5] - [Sony NEWS keyboard to USB][GH_news]
+* [x68k_usb][c6] - [Sharp X68000 keyboard to USB][GH_x68k]
+
+### keyboard
+* [hhkb][k1] - [Happy Hacking Keyboard professional][GH_hhkb]
+* [macway][k2] - [Compact keyboard mod][GH_macway]
+* [hbkb][k3] - [Happy Buckling sprint keyboard(IBM Model M mod)][GH_hbkb]
+
+[c1]:   converter/ps2_usb/
+[c2]:   converter/adb_usb/
+[c3]:   converter/m0110_usb/
+[c4]:   converter/terminal_usb/
+[c5]:   converter/news_usb/
+[c6]:   converter/x68k_usb/
+[k1]:   keyboard/hhkb
+[k2]:   keyboard/macway
+[k3]:   keyboard/hbkb
+[GH_macway]:    http://geekhack.org/showwiki.php?title=Island:11930
+[GH_hhkb]:      http://geekhack.org/showwiki.php?title=Island:12047
+[GH_ps2]:       http://geekhack.org/showwiki.php?title=Island:14618
+[GH_adb]:       http://geekhack.org/showwiki.php?title=Island:14290
+[GH_hhkb_bt]:   http://geekhack.org/showwiki.php?title=Island:20851
+[GH_m0110]:     http://geekhack.org/showwiki.php?title=Island:24965
+[GH_news]:      http://geekhack.org/showwiki.php?title=Island:25759
+[GH_terminal]:  http://geekhack.org/showwiki.php?title=Island:27272
+[GH_x68k]:      http://geekhack.org/showwiki.php?title=Island:29060
+[GH_hbkb]:      http://geekhack.org/showwiki.php?title=Island:29483
+
+
+
+Files & Directories
+-------------------
+### Top
+* [common/](common/)        - common codes
+* [protocol/](protocol/)    - keyboard protocol support
+* [keyboard/](keyboard/)    - keyboard projects
+* [converter/](converter/)  - protocol converter projects
+* [doc/](doc/)              - documents
+
+### Keyboard Protocols
+* [pjrc/](protocol/pjrc/)     - PJRC USB stack
+* [vusb/](protocol/vusb/)     - Objective Development V-USB
+* [iwrap/](protocol/iwrap)    - Bluetooth HID for Bluegiga iWRAP
+* [ps2.c](protocol/ps2.c)     - PS/2 protocol
+* [adb.c](protocol/adb.c)     - Apple Desktop Bus protocol
+* [m0110.c](protocol/m0110.c) - Macintosh 128K/512K/Plus keyboard protocol
+* [news.c](protocol/news.c)   - Sony NEWS keyboard protocol
+* [x68k.c](protocol/x68k.c)   - Sharp X68000 keyboard protocol
+
+
+Build & Program
+---------------
+### Build firmware
+To compile you need `AVR GCC`, `AVR Libc` and `GNU make`.
+You can use [WinAVR][winavr] on Windows and [CrossPack][crosspack] on Mac.
+
+    $ cd <project>
+    $ make
+
+The firmware will be compiled as a file `tmk_<project>.hex`.
+
+[winavr]:       http://winavr.sourceforge.net/
+[crosspack]:    http://www.obdev.at/products/crosspack/index.html
+
+### Program Controller
+If you have proper program command in Makefile just type this.
+
+    $ make program
+
+As for `Teensy` you can use `PJRC's loader` to program hex file. <http://www.pjrc.com/teensy/loader.html>
+
+
+
+Build Options
+-------------
+### `Makefile`
+#### 1. MCU and Frequency.
+    MCU = atmega32u4       # Teensy 2.0
+    #MCU = at90usb1286      # Teensy++ 2.0
+    F_CPU = 16000000
+
+#### 2. Features
+Note that ***comment out*** to disable them.
+    MOUSEKEY_ENABLE = yes	# Mouse keys
+    PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support
+    EXTRAKEY_ENABLE = yes	# Enhanced feature for Windows(Audio control and System control)
+    NKRO_ENABLE = yes		# USB Nkey Rollover
+
+#### 3. Programmer
+Set proper command for your controller, bootloader and programmer.
+    # for PJRC Teensy
+    PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
+
+    # for Atmel AT90USBKEY
+    PROGRAM_CMD = dfu-programmer $(MCU) flash $(TARGET).hex
+
+    # avrdude
+    PROGRAM_CMD = avrdude -p $(MCU) -c avrispmkII -P USB -U flash:w:$(TARGET).hex
+    PROGRAM_CMD = avrdude -p $(MCU) -c usbasp -U flash:w:$(TARGET).hex
+    PROGRAM_CMD = avrdude -p $(MCU) -c arduino -P COM1 -b 57600 -U flash:w:$(TARGET).hex
+
+### `config.h`
+#### 1. USB vendor/product ID and device description
+    #define VENDOR_ID       0xFEED
+    #define PRODUCT_ID      0xBEEF
+    /* device description */
+    #define MANUFACTURER    t.m.k.
+    #define PRODUCT         Macway mod
+    #define DESCRIPTION     t.m.k. keyboard firmware for Macway mod
+
+#### 2. Keyboard matrix configuration
+    #define MATRIX_ROWS 8
+    #define MATRIX_COLS 8
+    #define MATRIX_HAS_GHOST
+
+### 3. Mouse keys configuration
+
+### 4. PS/2 mouse configuration
+
+
+Keymap
+------
+
+
+Build your own firmware
+-----------------------
+
+
+Debuging
+--------
+Use PJRC's `hid_listen` to see debug messages and press `<COMMAND> + H` to debug menu. 
+See `config.h` for definition of `<COMMAND>` key combination.
+
+
+Other Keyboard Projects
+-----------------------
+### PJRC USB Keyboard/Mouse Example
+- <http://www.pjrc.com/teensy/usb_keyboard.html>
+- <http://www.pjrc.com/teensy/usb_mouse.html>
+
+### kbupgrade
+- <http://github.com/rhomann/kbupgrade>
+- <http://geekhack.org/showwiki.php?title=Island:8406>
+
+### c64key
+- <http://symlink.dk/projects/c64key/>
+
+### rump
+- <http://mg8.org/rump/>
+- <http://github.com/clee/rump>
+
+### dulcimer
+- <http://www.schatenseite.de/dulcimer.html>
+
+### humblehacker-keyboard
+- <http://github.com/humblehacker>
+- <http://www.humblehacker.com/keyboard/>
+- <http://geekhack.org/showwiki.php?title=Island:6292>
+
+### ps2avr
+- <http://sourceforge.net/projects/ps2avr/>
diff --git a/common.mk b/common.mk
index 03cbc296d8..d0e04df862 100644
--- a/common.mk
+++ b/common.mk
@@ -33,7 +33,4 @@ ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE)
 endif
 
 # Search Path
-VPATH += $(COMMON_DIR)
-
-
-include $(COMMON_DIR)/rules.mk
+VPATH += $(TOP_DIR)/common
diff --git a/bootloader.c b/common/bootloader.c
index 5cbfc72e5b..5cbfc72e5b 100644
--- a/bootloader.c
+++ b/common/bootloader.c
diff --git a/bootloader.h b/common/bootloader.h
index 44775039d5..44775039d5 100644
--- a/bootloader.h
+++ b/common/bootloader.h
diff --git a/command.c b/common/command.c
index e325a5d847..e325a5d847 100644
--- a/command.c
+++ b/common/command.c
diff --git a/command.h b/common/command.h
index 4888f5ee0b..4888f5ee0b 100644
--- a/command.h
+++ b/common/command.h
diff --git a/controller_teensy.h b/common/controller_teensy.h
index 6c3f47ce4e..6c3f47ce4e 100644
--- a/controller_teensy.h
+++ b/common/controller_teensy.h
diff --git a/debug.h b/common/debug.h
index 230d3b3499..230d3b3499 100644
--- a/debug.h
+++ b/common/debug.h
diff --git a/host.c b/common/host.c
index cc26d55c22..cc26d55c22 100644
--- a/host.c
+++ b/common/host.c
diff --git a/host.h b/common/host.h
index 11b9aacd7c..11b9aacd7c 100644
--- a/host.h
+++ b/common/host.h
diff --git a/host_driver.h b/common/host_driver.h
index edb9e5dd9c..edb9e5dd9c 100644
--- a/host_driver.h
+++ b/common/host_driver.h
diff --git a/keyboard.c b/common/keyboard.c
index 5c2643c951..5c2643c951 100644
--- a/keyboard.c
+++ b/common/keyboard.c
diff --git a/keyboard.h b/common/keyboard.h
index 988dac36ed..988dac36ed 100644
--- a/keyboard.h
+++ b/common/keyboard.h
diff --git a/keymap.h b/common/keymap.h
index 7dfd6c2a1b..7dfd6c2a1b 100644
--- a/keymap.h
+++ b/common/keymap.h
diff --git a/layer.c b/common/layer.c
index 0854eede0d..0854eede0d 100644
--- a/layer.c
+++ b/common/layer.c
diff --git a/layer.h b/common/layer.h
index d9e8cebb8f..d9e8cebb8f 100644
--- a/layer.h
+++ b/common/layer.h
diff --git a/led.h b/common/led.h
index 402a247b9a..402a247b9a 100644
--- a/led.h
+++ b/common/led.h
diff --git a/matrix.h b/common/matrix.h
index c4b2cab518..c4b2cab518 100644
--- a/matrix.h
+++ b/common/matrix.h
diff --git a/mousekey.c b/common/mousekey.c
index 76bd0fd363..76bd0fd363 100755..100644
--- a/mousekey.c
+++ b/common/mousekey.c
diff --git a/mousekey.h b/common/mousekey.h
index c2c24e9fa5..c2c24e9fa5 100644
--- a/mousekey.h
+++ b/common/mousekey.h
diff --git a/print.c b/common/print.c
index 558181ea72..558181ea72 100644
--- a/print.c
+++ b/common/print.c
diff --git a/print.h b/common/print.h
index 686fa89acc..686fa89acc 100644
--- a/print.h
+++ b/common/print.h
diff --git a/report.h b/common/report.h
index b85b86c5f8..b85b86c5f8 100644
--- a/report.h
+++ b/common/report.h
diff --git a/sendchar.h b/common/sendchar.h
index 7c81303c7a..7c81303c7a 100644
--- a/sendchar.h
+++ b/common/sendchar.h
diff --git a/sendchar_null.c b/common/sendchar_null.c
index 2933306228..2933306228 100644
--- a/sendchar_null.c
+++ b/common/sendchar_null.c
diff --git a/sendchar_uart.c b/common/sendchar_uart.c
index 0241859eb7..0241859eb7 100644
--- a/sendchar_uart.c
+++ b/common/sendchar_uart.c
diff --git a/timer.c b/common/timer.c
index 48a38c9b68..48a38c9b68 100644
--- a/timer.c
+++ b/common/timer.c
diff --git a/timer.h b/common/timer.h
index f9e8181e6f..f9e8181e6f 100644
--- a/timer.h
+++ b/common/timer.h
diff --git a/uart.c b/common/uart.c
index c17649b082..c17649b082 100644
--- a/uart.c
+++ b/common/uart.c
diff --git a/uart.h b/common/uart.h
index 41136a396f..41136a396f 100644
--- a/uart.h
+++ b/common/uart.h
diff --git a/usb_keycodes.h b/common/usb_keycodes.h
index 9b6cce1532..9b6cce1532 100644
--- a/usb_keycodes.h
+++ b/common/usb_keycodes.h
diff --git a/util.c b/common/util.c
index 36afdd4470..36afdd4470 100644
--- a/util.c
+++ b/common/util.c
diff --git a/util.h b/common/util.h
index 66bccbfa58..66bccbfa58 100644
--- a/util.h
+++ b/common/util.h
diff --git a/adb_usb/Makefile b/converter/adb_usb/Makefile
index f4c5031cb6..64a23d09dc 100644
--- a/adb_usb/Makefile
+++ b/converter/adb_usb/Makefile
@@ -2,7 +2,7 @@
 TARGET = adb_usb
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -48,5 +48,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/adb_usb/README b/converter/adb_usb/README
index 5d0e1bc86b..5d0e1bc86b 100644
--- a/adb_usb/README
+++ b/converter/adb_usb/README
diff --git a/adb_usb/config.h b/converter/adb_usb/config.h
index 52d5925a50..52d5925a50 100644
--- a/adb_usb/config.h
+++ b/converter/adb_usb/config.h
diff --git a/adb_usb/keymap.c b/converter/adb_usb/keymap.c
index cdaa935d32..cdaa935d32 100644
--- a/adb_usb/keymap.c
+++ b/converter/adb_usb/keymap.c
diff --git a/adb_usb/led.c b/converter/adb_usb/led.c
index 0e162f379b..0e162f379b 100644
--- a/adb_usb/led.c
+++ b/converter/adb_usb/led.c
diff --git a/adb_usb/matrix.c b/converter/adb_usb/matrix.c
index a2367af56a..a2367af56a 100644
--- a/adb_usb/matrix.c
+++ b/converter/adb_usb/matrix.c
diff --git a/m0110_usb/Makefile b/converter/m0110_usb/Makefile
index fccfaa521b..4a687b9333 100644
--- a/m0110_usb/Makefile
+++ b/converter/m0110_usb/Makefile
@@ -2,7 +2,7 @@
 TARGET = m0110
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -48,8 +48,10 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
 
 hasu: EXTRAFLAGS += -DHASU
 hasu: all
diff --git a/m0110_usb/README.md b/converter/m0110_usb/README.md
index 0ad3631f7c..0ad3631f7c 100644
--- a/m0110_usb/README.md
+++ b/converter/m0110_usb/README.md
diff --git a/m0110_usb/config.h b/converter/m0110_usb/config.h
index 4563d6da54..4563d6da54 100644
--- a/m0110_usb/config.h
+++ b/converter/m0110_usb/config.h
diff --git a/m0110_usb/doc/m0110.jpg b/converter/m0110_usb/doc/m0110.jpg
index ef9a123abc..ef9a123abc 100644
--- a/m0110_usb/doc/m0110.jpg
+++ b/converter/m0110_usb/doc/m0110.jpg
Binary files differdiff --git a/m0110_usb/doc/teensy.jpg b/converter/m0110_usb/doc/teensy.jpg
index 96e93e7e24..96e93e7e24 100644
--- a/m0110_usb/doc/teensy.jpg
+++ b/converter/m0110_usb/doc/teensy.jpg
Binary files differdiff --git a/m0110_usb/keymap.c b/converter/m0110_usb/keymap.c
index b5cdd300bf..b5cdd300bf 100644
--- a/m0110_usb/keymap.c
+++ b/converter/m0110_usb/keymap.c
diff --git a/m0110_usb/led.c b/converter/m0110_usb/led.c
index f76545f0ba..f76545f0ba 100644
--- a/m0110_usb/led.c
+++ b/converter/m0110_usb/led.c
diff --git a/m0110_usb/matrix.c b/converter/m0110_usb/matrix.c
index 1ca6894c44..1ca6894c44 100644
--- a/m0110_usb/matrix.c
+++ b/converter/m0110_usb/matrix.c
diff --git a/sony_usb/Makefile.pjrc b/converter/news_usb/Makefile.pjrc
index 2a4eeff13a..376133ad5e 100644
--- a/sony_usb/Makefile.pjrc
+++ b/converter/news_usb/Makefile.pjrc
@@ -7,7 +7,7 @@
 TARGET = news_usb_pjrc
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -52,5 +52,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/sony_usb/config_pjrc.h b/converter/news_usb/config_pjrc.h
index e9cf7dedb6..e9cf7dedb6 100644
--- a/sony_usb/config_pjrc.h
+++ b/converter/news_usb/config_pjrc.h
diff --git a/sony_usb/keymap.c b/converter/news_usb/keymap.c
index 4bd556ba09..4bd556ba09 100644
--- a/sony_usb/keymap.c
+++ b/converter/news_usb/keymap.c
diff --git a/sony_usb/led.c b/converter/news_usb/led.c
index 51e601318a..51e601318a 100644
--- a/sony_usb/led.c
+++ b/converter/news_usb/led.c
diff --git a/sony_usb/matrix.c b/converter/news_usb/matrix.c
index bf363e7d9b..bf363e7d9b 100644
--- a/sony_usb/matrix.c
+++ b/converter/news_usb/matrix.c
diff --git a/ps2_usb/Makefile b/converter/ps2_usb/Makefile
index f003aea01d..0bba191a38 100644
--- a/ps2_usb/Makefile
+++ b/converter/ps2_usb/Makefile
@@ -7,7 +7,7 @@
 TARGET = ps2_usb_pjrc
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -52,5 +52,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/ps2_usb/Makefile.pjrc_usart b/converter/ps2_usb/Makefile.pjrc_usart
index e620e66c25..3dad7e2f8c 100644
--- a/ps2_usb/Makefile.pjrc_usart
+++ b/converter/ps2_usb/Makefile.pjrc_usart
@@ -7,7 +7,7 @@
 TARGET = ps2_usb_pjrc_usart
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -52,5 +52,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/ps2_usb/Makefile.vusb b/converter/ps2_usb/Makefile.vusb
index 5b6978f015..4d5240c309 100644
--- a/ps2_usb/Makefile.vusb
+++ b/converter/ps2_usb/Makefile.vusb
@@ -7,7 +7,7 @@
 TARGET = ps2_usb_vusb
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -86,5 +86,7 @@ PROGRAM_CMD = $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE
 
 
 
-include $(COMMON_DIR)/vusb.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/vusb.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/ps2_usb/README b/converter/ps2_usb/README
index c10393e5e7..c10393e5e7 100644
--- a/ps2_usb/README
+++ b/converter/ps2_usb/README
diff --git a/ps2_usb/README.vusb b/converter/ps2_usb/README.vusb
index c92871bcdd..c92871bcdd 100644
--- a/ps2_usb/README.vusb
+++ b/converter/ps2_usb/README.vusb
diff --git a/ps2_usb/config_pjrc.h b/converter/ps2_usb/config_pjrc.h
index 883ffab275..883ffab275 100644
--- a/ps2_usb/config_pjrc.h
+++ b/converter/ps2_usb/config_pjrc.h
diff --git a/ps2_usb/config_pjrc_usart.h b/converter/ps2_usb/config_pjrc_usart.h
index 83ddbf7703..83ddbf7703 100644
--- a/ps2_usb/config_pjrc_usart.h
+++ b/converter/ps2_usb/config_pjrc_usart.h
diff --git a/ps2_usb/config_vusb.h b/converter/ps2_usb/config_vusb.h
index afd2f7911f..afd2f7911f 100644
--- a/ps2_usb/config_vusb.h
+++ b/converter/ps2_usb/config_vusb.h
diff --git a/ps2_usb/keymap.c b/converter/ps2_usb/keymap.c
index f1e34a929a..f1e34a929a 100644
--- a/ps2_usb/keymap.c
+++ b/converter/ps2_usb/keymap.c
diff --git a/ps2_usb/led.c b/converter/ps2_usb/led.c
index e448e84ec7..e448e84ec7 100644
--- a/ps2_usb/led.c
+++ b/converter/ps2_usb/led.c
diff --git a/ps2_usb/matrix.c b/converter/ps2_usb/matrix.c
index 4187ea0601..4187ea0601 100644
--- a/ps2_usb/matrix.c
+++ b/converter/ps2_usb/matrix.c
diff --git a/ps2_usb/usbconfig.h b/converter/ps2_usb/usbconfig.h
index 9038f1eb8c..9038f1eb8c 100644
--- a/ps2_usb/usbconfig.h
+++ b/converter/ps2_usb/usbconfig.h
diff --git a/terminal_usb/Makefile.102_pjrc b/converter/terminal_usb/Makefile.102_pjrc
index c1fd397f6c..e9d14e7a05 100644
--- a/terminal_usb/Makefile.102_pjrc
+++ b/converter/terminal_usb/Makefile.102_pjrc
@@ -7,7 +7,7 @@
 TARGET = terminal_usb_102_pjrc
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -52,5 +52,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/terminal_usb/Makefile.122_pjrc b/converter/terminal_usb/Makefile.122_pjrc
index b91e484ff2..bec00510e5 100644
--- a/terminal_usb/Makefile.122_pjrc
+++ b/converter/terminal_usb/Makefile.122_pjrc
@@ -7,7 +7,7 @@
 TARGET = terminal_usb_122_pjrc
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -52,5 +52,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/terminal_usb/README b/converter/terminal_usb/README
index 1ce49f33dc..1ce49f33dc 100644
--- a/terminal_usb/README
+++ b/converter/terminal_usb/README
diff --git a/terminal_usb/config_102_pjrc.h b/converter/terminal_usb/config_102_pjrc.h
index 2dce04af7d..2dce04af7d 100644
--- a/terminal_usb/config_102_pjrc.h
+++ b/converter/terminal_usb/config_102_pjrc.h
diff --git a/terminal_usb/config_122_pjrc.h b/converter/terminal_usb/config_122_pjrc.h
index 43691bd71c..43691bd71c 100644
--- a/terminal_usb/config_122_pjrc.h
+++ b/converter/terminal_usb/config_122_pjrc.h
diff --git a/terminal_usb/keymap_102.c b/converter/terminal_usb/keymap_102.c
index 430570c47b..430570c47b 100644
--- a/terminal_usb/keymap_102.c
+++ b/converter/terminal_usb/keymap_102.c
diff --git a/terminal_usb/keymap_122.c b/converter/terminal_usb/keymap_122.c
index 7a2168122f..7a2168122f 100644
--- a/terminal_usb/keymap_122.c
+++ b/converter/terminal_usb/keymap_122.c
diff --git a/terminal_usb/led.c b/converter/terminal_usb/led.c
index e448e84ec7..e448e84ec7 100644
--- a/terminal_usb/led.c
+++ b/converter/terminal_usb/led.c
diff --git a/terminal_usb/matrix.c b/converter/terminal_usb/matrix.c
index a6eff8c1ec..a6eff8c1ec 100644
--- a/terminal_usb/matrix.c
+++ b/converter/terminal_usb/matrix.c
diff --git a/x68k_usb/Makefile b/converter/x68k_usb/Makefile
index c4b9b221b0..c3b5fa29f3 100644
--- a/x68k_usb/Makefile
+++ b/converter/x68k_usb/Makefile
@@ -7,7 +7,7 @@
 TARGET = x68k_usb_pjrc
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -81,5 +81,7 @@ PROGRAM_CMD = dfu-programmer atmega32u4 flash $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/x68k_usb/README b/converter/x68k_usb/README
index 0b61b2c4b3..0b61b2c4b3 100644
--- a/x68k_usb/README
+++ b/converter/x68k_usb/README
diff --git a/x68k_usb/config_pjrc.h b/converter/x68k_usb/config_pjrc.h
index 20758bf249..20758bf249 100644
--- a/x68k_usb/config_pjrc.h
+++ b/converter/x68k_usb/config_pjrc.h
diff --git a/x68k_usb/keymap.c b/converter/x68k_usb/keymap.c
index 94c2aeee11..94c2aeee11 100644
--- a/x68k_usb/keymap.c
+++ b/converter/x68k_usb/keymap.c
diff --git a/x68k_usb/led.c b/converter/x68k_usb/led.c
index 40156cf4ac..40156cf4ac 100644
--- a/x68k_usb/led.c
+++ b/converter/x68k_usb/led.c
diff --git a/x68k_usb/matrix.c b/converter/x68k_usb/matrix.c
index 954e7ef129..954e7ef129 100644
--- a/x68k_usb/matrix.c
+++ b/converter/x68k_usb/matrix.c
diff --git a/COPYING.GPLv2 b/doc/COPYING.GPLv2
index d159169d10..d159169d10 100644
--- a/COPYING.GPLv2
+++ b/doc/COPYING.GPLv2
diff --git a/COPYING.GPLv3 b/doc/COPYING.GPLv3
index 94a9ed024d..94a9ed024d 100644
--- a/COPYING.GPLv3
+++ b/doc/COPYING.GPLv3
diff --git a/hhkb/FUSE.txt b/doc/FUSE.txt
index 40055e5ab1..40055e5ab1 100644
--- a/hhkb/FUSE.txt
+++ b/doc/FUSE.txt
diff --git a/POWER.txt b/doc/POWER.txt
index 0abbbe48e8..0abbbe48e8 100644
--- a/POWER.txt
+++ b/doc/POWER.txt
diff --git a/USB_NKRO.txt b/doc/USB_NKRO.txt
index 4751bca868..4751bca868 100644
--- a/USB_NKRO.txt
+++ b/doc/USB_NKRO.txt
diff --git a/hbk/Makefile b/keyboard/hbkb/Makefile
index e03b45e3a4..26be322e01 100644
--- a/hbk/Makefile
+++ b/keyboard/hbkb/Makefile
@@ -2,7 +2,7 @@
 TARGET = hbk
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -50,5 +50,7 @@ PROGRAM_CMD = /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) erase && \
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/hbk/config.h b/keyboard/hbkb/config.h
index 5262399dc3..5262399dc3 100644
--- a/hbk/config.h
+++ b/keyboard/hbkb/config.h
diff --git a/hbk/controller_teensy.h b/keyboard/hbkb/controller_teensy.h
index 1b16113654..1b16113654 100644
--- a/hbk/controller_teensy.h
+++ b/keyboard/hbkb/controller_teensy.h
diff --git a/hbk/keymap.c b/keyboard/hbkb/keymap.c
index 1de317c9a3..1de317c9a3 100644
--- a/hbk/keymap.c
+++ b/keyboard/hbkb/keymap.c
diff --git a/hbk/led.c b/keyboard/hbkb/led.c
index fc0eeb0ff7..fc0eeb0ff7 100644
--- a/hbk/led.c
+++ b/keyboard/hbkb/led.c
diff --git a/hbk/matrix.c b/keyboard/hbkb/matrix.c
index d7c0663642..d7c0663642 100644
--- a/hbk/matrix.c
+++ b/keyboard/hbkb/matrix.c
diff --git a/hhkb/Makefile.iwrap b/keyboard/hhkb/Makefile.iwrap
index cf020b94aa..ef7ad2eac2 100644
--- a/hhkb/Makefile.iwrap
+++ b/keyboard/hhkb/Makefile.iwrap
@@ -7,7 +7,7 @@
 TARGET = hhkb_iwrap
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -85,7 +85,9 @@ PROGRAM_CMD = $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE
 # Search Path
 VPATH = $(TARGET_DIR)
 
-include $(COMMON_DIR)/iwrap.mk
+include $(TOP_DIR)/protocol/iwrap.mk
 # To be swatchable btween Bluetooth and USB. Comment out if you don't need USB.
-include $(COMMON_DIR)/vusb.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/vusb.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/hhkb/Makefile.pjrc b/keyboard/hhkb/Makefile.pjrc
index 17aa865ddc..f6d133eae4 100644
--- a/hhkb/Makefile.pjrc
+++ b/keyboard/hhkb/Makefile.pjrc
@@ -7,7 +7,7 @@
 TARGET = hhkb_pjrc
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -54,5 +54,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 # Search Path
 VPATH = $(TARGET_DIR)
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/hhkb/Makefile.vusb b/keyboard/hhkb/Makefile.vusb
index 371b366900..6dd6288077 100644
--- a/hhkb/Makefile.vusb
+++ b/keyboard/hhkb/Makefile.vusb
@@ -7,7 +7,7 @@
 TARGET = hhkb_vusb
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -85,5 +85,7 @@ PROGRAM_CMD = $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE
 # Search Path
 VPATH = $(TARGET_DIR)
 
-include $(COMMON_DIR)/vusb.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/vusb.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/hhkb/README b/keyboard/hhkb/README
index 65f7dcab5a..65f7dcab5a 100644
--- a/hhkb/README
+++ b/keyboard/hhkb/README
diff --git a/hhkb/config_iwrap.h b/keyboard/hhkb/config_iwrap.h
index 80ab64398b..80ab64398b 100644
--- a/hhkb/config_iwrap.h
+++ b/keyboard/hhkb/config_iwrap.h
diff --git a/hhkb/config_pjrc.h b/keyboard/hhkb/config_pjrc.h
index fffe3522c7..fffe3522c7 100644
--- a/hhkb/config_pjrc.h
+++ b/keyboard/hhkb/config_pjrc.h
diff --git a/hhkb/config_vusb.h b/keyboard/hhkb/config_vusb.h
index 268644849e..268644849e 100644
--- a/hhkb/config_vusb.h
+++ b/keyboard/hhkb/config_vusb.h
diff --git a/hhkb/doc/Bluetooth.txt b/keyboard/hhkb/doc/Bluetooth.txt
index b27f197006..b27f197006 100644
--- a/hhkb/doc/Bluetooth.txt
+++ b/keyboard/hhkb/doc/Bluetooth.txt
diff --git a/hhkb/doc/Bluetooth_img/.picasa.ini b/keyboard/hhkb/doc/Bluetooth_img/.picasa.ini
index f6a4f60674..f6a4f60674 100755
--- a/hhkb/doc/Bluetooth_img/.picasa.ini
+++ b/keyboard/hhkb/doc/Bluetooth_img/.picasa.ini
diff --git a/hhkb/doc/Bluetooth_img/BT_circuit.jpg b/keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg
index 2e5a25e81e..2e5a25e81e 100755..100644
--- a/hhkb/doc/Bluetooth_img/BT_circuit.jpg
+++ b/keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg
Binary files differdiff --git a/hhkb/doc/HHKB.txt b/keyboard/hhkb/doc/HHKB.txt
index ace931de38..ace931de38 100644
--- a/hhkb/doc/HHKB.txt
+++ b/keyboard/hhkb/doc/HHKB.txt
diff --git a/hhkb/doc/HHKB_img/HHKB_TP1684.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg
index 0a03164094..0a03164094 100644
--- a/hhkb/doc/HHKB_img/HHKB_TP1684.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/HHKB_chart1.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg
index 1f09bd185c..1f09bd185c 100644
--- a/hhkb/doc/HHKB_img/HHKB_chart1.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/HHKB_chart2.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg
index 45f5ada905..45f5ada905 100644
--- a/hhkb/doc/HHKB_img/HHKB_chart2.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/HHKB_connector.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg
index e8a09e9b28..e8a09e9b28 100644
--- a/hhkb/doc/HHKB_img/HHKB_connector.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/HHKB_controller.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg
index e3dae8e86c..e3dae8e86c 100644
--- a/hhkb/doc/HHKB_img/HHKB_controller.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg
index 3afc269e7b..3afc269e7b 100644
--- a/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/connector_contact.jpg b/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg
index 5304bc8d7e..5304bc8d7e 100644
--- a/hhkb/doc/HHKB_img/connector_contact.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/logic_analyzer.jpg b/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg
index f1b438ae77..f1b438ae77 100644
--- a/hhkb/doc/HHKB_img/logic_analyzer.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/probe_contact.jpg b/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg
index dc79afa0cc..dc79afa0cc 100644
--- a/hhkb/doc/HHKB_img/probe_contact.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/teensy_install.jpg b/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg
index 873d988edb..873d988edb 100644
--- a/hhkb/doc/HHKB_img/teensy_install.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg
Binary files differdiff --git a/hhkb/doc/HHKB_img/teensy_wiring.jpg b/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg
index 1c4eb67434..1c4eb67434 100644
--- a/hhkb/doc/HHKB_img/teensy_wiring.jpg
+++ b/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg
Binary files differdiff --git a/hhkb/keymap.c b/keyboard/hhkb/keymap.c
index 85a7c31b7e..85a7c31b7e 100644
--- a/hhkb/keymap.c
+++ b/keyboard/hhkb/keymap.c
diff --git a/hhkb/led.c b/keyboard/hhkb/led.c
index 669b6107fa..669b6107fa 100644
--- a/hhkb/led.c
+++ b/keyboard/hhkb/led.c
diff --git a/hhkb/matrix.c b/keyboard/hhkb/matrix.c
index 350066b904..350066b904 100644
--- a/hhkb/matrix.c
+++ b/keyboard/hhkb/matrix.c
diff --git a/hhkb/usbconfig.h b/keyboard/hhkb/usbconfig.h
index c3aad34bef..c3aad34bef 100644
--- a/hhkb/usbconfig.h
+++ b/keyboard/hhkb/usbconfig.h
diff --git a/macway/Makefile b/keyboard/macway/Makefile
index b8b0a85e1e..afee38b120 100644
--- a/macway/Makefile
+++ b/keyboard/macway/Makefile
@@ -2,7 +2,7 @@
 TARGET = macway
 
 # Directory common source filess exist
-COMMON_DIR = ..
+TOP_DIR = ../..
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
@@ -47,5 +47,7 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 
 
 
-include $(COMMON_DIR)/pjrc.mk
-include $(COMMON_DIR)/common.mk
+include $(TOP_DIR)/protocol/pjrc.mk
+include $(TOP_DIR)/protocol.mk
+include $(TOP_DIR)/common.mk
+include $(TOP_DIR)/rules.mk
diff --git a/macway/config.h b/keyboard/macway/config.h
index 2e68bf252f..2e68bf252f 100644
--- a/macway/config.h
+++ b/keyboard/macway/config.h
diff --git a/macway/doc/back.jpg b/keyboard/macway/doc/back.jpg
index 0774401f69..0774401f69 100644
--- a/macway/doc/back.jpg
+++ b/keyboard/macway/doc/back.jpg
Binary files differdiff --git a/macway/doc/case.jpg b/keyboard/macway/doc/case.jpg
index c776d5e054..c776d5e054 100644
--- a/macway/doc/case.jpg
+++ b/keyboard/macway/doc/case.jpg
Binary files differdiff --git a/macway/doc/keys.jpg b/keyboard/macway/doc/keys.jpg
index f340ebe8e4..f340ebe8e4 100644
--- a/macway/doc/keys.jpg
+++ b/keyboard/macway/doc/keys.jpg
Binary files differdiff --git a/macway/doc/side.jpg b/keyboard/macway/doc/side.jpg
index bdf8268f25..bdf8268f25 100644
--- a/macway/doc/side.jpg
+++ b/keyboard/macway/doc/side.jpg
Binary files differdiff --git a/macway/doc/switch.jpg b/keyboard/macway/doc/switch.jpg
index a1500d707d..a1500d707d 100644
--- a/macway/doc/switch.jpg
+++ b/keyboard/macway/doc/switch.jpg
Binary files differdiff --git a/macway/doc/teensy.jpg b/keyboard/macway/doc/teensy.jpg
index 07207475d5..07207475d5 100644
--- a/macway/doc/teensy.jpg
+++ b/keyboard/macway/doc/teensy.jpg
Binary files differdiff --git a/macway/doc/wiring.jpg b/keyboard/macway/doc/wiring.jpg
index 0f3490f105..0f3490f105 100644
--- a/macway/doc/wiring.jpg
+++ b/keyboard/macway/doc/wiring.jpg
Binary files differdiff --git a/macway/doc/withHHKB.jpg b/keyboard/macway/doc/withHHKB.jpg
index 9921856e7b..9921856e7b 100644
--- a/macway/doc/withHHKB.jpg
+++ b/keyboard/macway/doc/withHHKB.jpg
Binary files differdiff --git a/macway/doc/withThinkPad.jpg b/keyboard/macway/doc/withThinkPad.jpg
index 231c61d036..231c61d036 100644
--- a/macway/doc/withThinkPad.jpg
+++ b/keyboard/macway/doc/withThinkPad.jpg
Binary files differdiff --git a/macway/keymap.c b/keyboard/macway/keymap.c
index ae9f595fce..ae9f595fce 100644
--- a/macway/keymap.c
+++ b/keyboard/macway/keymap.c
diff --git a/macway/led.c b/keyboard/macway/led.c
index f76545f0ba..f76545f0ba 100644
--- a/macway/led.c
+++ b/keyboard/macway/led.c
diff --git a/macway/matrix.c b/keyboard/macway/matrix.c
index 56fb858960..56fb858960 100644
--- a/macway/matrix.c
+++ b/keyboard/macway/matrix.c
diff --git a/pjrc/host.c b/pjrc/host.c
deleted file mode 100644
index fcf71d5790..0000000000
--- a/pjrc/host.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
-Copyright 2011 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <avr/interrupt.h>
-#include "usb_keycodes.h"
-#include "usb_keyboard.h"
-#if defined(MOUSEKEY_ENABLE) || defined(PS2_MOUSE_ENABLE)
-#include "usb_mouse.h"
-#endif
-#ifdef EXTRAKEY_ENABLE
-#include "usb_extra.h"
-#endif
-#include "debug.h"
-#include "host.h"
-#include "util.h"
-
-
-#ifdef NKRO_ENABLE
-bool keyboard_nkro = false;
-#endif
-
-static report_keyboard_t report0;
-static report_keyboard_t report1;
-report_keyboard_t *keyboard_report = &report0;
-report_keyboard_t *keyboard_report_prev = &report1;
-
-static inline void add_key_byte(uint8_t code);
-static inline void add_key_bit(uint8_t code);
-
-
-uint8_t host_keyboard_leds(void)
-{
-    return usb_keyboard_leds;
-}
-
-/* keyboard report operations */
-void host_add_key(uint8_t key)
-{
-#ifdef NKRO_ENABLE
-    if (keyboard_nkro) {
-        add_key_bit(key);
-        return;
-    }
-#endif
-    add_key_byte(key);
-}
-
-void host_add_mod_bit(uint8_t mod)
-{
-    keyboard_report->mods |= mod;
-}
-
-void host_set_mods(uint8_t mods)
-{
-    keyboard_report->mods = mods;
-}
-
-void host_add_code(uint8_t code)
-{
-    if (IS_MOD(code)) {
-        host_add_mod_bit(MOD_BIT(code));
-    } else {
-        host_add_key(code);
-    }
-}
-
-void host_swap_keyboard_report(void)
-{
-    uint8_t sreg = SREG;
-    cli();
-    report_keyboard_t *tmp = keyboard_report_prev;
-    keyboard_report_prev = keyboard_report;
-    keyboard_report = tmp;
-    SREG = sreg;
-}
-
-void host_clear_keyboard_report(void)
-{
-    keyboard_report->mods = 0;
-    for (int8_t i = 0; i < REPORT_KEYS; i++) {
-        keyboard_report->keys[i] = 0;
-    }
-}
-
-uint8_t host_has_anykey(void)
-{
-    uint8_t cnt = 0;
-    for (int i = 0; i < REPORT_KEYS; i++) {
-        if (keyboard_report->keys[i])
-            cnt++;
-    }
-    return cnt;
-}
-
-uint8_t host_get_first_key(void)
-{
-#ifdef NKRO_ENABLE
-    if (keyboard_nkro) {
-        uint8_t i = 0;
-        for (; i < REPORT_KEYS && !keyboard_report->keys[i]; i++)
-            ;
-        return i<<3 | biton(keyboard_report->keys[i]);
-    }
-#endif
-    return keyboard_report->keys[0];
-}
-
-
-void host_send_keyboard_report(void)
-{
-    usb_keyboard_send_report(keyboard_report);
-}
-
-#if defined(MOUSEKEY_ENABLE) || defined(PS2_MOUSE_ENABLE)
-void host_mouse_send(report_mouse_t *report)
-{
-    usb_mouse_send(report->x, report->y, report->v, report->h, report->buttons);
-}
-#endif
-
-#ifdef EXTRAKEY_ENABLE
-void host_system_send(uint16_t data)
-{
-    usb_extra_system_send(data);
-}
-
-void host_consumer_send(uint16_t data)
-{
-    static uint16_t last_data = 0;
-    if (data == last_data) return;
-    last_data = data;
-
-    usb_extra_consumer_send(data);
-}
-#endif
-
-
-static inline void add_key_byte(uint8_t code)
-{
-    // TODO: fix ugly code
-    int8_t i = 0;
-    int8_t empty = -1;
-    for (; i < REPORT_KEYS; i++) {
-        if (keyboard_report_prev->keys[i] == code) {
-            keyboard_report->keys[i] = code;
-            break;
-        }
-        if (empty == -1 &&
-                keyboard_report_prev->keys[i] == 0 &&
-                keyboard_report->keys[i] == 0) {
-            empty = i;
-        }
-    }
-    if (i == REPORT_KEYS) {
-        if (empty != -1) {
-            keyboard_report->keys[empty] = code;
-        }
-    }
-}
-
-static inline void add_key_bit(uint8_t code)
-{
-    if ((code>>3) < REPORT_KEYS) {
-        keyboard_report->keys[code>>3] |= 1<<(code&7);
-    } else {
-        debug("add_key_bit: can't add: "); phex(code); debug("\n");
-    }
-}
diff --git a/protocol.mk b/protocol.mk
new file mode 100644
index 0000000000..1442c5206b
--- /dev/null
+++ b/protocol.mk
@@ -0,0 +1,2 @@
+# Search Path
+VPATH += $(TOP_DIR)/protocol
diff --git a/adb.c b/protocol/adb.c
index 116f612721..116f612721 100644
--- a/adb.c
+++ b/protocol/adb.c
diff --git a/adb.h b/protocol/adb.h
index 177f413944..177f413944 100644
--- a/adb.h
+++ b/protocol/adb.h
diff --git a/iwrap.mk b/protocol/iwrap.mk
index ea4a6e9720..d9906fd1b4 100644
--- a/iwrap.mk
+++ b/protocol/iwrap.mk
@@ -7,4 +7,4 @@ SRC +=	iwrap.c \
 
 
 # Search Path
-VPATH += $(COMMON_DIR)/iwrap
+VPATH += $(TOP_DIR)/protocol/iwrap
diff --git a/iwrap/iWRAP.txt b/protocol/iwrap/iWRAP.txt
index 2a062d9d98..2a062d9d98 100644
--- a/iwrap/iWRAP.txt
+++ b/protocol/iwrap/iWRAP.txt
diff --git a/iwrap/iwrap.c b/protocol/iwrap/iwrap.c
index 9c68761bf0..9c68761bf0 100644
--- a/iwrap/iwrap.c
+++ b/protocol/iwrap/iwrap.c
diff --git a/iwrap/iwrap.h b/protocol/iwrap/iwrap.h
index ffaad9395d..ffaad9395d 100644
--- a/iwrap/iwrap.h
+++ b/protocol/iwrap/iwrap.h
diff --git a/iwrap/main.c b/protocol/iwrap/main.c
index a552afb67e..a552afb67e 100644
--- a/iwrap/main.c
+++ b/protocol/iwrap/main.c
diff --git a/iwrap/suart.S b/protocol/iwrap/suart.S
index 1b02909638..1b02909638 100644
--- a/iwrap/suart.S
+++ b/protocol/iwrap/suart.S
diff --git a/iwrap/suart.h b/protocol/iwrap/suart.h
index 72725b998f..72725b998f 100644
--- a/iwrap/suart.h
+++ b/protocol/iwrap/suart.h
diff --git a/iwrap/wd.h b/protocol/iwrap/wd.h
index 99058f0331..99058f0331 100644
--- a/iwrap/wd.h
+++ b/protocol/iwrap/wd.h
diff --git a/m0110.c b/protocol/m0110.c
index a669c85a48..a669c85a48 100644
--- a/m0110.c
+++ b/protocol/m0110.c
diff --git a/m0110.h b/protocol/m0110.h
index 2b95ed34d5..2b95ed34d5 100644
--- a/m0110.h
+++ b/protocol/m0110.h
diff --git a/sony_usb/news.c b/protocol/news.c
index d18b996f49..d18b996f49 100644
--- a/sony_usb/news.c
+++ b/protocol/news.c
diff --git a/sony_usb/news.h b/protocol/news.h
index 35e09c4d20..35e09c4d20 100644
--- a/sony_usb/news.h
+++ b/protocol/news.h
diff --git a/pjrc.mk b/protocol/pjrc.mk
index e13a809a1a..1ee45e9ec9 100644
--- a/pjrc.mk
+++ b/protocol/pjrc.mk
@@ -8,7 +8,7 @@ SRC +=	pjrc.c \
 
 
 # Search Path
-VPATH += $(COMMON_DIR):$(COMMON_DIR)/pjrc
+VPATH += $(TOP_DIR)/protocol/pjrc
 
 
 # Option modules
diff --git a/pjrc/bootloader_teensy.c b/protocol/pjrc/bootloader_teensy.c
index 9d34852f16..9d34852f16 100644
--- a/pjrc/bootloader_teensy.c
+++ b/protocol/pjrc/bootloader_teensy.c
diff --git a/pjrc/main.c b/protocol/pjrc/main.c
index 15f14920b4..15f14920b4 100644
--- a/pjrc/main.c
+++ b/protocol/pjrc/main.c
diff --git a/pjrc/pjrc.c b/protocol/pjrc/pjrc.c
index 0562a12ffa..0562a12ffa 100644
--- a/pjrc/pjrc.c
+++ b/protocol/pjrc/pjrc.c
diff --git a/pjrc/pjrc.h b/protocol/pjrc/pjrc.h
index 06e79626fc..06e79626fc 100644
--- a/pjrc/pjrc.h
+++ b/protocol/pjrc/pjrc.h
diff --git a/pjrc/usb.c b/protocol/pjrc/usb.c
index 89087218f3..89087218f3 100644
--- a/pjrc/usb.c
+++ b/protocol/pjrc/usb.c
diff --git a/pjrc/usb.h b/protocol/pjrc/usb.h
index 0eb58fc395..0eb58fc395 100644
--- a/pjrc/usb.h
+++ b/protocol/pjrc/usb.h
diff --git a/pjrc/usb_debug.c b/protocol/pjrc/usb_debug.c
index c1e6f6544b..c1e6f6544b 100644
--- a/pjrc/usb_debug.c
+++ b/protocol/pjrc/usb_debug.c
diff --git a/pjrc/usb_debug.h b/protocol/pjrc/usb_debug.h
index e70f4ca3a7..e70f4ca3a7 100644
--- a/pjrc/usb_debug.h
+++ b/protocol/pjrc/usb_debug.h
diff --git a/pjrc/usb_extra.c b/protocol/pjrc/usb_extra.c
index fe1f422c0d..fe1f422c0d 100644
--- a/pjrc/usb_extra.c
+++ b/protocol/pjrc/usb_extra.c
diff --git a/pjrc/usb_extra.h b/protocol/pjrc/usb_extra.h
index 042ac48373..042ac48373 100644
--- a/pjrc/usb_extra.h
+++ b/protocol/pjrc/usb_extra.h
diff --git a/pjrc/usb_keyboard.c b/protocol/pjrc/usb_keyboard.c
index e057c77fa1..e057c77fa1 100644
--- a/pjrc/usb_keyboard.c
+++ b/protocol/pjrc/usb_keyboard.c
diff --git a/pjrc/usb_keyboard.h b/protocol/pjrc/usb_keyboard.h
index c362ca3b86..c362ca3b86 100644
--- a/pjrc/usb_keyboard.h
+++ b/protocol/pjrc/usb_keyboard.h
diff --git a/pjrc/usb_mouse.c b/protocol/pjrc/usb_mouse.c
index d81db756f3..d81db756f3 100644
--- a/pjrc/usb_mouse.c
+++ b/protocol/pjrc/usb_mouse.c
diff --git a/pjrc/usb_mouse.h b/protocol/pjrc/usb_mouse.h
index eb3056126d..eb3056126d 100644
--- a/pjrc/usb_mouse.h
+++ b/protocol/pjrc/usb_mouse.h
diff --git a/ps2.c b/protocol/ps2.c
index 8a05916210..8a05916210 100644
--- a/ps2.c
+++ b/protocol/ps2.c
diff --git a/ps2.h b/protocol/ps2.h
index 834165356c..834165356c 100644
--- a/ps2.h
+++ b/protocol/ps2.h
diff --git a/ps2_mouse.c b/protocol/ps2_mouse.c
index f796b2b4de..f796b2b4de 100644
--- a/ps2_mouse.c
+++ b/protocol/ps2_mouse.c
diff --git a/ps2_mouse.h b/protocol/ps2_mouse.h
index 4529ce1132..4529ce1132 100644
--- a/ps2_mouse.h
+++ b/protocol/ps2_mouse.h
diff --git a/ps2_usart.c b/protocol/ps2_usart.c
index 7d591c6506..7d591c6506 100644
--- a/ps2_usart.c
+++ b/protocol/ps2_usart.c
diff --git a/vusb.mk b/protocol/vusb.mk
index 9426efb25a..9e8e1fb39e 100644
--- a/vusb.mk
+++ b/protocol/vusb.mk
@@ -16,4 +16,4 @@ endif
 
 
 # Search Path
-VPATH += $(COMMON_DIR)/vusb:$(COMMON_DIR)/vusb/usbdrv
+VPATH += $(TOP_DIR)/protocol/vusb:$(TOP_DIR)/protocol/vusb/usbdrv
diff --git a/vusb/bootloader_usbasp.c b/protocol/vusb/bootloader_usbasp.c
index 6ec99cbf2d..6ec99cbf2d 100644
--- a/vusb/bootloader_usbasp.c
+++ b/protocol/vusb/bootloader_usbasp.c
diff --git a/vusb/main.c b/protocol/vusb/main.c
index 1bf9035b39..1bf9035b39 100644
--- a/vusb/main.c
+++ b/protocol/vusb/main.c
diff --git a/vusb/sendchar_usart.c b/protocol/vusb/sendchar_usart.c
index 8d24f87d1e..8d24f87d1e 100644
--- a/vusb/sendchar_usart.c
+++ b/protocol/vusb/sendchar_usart.c
diff --git a/vusb/usbdrv/Changelog.txt b/protocol/vusb/usbdrv/Changelog.txt
index 5c6354ab1e..5c6354ab1e 100644
--- a/vusb/usbdrv/Changelog.txt
+++ b/protocol/vusb/usbdrv/Changelog.txt
diff --git a/vusb/usbdrv/CommercialLicense.txt b/protocol/vusb/usbdrv/CommercialLicense.txt
index 11d07d9df0..11d07d9df0 100644
--- a/vusb/usbdrv/CommercialLicense.txt
+++ b/protocol/vusb/usbdrv/CommercialLicense.txt
diff --git a/vusb/usbdrv/License.txt b/protocol/vusb/usbdrv/License.txt
index 4460cfbae0..4460cfbae0 100644
--- a/vusb/usbdrv/License.txt
+++ b/protocol/vusb/usbdrv/License.txt
diff --git a/vusb/usbdrv/Readme.txt b/protocol/vusb/usbdrv/Readme.txt
index 970dc66b2f..970dc66b2f 100644
--- a/vusb/usbdrv/Readme.txt
+++ b/protocol/vusb/usbdrv/Readme.txt
diff --git a/vusb/usbdrv/USB-ID-FAQ.txt b/protocol/vusb/usbdrv/USB-ID-FAQ.txt
index d1de8fb618..d1de8fb618 100644
--- a/vusb/usbdrv/USB-ID-FAQ.txt
+++ b/protocol/vusb/usbdrv/USB-ID-FAQ.txt
diff --git a/vusb/usbdrv/USB-IDs-for-free.txt b/protocol/vusb/usbdrv/USB-IDs-for-free.txt
index 2f4d59ad18..2f4d59ad18 100644
--- a/vusb/usbdrv/USB-IDs-for-free.txt
+++ b/protocol/vusb/usbdrv/USB-IDs-for-free.txt
diff --git a/vusb/usbdrv/asmcommon.inc b/protocol/vusb/usbdrv/asmcommon.inc
index 07d692be3b..07d692be3b 100644
--- a/vusb/usbdrv/asmcommon.inc
+++ b/protocol/vusb/usbdrv/asmcommon.inc
diff --git a/vusb/usbdrv/oddebug.c b/protocol/vusb/usbdrv/oddebug.c
index 945457c1f4..945457c1f4 100644
--- a/vusb/usbdrv/oddebug.c
+++ b/protocol/vusb/usbdrv/oddebug.c
diff --git a/vusb/usbdrv/oddebug.h b/protocol/vusb/usbdrv/oddebug.h
index d61309daac..d61309daac 100644
--- a/vusb/usbdrv/oddebug.h
+++ b/protocol/vusb/usbdrv/oddebug.h
diff --git a/vusb/usbdrv/usbconfig-prototype.h b/protocol/vusb/usbdrv/usbconfig-prototype.h
index 847710e2a0..847710e2a0 100644
--- a/vusb/usbdrv/usbconfig-prototype.h
+++ b/protocol/vusb/usbdrv/usbconfig-prototype.h
diff --git a/vusb/usbdrv/usbdrv.c b/protocol/vusb/usbdrv/usbdrv.c
index 21ed554f86..21ed554f86 100644
--- a/vusb/usbdrv/usbdrv.c
+++ b/protocol/vusb/usbdrv/usbdrv.c
diff --git a/vusb/usbdrv/usbdrv.h b/protocol/vusb/usbdrv/usbdrv.h
index 3a78f307bf..3a78f307bf 100644
--- a/vusb/usbdrv/usbdrv.h
+++ b/protocol/vusb/usbdrv/usbdrv.h
diff --git a/vusb/usbdrv/usbdrvasm.S b/protocol/vusb/usbdrv/usbdrvasm.S
index 45fcf18315..45fcf18315 100644
--- a/vusb/usbdrv/usbdrvasm.S
+++ b/protocol/vusb/usbdrv/usbdrvasm.S
diff --git a/vusb/usbdrv/usbdrvasm.asm b/protocol/vusb/usbdrv/usbdrvasm.asm
index 9cc4e4d739..9cc4e4d739 100644
--- a/vusb/usbdrv/usbdrvasm.asm
+++ b/protocol/vusb/usbdrv/usbdrvasm.asm
diff --git a/vusb/usbdrv/usbdrvasm12.inc b/protocol/vusb/usbdrv/usbdrvasm12.inc
index c1167584cb..c1167584cb 100644
--- a/vusb/usbdrv/usbdrvasm12.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm12.inc
diff --git a/vusb/usbdrv/usbdrvasm128.inc b/protocol/vusb/usbdrv/usbdrvasm128.inc
index bcd6621cc2..bcd6621cc2 100644
--- a/vusb/usbdrv/usbdrvasm128.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm128.inc
diff --git a/vusb/usbdrv/usbdrvasm15.inc b/protocol/vusb/usbdrv/usbdrvasm15.inc
index 401b7f8fff..401b7f8fff 100644
--- a/vusb/usbdrv/usbdrvasm15.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm15.inc
diff --git a/vusb/usbdrv/usbdrvasm16.inc b/protocol/vusb/usbdrv/usbdrvasm16.inc
index 207b6e48a1..207b6e48a1 100644
--- a/vusb/usbdrv/usbdrvasm16.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm16.inc
diff --git a/vusb/usbdrv/usbdrvasm165.inc b/protocol/vusb/usbdrv/usbdrvasm165.inc
index 79b3c61cf8..79b3c61cf8 100644
--- a/vusb/usbdrv/usbdrvasm165.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm165.inc
diff --git a/vusb/usbdrv/usbdrvasm18-crc.inc b/protocol/vusb/usbdrv/usbdrvasm18-crc.inc
index f83347df7f..f83347df7f 100644
--- a/vusb/usbdrv/usbdrvasm18-crc.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm18-crc.inc
diff --git a/vusb/usbdrv/usbdrvasm20.inc b/protocol/vusb/usbdrv/usbdrvasm20.inc
index 303abaf64c..303abaf64c 100644
--- a/vusb/usbdrv/usbdrvasm20.inc
+++ b/protocol/vusb/usbdrv/usbdrvasm20.inc
diff --git a/vusb/usbdrv/usbportability.h b/protocol/vusb/usbdrv/usbportability.h
index 476184dc68..476184dc68 100644
--- a/vusb/usbdrv/usbportability.h
+++ b/protocol/vusb/usbdrv/usbportability.h
diff --git a/vusb/vusb.c b/protocol/vusb/vusb.c
index 0bfe21e92e..0bfe21e92e 100644
--- a/vusb/vusb.c
+++ b/protocol/vusb/vusb.c
diff --git a/vusb/vusb.h b/protocol/vusb/vusb.h
index 5accf233be..5accf233be 100644
--- a/vusb/vusb.h
+++ b/protocol/vusb/vusb.h
diff --git a/x68k_usb/x68k.c b/protocol/x68k.c
index d17af51cc2..d17af51cc2 100644
--- a/x68k_usb/x68k.c
+++ b/protocol/x68k.c
diff --git a/x68k_usb/x68k.h b/protocol/x68k.h
index 2cfda63a7a..2cfda63a7a 100644
--- a/x68k_usb/x68k.h
+++ b/protocol/x68k.h
diff --git a/rules.mk b/rules.mk
index 9143f9bcff..104031fbb2 100644
--- a/rules.mk
+++ b/rules.mk
@@ -121,7 +121,9 @@ CFLAGS += -Wstrict-prototypes
 CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
 CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
 CFLAGS += $(CSTANDARD)
-CFLAGS += -include $(CONFIG_H)
+ifdef CONFIG_H
+    CFLAGS += -include $(CONFIG_H)
+endif
 
 
 #---------------- Compiler Options C++ ----------------
@@ -149,7 +151,9 @@ CPPFLAGS += -Wundef
 CPPFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
 CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
 #CPPFLAGS += $(CSTANDARD)
-CPPFLAGS += -include $(CONFIG_H)
+ifdef CONFIG_H
+    CPPFLAGS += -include $(CONFIG_H)
+endif
 
 
 #---------------- Assembler Options ----------------
@@ -162,7 +166,9 @@ CPPFLAGS += -include $(CONFIG_H)
 #  -listing-cont-lines: Sets the maximum number of continuation lines of hex 
 #       dump that will be displayed for a given single line of source input.
 ASFLAGS = $(ADEFS) -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100
-ASFLAGS += -include $(CONFIG_H)
+ifdef CONFIG_H
+    ASFLAGS += -include $(CONFIG_H)
+endif
 
 
 #---------------- Library Options ----------------