~ruther/qmk_firmware

62d1ebb91c7b381ce3d88aad9ee0b03bea9fce26 — tmk 13 years ago 225de7a + 81706d1
Merge branch 'newdir'
199 files changed, 270 insertions(+), 414 deletions(-)

D LICENSE.txt
D README
A README.md
M common.mk
R {bootloader => common/bootloader}.c
R {bootloader => common/bootloader}.h
R {command => common/command}.c
R {command => common/command}.h
R {controller_teensy => common/controller_teensy}.h
R {debug => common/debug}.h
R {host => common/host}.c
R {host => common/host}.h
R {host_driver => common/host_driver}.h
R {keyboard => common/keyboard}.c
R {keyboard => common/keyboard}.h
R {keymap => common/keymap}.h
R {layer => common/layer}.c
R {layer => common/layer}.h
R {led => common/led}.h
R {matrix => common/matrix}.h
R {mousekey => common/mousekey}.c -rwxr-xr-x => -rw-r--r--
R {mousekey => common/mousekey}.h
R {print => common/print}.c
R {print => common/print}.h
R {report => common/report}.h
R {sendchar => common/sendchar}.h
R {sendchar_null => common/sendchar_null}.c
R {sendchar_uart => common/sendchar_uart}.c
R {timer => common/timer}.c
R {timer => common/timer}.h
R {uart => common/uart}.c
R {uart => common/uart}.h
R {usb_keycodes => common/usb_keycodes}.h
R {util => common/util}.c
R {util => common/util}.h
R {adb_usb => converter/adb_usb}/Makefile
R {adb_usb => converter/adb_usb}/README
R {adb_usb => converter/adb_usb}/config.h
R {adb_usb => converter/adb_usb}/keymap.c
R {adb_usb => converter/adb_usb}/led.c
R {adb_usb => converter/adb_usb}/matrix.c
R {m0110_usb => converter/m0110_usb}/Makefile
R {m0110_usb => converter/m0110_usb}/README.md
R {m0110_usb => converter/m0110_usb}/config.h
R {m0110_usb => converter/m0110_usb}/doc/m0110.jpg
R {m0110_usb => converter/m0110_usb}/doc/teensy.jpg
R {m0110_usb => converter/m0110_usb}/keymap.c
R {m0110_usb => converter/m0110_usb}/led.c
R {m0110_usb => converter/m0110_usb}/matrix.c
R {sony_usb => converter/news_usb}/Makefile.pjrc
R {sony_usb => converter/news_usb}/config_pjrc.h
R {sony_usb => converter/news_usb}/keymap.c
R {sony_usb => converter/news_usb}/led.c
R {sony_usb => converter/news_usb}/matrix.c
R {ps2_usb => converter/ps2_usb}/Makefile
R {ps2_usb => converter/ps2_usb}/Makefile.pjrc_usart
R {ps2_usb => converter/ps2_usb}/Makefile.vusb
R {ps2_usb => converter/ps2_usb}/README
R {ps2_usb => converter/ps2_usb}/README.vusb
R {ps2_usb => converter/ps2_usb}/config_pjrc.h
R {ps2_usb => converter/ps2_usb}/config_pjrc_usart.h
R {ps2_usb => converter/ps2_usb}/config_vusb.h
R {ps2_usb => converter/ps2_usb}/keymap.c
R {ps2_usb => converter/ps2_usb}/led.c
R {ps2_usb => converter/ps2_usb}/matrix.c
R {ps2_usb => converter/ps2_usb}/usbconfig.h
R {terminal_usb => converter/terminal_usb}/Makefile.102_pjrc
R {terminal_usb => converter/terminal_usb}/Makefile.122_pjrc
R {terminal_usb => converter/terminal_usb}/README
R {terminal_usb => converter/terminal_usb}/config_102_pjrc.h
R {terminal_usb => converter/terminal_usb}/config_122_pjrc.h
R {terminal_usb => converter/terminal_usb}/keymap_102.c
R {terminal_usb => converter/terminal_usb}/keymap_122.c
R {terminal_usb => converter/terminal_usb}/led.c
R {terminal_usb => converter/terminal_usb}/matrix.c
R {x68k_usb => converter/x68k_usb}/Makefile
R {x68k_usb => converter/x68k_usb}/README
R {x68k_usb => converter/x68k_usb}/config_pjrc.h
R {x68k_usb => converter/x68k_usb}/keymap.c
R {x68k_usb => converter/x68k_usb}/led.c
R {x68k_usb => converter/x68k_usb}/matrix.c
R {COPYING => doc/COPYING}.GPLv2
R {COPYING => doc/COPYING}.GPLv3
R {hhkb => doc}/FUSE.txt
R {POWER => doc/POWER}.txt
R {USB_NKRO => doc/USB_NKRO}.txt
R {hbk => keyboard/hbkb}/Makefile
R {hbk => keyboard/hbkb}/config.h
R {hbk => keyboard/hbkb}/controller_teensy.h
R {hbk => keyboard/hbkb}/keymap.c
R {hbk => keyboard/hbkb}/led.c
R {hbk => keyboard/hbkb}/matrix.c
R {hhkb => keyboard/hhkb}/Makefile.iwrap
R {hhkb => keyboard/hhkb}/Makefile.pjrc
R {hhkb => keyboard/hhkb}/Makefile.vusb
R {hhkb => keyboard/hhkb}/README
R {hhkb => keyboard/hhkb}/config_iwrap.h
R {hhkb => keyboard/hhkb}/config_pjrc.h
R {hhkb => keyboard/hhkb}/config_vusb.h
R {hhkb => keyboard/hhkb}/doc/Bluetooth.txt
R {hhkb => keyboard/hhkb}/doc/Bluetooth_img/.picasa.ini
R {hhkb => keyboard/hhkb}/doc/Bluetooth_img/BT_circuit.jpg -rwxr-xr-x => -rw-r--r--
R {hhkb => keyboard/hhkb}/doc/HHKB.txt
R {hhkb => keyboard/hhkb}/doc/HHKB_img/HHKB_TP1684.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/HHKB_chart1.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/HHKB_chart2.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/HHKB_connector.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/HHKB_controller.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/HHKB_keyswitch.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/connector_contact.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/logic_analyzer.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/probe_contact.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/teensy_install.jpg
R {hhkb => keyboard/hhkb}/doc/HHKB_img/teensy_wiring.jpg
R {hhkb => keyboard/hhkb}/keymap.c
R {hhkb => keyboard/hhkb}/led.c
R {hhkb => keyboard/hhkb}/matrix.c
R {hhkb => keyboard/hhkb}/usbconfig.h
R {macway => keyboard/macway}/Makefile
R {macway => keyboard/macway}/config.h
R {macway => keyboard/macway}/doc/back.jpg
R {macway => keyboard/macway}/doc/case.jpg
R {macway => keyboard/macway}/doc/keys.jpg
R {macway => keyboard/macway}/doc/side.jpg
R {macway => keyboard/macway}/doc/switch.jpg
R {macway => keyboard/macway}/doc/teensy.jpg
R {macway => keyboard/macway}/doc/wiring.jpg
R {macway => keyboard/macway}/doc/withHHKB.jpg
R {macway => keyboard/macway}/doc/withThinkPad.jpg
R {macway => keyboard/macway}/keymap.c
R {macway => keyboard/macway}/led.c
R {macway => keyboard/macway}/matrix.c
D pjrc/host.c
A protocol.mk
R {adb => protocol/adb}.c
R {adb => protocol/adb}.h
R {iwrap => protocol/iwrap}.mk
R {iwrap => protocol/iwrap}/iWRAP.txt
R {iwrap => protocol/iwrap}/iwrap.c
R {iwrap => protocol/iwrap}/iwrap.h
R {iwrap => protocol/iwrap}/main.c
R {iwrap => protocol/iwrap}/suart.S
R {iwrap => protocol/iwrap}/suart.h
R {iwrap => protocol/iwrap}/wd.h
R {m0110 => protocol/m0110}.c
R {m0110 => protocol/m0110}.h
R {sony_usb => protocol}/news.c
R {sony_usb => protocol}/news.h
R {pjrc => protocol/pjrc}.mk
R {pjrc => protocol/pjrc}/bootloader_teensy.c
R {pjrc => protocol/pjrc}/main.c
R {pjrc => protocol/pjrc}/pjrc.c
R {pjrc => protocol/pjrc}/pjrc.h
R {pjrc => protocol/pjrc}/usb.c
R {pjrc => protocol/pjrc}/usb.h
R {pjrc => protocol/pjrc}/usb_debug.c
R {pjrc => protocol/pjrc}/usb_debug.h
R {pjrc => protocol/pjrc}/usb_extra.c
R {pjrc => protocol/pjrc}/usb_extra.h
R {pjrc => protocol/pjrc}/usb_keyboard.c
R {pjrc => protocol/pjrc}/usb_keyboard.h
R {pjrc => protocol/pjrc}/usb_mouse.c
R {pjrc => protocol/pjrc}/usb_mouse.h
R {ps2 => protocol/ps2}.c
R {ps2 => protocol/ps2}.h
R {ps2_mouse => protocol/ps2_mouse}.c
R {ps2_mouse => protocol/ps2_mouse}.h
R {ps2_usart => protocol/ps2_usart}.c
R {vusb => protocol/vusb}.mk
R {vusb => protocol/vusb}/bootloader_usbasp.c
R {vusb => protocol/vusb}/main.c
R {vusb => protocol/vusb}/sendchar_usart.c
R {vusb => protocol/vusb}/usbdrv/Changelog.txt
R {vusb => protocol/vusb}/usbdrv/CommercialLicense.txt
R {vusb => protocol/vusb}/usbdrv/License.txt
R {vusb => protocol/vusb}/usbdrv/Readme.txt
R {vusb => protocol/vusb}/usbdrv/USB-ID-FAQ.txt
R {vusb => protocol/vusb}/usbdrv/USB-IDs-for-free.txt
R {vusb => protocol/vusb}/usbdrv/asmcommon.inc
R {vusb => protocol/vusb}/usbdrv/oddebug.c
R {vusb => protocol/vusb}/usbdrv/oddebug.h
R {vusb => protocol/vusb}/usbdrv/usbconfig-prototype.h
R {vusb => protocol/vusb}/usbdrv/usbdrv.c
R {vusb => protocol/vusb}/usbdrv/usbdrv.h
R {vusb => protocol/vusb}/usbdrv/usbdrvasm.S
R {vusb => protocol/vusb}/usbdrv/usbdrvasm.asm
R {vusb => protocol/vusb}/usbdrv/usbdrvasm12.inc
R {vusb => protocol/vusb}/usbdrv/usbdrvasm128.inc
R {vusb => protocol/vusb}/usbdrv/usbdrvasm15.inc
R {vusb => protocol/vusb}/usbdrv/usbdrvasm16.inc
R {vusb => protocol/vusb}/usbdrv/usbdrvasm165.inc
R {vusb => protocol/vusb}/usbdrv/usbdrvasm18-crc.inc
R {vusb => protocol/vusb}/usbdrv/usbdrvasm20.inc
R {vusb => protocol/vusb}/usbdrv/usbportability.h
R {vusb => protocol/vusb}/vusb.c
R {vusb => protocol/vusb}/vusb.h
R {x68k_usb => protocol}/x68k.c
R {x68k_usb => protocol}/x68k.h
M rules.mk
D LICENSE.txt => LICENSE.txt +0 -27
@@ 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/

