|
@@ -2,74 +2,96 @@ t.m.k. Keyboard Firmware
|
|
|
========================
|
|
========================
|
|
|
http://github.com/tmk/tmk_keyboard
|
|
http://github.com/tmk/tmk_keyboard
|
|
|
|
|
|
|
|
-This is keyboard firmware for AVR USB MCUs or Teensy/Teensy++ 2.0.
|
|
|
|
|
|
|
+This is keyboard firmware for AVR USB MCUs or Teensy/Teensy++.
|
|
|
|
|
+http://www.pjrc.com/teensy
|
|
|
|
|
|
|
|
The project is heavily based on PJRC USB Keyboard/Mouse Example and
|
|
The project is heavily based on PJRC USB Keyboard/Mouse Example and
|
|
|
owes a debt to preceding keyboard firmware projects.
|
|
owes a debt to preceding keyboard firmware projects.
|
|
|
|
|
|
|
|
-http://www.pjrc.com/teensy
|
|
|
|
|
-
|
|
|
|
|
|
|
+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
|
|
|
|
|
|
|
|
|
|
|
|
|
-Functions
|
|
|
|
|
----------
|
|
|
|
|
|
|
+Features
|
|
|
|
|
+--------
|
|
|
Mouse key
|
|
Mouse key
|
|
|
|
|
+ control mouse cursor from keyboard.
|
|
|
System Control Key
|
|
System Control Key
|
|
|
Power Down, Sleep, Wake Up & USB Remote Wake up
|
|
Power Down, Sleep, Wake Up & USB Remote Wake up
|
|
|
Media Control Key
|
|
Media Control Key
|
|
|
Volume Down/Up, Mute
|
|
Volume Down/Up, Mute
|
|
|
USB NKRO
|
|
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
|
|
|
|
|
+-----------
|
|
|
|
|
|
|
|
|
|
|
|
|
Build
|
|
Build
|
|
|
-----
|
|
-----
|
|
|
-Compiling sources need AVR GCC, AVR Libc and GNU make.(You can use WinAVR on Windows.)
|
|
|
|
|
|
|
+To compile needs AVR GCC, AVR Libc and GNU make.
|
|
|
|
|
+You can use WinAVR on Windows. http://winavr.sourceforge.net/
|
|
|
|
|
|
|
|
-$ cd <target> (hhkb or macway)
|
|
|
|
|
|
|
+$ cd <target> (hhkb or macway currently)
|
|
|
$ make
|
|
$ make
|
|
|
|
|
|
|
|
-http://winavr.sourceforge.net/
|
|
|
|
|
|
|
+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.
|
|
|
|
|
|
|
|
|
|
|
|
|
Build Options
|
|
Build Options
|
|
|
-------------
|
|
-------------
|
|
|
-Makefile:
|
|
|
|
|
-Comment out to disable the option
|
|
|
|
|
- # USB NKey Rollover
|
|
|
|
|
- USB_NKRO_ENABLE = yes
|
|
|
|
|
-
|
|
|
|
|
- # mouse keys
|
|
|
|
|
- MOUSEKEY_ENABLE = yes
|
|
|
|
|
-
|
|
|
|
|
- # PS/2 mouse support
|
|
|
|
|
- PS2_MOUSE_ENABLE = yes
|
|
|
|
|
-
|
|
|
|
|
-config.h:
|
|
|
|
|
- /* USB ID */
|
|
|
|
|
- #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
|
|
|
|
|
- /* matrix size */
|
|
|
|
|
- #define MATRIX_ROWS 8
|
|
|
|
|
- #define MATRIX_COLS 8
|
|
|
|
|
- /* mouse keys repeat delay */
|
|
|
|
|
- #define MOUSEKEY_DELAY_TIME 192
|
|
|
|
|
- /* PS/2 lines */
|
|
|
|
|
- #define PS2_CLOCK_PORT PORTF
|
|
|
|
|
- #define PS2_CLOCK_PIN PINF
|
|
|
|
|
- #define PS2_CLOCK_DDR DDRF
|
|
|
|
|
- #define PS2_CLOCK_BIT 0
|
|
|
|
|
- #define PS2_DATA_PORT PORTF
|
|
|
|
|
- #define PS2_DATA_PIN PINF
|
|
|
|
|
- #define PS2_DATA_DDR DDRF
|
|
|
|
|
- #define PS2_DATA_BIT 1
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-Configuration
|
|
|
|
|
--------------
|
|
|
|
|
|
|
+<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
|
|
|
|
|
+ USB_EXTRA_ENABLE = yes # Enhanced feature for Windows(Audio control and System control)
|
|
|
|
|
+ USB_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
|
|
Debuging & Rescue
|