summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 differ
diff --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 ----------------