D README => README +0 -151
@@ 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

A README.md => README.md +184 -0
@@ 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/>

M common.mk => common.mk +1 -4
@@ 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

R bootloader.c => common/bootloader.c +0 -0
R bootloader.h => common/bootloader.h +0 -0
R command.c => common/command.c +0 -0
R command.h => common/command.h +0 -0
R controller_teensy.h => common/controller_teensy.h +0 -0
R debug.h => common/debug.h +0 -0
R host.c => common/host.c +0 -0
R host.h => common/host.h +0 -0
R host_driver.h => common/host_driver.h +0 -0
R keyboard.c => common/keyboard.c +0 -0
R keyboard.h => common/keyboard.h +0 -0
R keymap.h => common/keymap.h +0 -0
R layer.c => common/layer.c +0 -0
R layer.h => common/layer.h +0 -0
R led.h => common/led.h +0 -0
R matrix.h => common/matrix.h +0 -0
R mousekey.c => common/mousekey.c +0 -0
R mousekey.h => common/mousekey.h +0 -0
R print.c => common/print.c +0 -0
R print.h => common/print.h +0 -0
R report.h => common/report.h +0 -0
R sendchar.h => common/sendchar.h +0 -0
R sendchar_null.c => common/sendchar_null.c +0 -0
R sendchar_uart.c => common/sendchar_uart.c +0 -0
R timer.c => common/timer.c +0 -0
R timer.h => common/timer.h +0 -0
R uart.c => common/uart.c +0 -0
R uart.h => common/uart.h +0 -0
R usb_keycodes.h => common/usb_keycodes.h +0 -0
R util.c => common/util.c +0 -0
R util.h => common/util.h +0 -0
R adb_usb/Makefile => converter/adb_usb/Makefile +5 -3
@@ 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

R adb_usb/README => converter/adb_usb/README +0 -0
R adb_usb/config.h => converter/adb_usb/config.h +0 -0
R adb_usb/keymap.c => converter/adb_usb/keymap.c +0 -0
R adb_usb/led.c => converter/adb_usb/led.c +0 -0
R adb_usb/matrix.c => converter/adb_usb/matrix.c +0 -0
R m0110_usb/Makefile => converter/m0110_usb/Makefile +5 -3
@@ 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

R m0110_usb/README.md => converter/m0110_usb/README.md +0 -0
R m0110_usb/config.h => converter/m0110_usb/config.h +0 -0
R m0110_usb/doc/m0110.jpg => converter/m0110_usb/doc/m0110.jpg +0 -0
R m0110_usb/doc/teensy.jpg => converter/m0110_usb/doc/teensy.jpg +0 -0
R m0110_usb/keymap.c => converter/m0110_usb/keymap.c +0 -0
R m0110_usb/led.c => converter/m0110_usb/led.c +0 -0
R m0110_usb/matrix.c => converter/m0110_usb/matrix.c +0 -0
R sony_usb/Makefile.pjrc => converter/news_usb/Makefile.pjrc +5 -3
@@ 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

R sony_usb/config_pjrc.h => converter/news_usb/config_pjrc.h +0 -0
R sony_usb/keymap.c => converter/news_usb/keymap.c +0 -0
R sony_usb/led.c => converter/news_usb/led.c +0 -0
R sony_usb/matrix.c => converter/news_usb/matrix.c +0 -0
R ps2_usb/Makefile => converter/ps2_usb/Makefile +5 -3
@@ 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

R ps2_usb/Makefile.pjrc_usart => converter/ps2_usb/Makefile.pjrc_usart +5 -3
@@ 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

R ps2_usb/Makefile.vusb => converter/ps2_usb/Makefile.vusb +5 -3
@@ 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

R ps2_usb/README => converter/ps2_usb/README +0 -0
R ps2_usb/README.vusb => converter/ps2_usb/README.vusb +0 -0
R ps2_usb/config_pjrc.h => converter/ps2_usb/config_pjrc.h +0 -0
R ps2_usb/config_pjrc_usart.h => converter/ps2_usb/config_pjrc_usart.h +0 -0
R ps2_usb/config_vusb.h => converter/ps2_usb/config_vusb.h +0 -0
R ps2_usb/keymap.c => converter/ps2_usb/keymap.c +0 -0
R ps2_usb/led.c => converter/ps2_usb/led.c +0 -0
R ps2_usb/matrix.c => converter/ps2_usb/matrix.c +0 -0
R ps2_usb/usbconfig.h => converter/ps2_usb/usbconfig.h +0 -0
R terminal_usb/Makefile.102_pjrc => converter/terminal_usb/Makefile.102_pjrc +5 -3
@@ 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

R terminal_usb/Makefile.122_pjrc => converter/terminal_usb/Makefile.122_pjrc +5 -3
@@ 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

R terminal_usb/README => converter/terminal_usb/README +0 -0
R terminal_usb/config_102_pjrc.h => converter/terminal_usb/config_102_pjrc.h +0 -0
R terminal_usb/config_122_pjrc.h => converter/terminal_usb/config_122_pjrc.h +0 -0
R terminal_usb/keymap_102.c => converter/terminal_usb/keymap_102.c +0 -0
R terminal_usb/keymap_122.c => converter/terminal_usb/keymap_122.c +0 -0
R terminal_usb/led.c => converter/terminal_usb/led.c +0 -0
R terminal_usb/matrix.c => converter/terminal_usb/matrix.c +0 -0
R x68k_usb/Makefile => converter/x68k_usb/Makefile +5 -3
@@ 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

R x68k_usb/README => converter/x68k_usb/README +0 -0
R x68k_usb/config_pjrc.h => converter/x68k_usb/config_pjrc.h +0 -0
R x68k_usb/keymap.c => converter/x68k_usb/keymap.c +0 -0
R x68k_usb/led.c => converter/x68k_usb/led.c +0 -0
R x68k_usb/matrix.c => converter/x68k_usb/matrix.c +0 -0
R COPYING.GPLv2 => doc/COPYING.GPLv2 +0 -0
R COPYING.GPLv3 => doc/COPYING.GPLv3 +0 -0
R hhkb/FUSE.txt => doc/FUSE.txt +0 -0
R POWER.txt => doc/POWER.txt +0 -0
R USB_NKRO.txt => doc/USB_NKRO.txt +0 -0
R hbk/Makefile => keyboard/hbkb/Makefile +5 -3
@@ 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

R hbk/config.h => keyboard/hbkb/config.h +0 -0
R hbk/controller_teensy.h => keyboard/hbkb/controller_teensy.h +0 -0
R hbk/keymap.c => keyboard/hbkb/keymap.c +0 -0
R hbk/led.c => keyboard/hbkb/led.c +0 -0
R hbk/matrix.c => keyboard/hbkb/matrix.c +0 -0
R hhkb/Makefile.iwrap => keyboard/hhkb/Makefile.iwrap +6 -4
@@ 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

R hhkb/Makefile.pjrc => keyboard/hhkb/Makefile.pjrc +5 -3
@@ 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

R hhkb/Makefile.vusb => keyboard/hhkb/Makefile.vusb +5 -3
@@ 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

R hhkb/README => keyboard/hhkb/README +0 -0
R hhkb/config_iwrap.h => keyboard/hhkb/config_iwrap.h +0 -0
R hhkb/config_pjrc.h => keyboard/hhkb/config_pjrc.h +0 -0
R hhkb/config_vusb.h => keyboard/hhkb/config_vusb.h +0 -0
R hhkb/doc/Bluetooth.txt => keyboard/hhkb/doc/Bluetooth.txt +0 -0
R hhkb/doc/Bluetooth_img/.picasa.ini => keyboard/hhkb/doc/Bluetooth_img/.picasa.ini +0 -0
R hhkb/doc/Bluetooth_img/BT_circuit.jpg => keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg +0 -0
R hhkb/doc/HHKB.txt => keyboard/hhkb/doc/HHKB.txt +0 -0
R hhkb/doc/HHKB_img/HHKB_TP1684.jpg => keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg +0 -0
R hhkb/doc/HHKB_img/HHKB_chart1.jpg => keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg +0 -0
R hhkb/doc/HHKB_img/HHKB_chart2.jpg => keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg +0 -0
R hhkb/doc/HHKB_img/HHKB_connector.jpg => keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg +0 -0
R hhkb/doc/HHKB_img/HHKB_controller.jpg => keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg +0 -0
R hhkb/doc/HHKB_img/HHKB_keyswitch.jpg => keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg +0 -0
R hhkb/doc/HHKB_img/connector_contact.jpg => keyboard/hhkb/doc/HHKB_img/connector_contact.jpg +0 -0
R hhkb/doc/HHKB_img/logic_analyzer.jpg => keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg +0 -0
R hhkb/doc/HHKB_img/probe_contact.jpg => keyboard/hhkb/doc/HHKB_img/probe_contact.jpg +0 -0
R hhkb/doc/HHKB_img/teensy_install.jpg => keyboard/hhkb/doc/HHKB_img/teensy_install.jpg +0 -0
R hhkb/doc/HHKB_img/teensy_wiring.jpg => keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg +0 -0
R hhkb/keymap.c => keyboard/hhkb/keymap.c +0 -0
R hhkb/led.c => keyboard/hhkb/led.c +0 -0
R hhkb/matrix.c => keyboard/hhkb/matrix.c +0 -0
R hhkb/usbconfig.h => keyboard/hhkb/usbconfig.h +0 -0
R macway/Makefile => keyboard/macway/Makefile +5 -3
@@ 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

R macway/config.h => keyboard/macway/config.h +0 -0
R macway/doc/back.jpg => keyboard/macway/doc/back.jpg +0 -0
R macway/doc/case.jpg => keyboard/macway/doc/case.jpg +0 -0
R macway/doc/keys.jpg => keyboard/macway/doc/keys.jpg +0 -0
R macway/doc/side.jpg => keyboard/macway/doc/side.jpg +0 -0
R macway/doc/switch.jpg => keyboard/macway/doc/switch.jpg +0 -0
R macway/doc/teensy.jpg => keyboard/macway/doc/teensy.jpg +0 -0
R macway/doc/wiring.jpg => keyboard/macway/doc/wiring.jpg +0 -0
R macway/doc/withHHKB.jpg => keyboard/macway/doc/withHHKB.jpg +0 -0
R macway/doc/withThinkPad.jpg => keyboard/macway/doc/withThinkPad.jpg +0 -0
R macway/keymap.c => keyboard/macway/keymap.c +0 -0
R macway/led.c => keyboard/macway/led.c +0 -0
R macway/matrix.c => keyboard/macway/matrix.c +0 -0
D pjrc/host.c => pjrc/host.c +0 -183
@@ 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");
    }
}

A protocol.mk => protocol.mk +2 -0
@@ 0,0 1,2 @@
# Search Path
VPATH += $(TOP_DIR)/protocol

R adb.c => protocol/adb.c +0 -0
R adb.h => protocol/adb.h +0 -0
R iwrap.mk => protocol/iwrap.mk +1 -1
@@ 7,4 7,4 @@ SRC +=	iwrap.c \


# Search Path
VPATH += $(COMMON_DIR)/iwrap
VPATH += $(TOP_DIR)/protocol/iwrap

R iwrap/iWRAP.txt => protocol/iwrap/iWRAP.txt +0 -0
R iwrap/iwrap.c => protocol/iwrap/iwrap.c +0 -0
R iwrap/iwrap.h => protocol/iwrap/iwrap.h +0 -0
R iwrap/main.c => protocol/iwrap/main.c +0 -0
R iwrap/suart.S => protocol/iwrap/suart.S +0 -0
R iwrap/suart.h => protocol/iwrap/suart.h +0 -0
R iwrap/wd.h => protocol/iwrap/wd.h +0 -0
R m0110.c => protocol/m0110.c +0 -0
R m0110.h => protocol/m0110.h +0 -0
R sony_usb/news.c => protocol/news.c +0 -0
R sony_usb/news.h => protocol/news.h +0 -0
R pjrc.mk => protocol/pjrc.mk +1 -1
@@ 8,7 8,7 @@ SRC +=	pjrc.c \


# Search Path
VPATH += $(COMMON_DIR):$(COMMON_DIR)/pjrc
VPATH += $(TOP_DIR)/protocol/pjrc


# Option modules

R pjrc/bootloader_teensy.c => protocol/pjrc/bootloader_teensy.c +0 -0
R pjrc/main.c => protocol/pjrc/main.c +0 -0
R pjrc/pjrc.c => protocol/pjrc/pjrc.c +0 -0
R pjrc/pjrc.h => protocol/pjrc/pjrc.h +0 -0
R pjrc/usb.c => protocol/pjrc/usb.c +0 -0
R pjrc/usb.h => protocol/pjrc/usb.h +0 -0
R pjrc/usb_debug.c => protocol/pjrc/usb_debug.c +0 -0
R pjrc/usb_debug.h => protocol/pjrc/usb_debug.h +0 -0
R pjrc/usb_extra.c => protocol/pjrc/usb_extra.c +0 -0
R pjrc/usb_extra.h => protocol/pjrc/usb_extra.h +0 -0
R pjrc/usb_keyboard.c => protocol/pjrc/usb_keyboard.c +0 -0
R pjrc/usb_keyboard.h => protocol/pjrc/usb_keyboard.h +0 -0
R pjrc/usb_mouse.c => protocol/pjrc/usb_mouse.c +0 -0
R pjrc/usb_mouse.h => protocol/pjrc/usb_mouse.h +0 -0
R ps2.c => protocol/ps2.c +0 -0
R ps2.h => protocol/ps2.h +0 -0
R ps2_mouse.c => protocol/ps2_mouse.c +0 -0
R ps2_mouse.h => protocol/ps2_mouse.h +0 -0
R ps2_usart.c => protocol/ps2_usart.c +0 -0
R vusb.mk => protocol/vusb.mk +1 -1
@@ 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

R vusb/bootloader_usbasp.c => protocol/vusb/bootloader_usbasp.c +0 -0
R vusb/main.c => protocol/vusb/main.c +0 -0
R vusb/sendchar_usart.c => protocol/vusb/sendchar_usart.c +0 -0
R vusb/usbdrv/Changelog.txt => protocol/vusb/usbdrv/Changelog.txt +0 -0
R vusb/usbdrv/CommercialLicense.txt => protocol/vusb/usbdrv/CommercialLicense.txt +0 -0
R vusb/usbdrv/License.txt => protocol/vusb/usbdrv/License.txt +0 -0
R vusb/usbdrv/Readme.txt => protocol/vusb/usbdrv/Readme.txt +0 -0
R vusb/usbdrv/USB-ID-FAQ.txt => protocol/vusb/usbdrv/USB-ID-FAQ.txt +0 -0
R vusb/usbdrv/USB-IDs-for-free.txt => protocol/vusb/usbdrv/USB-IDs-for-free.txt +0 -0
R vusb/usbdrv/asmcommon.inc => protocol/vusb/usbdrv/asmcommon.inc +0 -0
R vusb/usbdrv/oddebug.c => protocol/vusb/usbdrv/oddebug.c +0 -0
R vusb/usbdrv/oddebug.h => protocol/vusb/usbdrv/oddebug.h +0 -0
R vusb/usbdrv/usbconfig-prototype.h => protocol/vusb/usbdrv/usbconfig-prototype.h +0 -0
R vusb/usbdrv/usbdrv.c => protocol/vusb/usbdrv/usbdrv.c +0 -0
R vusb/usbdrv/usbdrv.h => protocol/vusb/usbdrv/usbdrv.h +0 -0
R vusb/usbdrv/usbdrvasm.S => protocol/vusb/usbdrv/usbdrvasm.S +0 -0
R vusb/usbdrv/usbdrvasm.asm => protocol/vusb/usbdrv/usbdrvasm.asm +0 -0
R vusb/usbdrv/usbdrvasm12.inc => protocol/vusb/usbdrv/usbdrvasm12.inc +0 -0
R vusb/usbdrv/usbdrvasm128.inc => protocol/vusb/usbdrv/usbdrvasm128.inc +0 -0
R vusb/usbdrv/usbdrvasm15.inc => protocol/vusb/usbdrv/usbdrvasm15.inc +0 -0
R vusb/usbdrv/usbdrvasm16.inc => protocol/vusb/usbdrv/usbdrvasm16.inc +0 -0
R vusb/usbdrv/usbdrvasm165.inc => protocol/vusb/usbdrv/usbdrvasm165.inc +0 -0
R vusb/usbdrv/usbdrvasm18-crc.inc => protocol/vusb/usbdrv/usbdrvasm18-crc.inc +0 -0
R vusb/usbdrv/usbdrvasm20.inc => protocol/vusb/usbdrv/usbdrvasm20.inc +0 -0
R vusb/usbdrv/usbportability.h => protocol/vusb/usbdrv/usbportability.h +0 -0
R vusb/vusb.c => protocol/vusb/vusb.c +0 -0
R vusb/vusb.h => protocol/vusb/vusb.h +0 -0
R x68k_usb/x68k.c => protocol/x68k.c +0 -0
R x68k_usb/x68k.h => protocol/x68k.h +0 -0
M rules.mk => rules.mk +9 -3
@@ 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 ----------------