e5f9940 Merge commit '1bc3dd200b023cecf063a0cb3ba347f77f6d759d' into core_update da03c50 Add note for L/R side bit being ignored e80f3c1 Add in basic documentation for Macro system 35e8a76 core: Swap position of PEQL and PENT in unimap 00751f1 Merge pull request #406 from 39aldo39/patch-1 e50d7de V-USB remote wakeup 4340997 core: Fix typo in definition AC_g 958144d core: Debug print for system and consumer keys e7e1030 core: Fix sleep_led 0866323 core: Change matrix_init and matrix_print 0dbf73d core: Add matrix_clear() and default impl. 3202ca3 core: Add suspend mode options 4cda3aa core: Fix suspend/wake for converters #386 4e15247 core: LUFA_DEBUG_SUART for serial debug b9cf8e7 core: Fix mechanical locking supoort #390 12aa0fd Merge branch 'nemith-master' fccb3fa core: Fix OPT_DEFS for mbed build 2e2d2c8 Merge branch 'master' of github.com:leizzer/tmk_keyboard f1d3634 Change .gitignore for ChibiOS 3aab802 core: Fix build config in protocol.mk 5e43da0 core: Add short names in unimap 7a56998 core: Fix dfu wait in rules.mk 6d9c500 Merge branch 'mediakey-fix' 08382ac core: Fix 'make dfu' message 78cb04e Fix OS X Recognizing keyboard as Mouse/Tablet a114714 core: 'make dfu' waits for bootloader to start d0a8f13 core: Fix unimap UNIMAP_NO case e17abef core: Change lufa NKRO report size 16 to 32 bytes 375b20f core: Fix common.mk for build options 394fdff core: Fix unimap layout comment 912326c core: Add unimap support 00f4011 core: Fix doc/keymap.md for new keymap framework ddbd7b4 core: Add default implemenation of keymap read 671cacc core: action codes are action_t struct now b4fdb27 core: Change chibios repo directory names 7daed10 core: Fix keycode.txt 90399d7 core: Fix USB remote wakeup on ATmega32U2 #361 3677e84 usb_usb: Add multiple keyboard support 54d5b26 core: Fix Logical Maximum in report descriptor bd0d372 core: Fix LUFA report descriptor 95327b5 Merge pull request #355 from papodaca/XT 62bf548 core: change API of adb.c to accept device address 3097c9e Fix function name in host.h 836e209 Merge branch 'core_split_160522' 3918ea2 Merge commit '20b787fc1284176834cbe7ca2134e4b36bec5828' 7f87b11 core: Add comment of register 3 of ADB ef6478a core: Add adb_host_talk() 5c665b4 update macro names in bluefruit 4f2c5bf Merge commit '71381457fa1311dfa0b58ba882a96db740640871' 53a9c08 Merge pull request #321 from njbair/master f08a656 core: Fix media/consumer keys d526de8 Clean up wording in keymap example 0bb3dbb Clarify layer precedence d915c75 clarify layer documentation 72070d4 ps2_usb: Fix for VUSB configuration 170e2dc Mostly working. Is unstable, will emit bad codes after a while. c8e45b5 core: Actionmap support aabaa24 Codes appear to be detected correctly, the break codes are broken. git-subtree-dir: tmk_core git-subtree-split: e5f994033cbc8700745ac0c6d12772820492eed0
8.5 KiB
TMK Keyboard Firmware Collection
This repository includes keyboard and converter firmware projects built with tmk_core keyboard library.
The latest source code is available here: http://github.com/tmk/tmk_keyboard
Updates
2016/06/26
Keymap framework was updated. fn_actions[] should be defined as action_t instead of uint16_t. And default code for keymap handling is now included in core you just need define uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] and action_t fn_actions[].
2016/06/22
Some projects were moved from converter and keyboard to orphan directory. Those might be removed in some future but you will be able to access them with orphans tag. See https://github.com/tmk/tmk_keyboard/issues/173
2016/02/10
core: flabbergast's Chibios protocol was merged from https://github.com/flabbergast/tmk_keyboard/tree/chibios (@72b1668). See tmk_core/protocol/chibios/README.md. Chibios protocol supports Cortex-M such as STM32 and Kinetis.
2015/04/22
Core library was separated to other branch core. https://github.com/tmk/tmk_keyboard/tree/core
In Makefile you need to set TMK_DIR to indicate core library location now.
TMK_DIR = ../../tmk_core
Projects
You can find some keyboard specific projects under converter and keyboard directory.
converter
- ps2_usb - PS/2 keyboard to USB
- adb_usb - ADB keyboard to USB
- m0110_usb - Macintosh 128K/512K/Plus keyboard to USB
- terminal_usb - IBM Model M terminal keyboard(PS/2 scancode set3) to USB
- news_usb - Sony NEWS keyboard to USB
- x68k_usb - Sharp X68000 keyboard to USB
- sun_usb - Sun to USB(type4, 5 and 3?)
- pc98_usb - PC98 to USB
- usb_usb - [USB to USB][GH_usb]
- ibm4704_usb - IBM 4704 keyboard to USB
- next_usb - NeXT(Non-ADB) to USB, contributed by BCG and based on Adafruit's work
keyboard
- hhkb - Happy Hacking Keyboard pro my main board
- alps64 - Alps64 PCB
- hbkb - Happy Buckling spring keyboard(IBM Model M 60% mod)
- Infinity - Massdrop Infinity keyboard
- gh60 - GH60 DIY 60% keyboard prototype my second board
- onekey - Simple one key keyboard example
Projects based tmk_keyboard or tmk_core
https://github.com/tmk/tmk_keyboard/wiki/TMK-Based-Projects
License
GPLv2 or later. Some protocol files are under Modified BSD License.
Third party libraries like LUFA, PJRC and V-USB have their own license respectively.
Build Firmware and Program Controller
Change your keymap
Magic Commands
To see help press Magic + H.
Magic key combination is LShift + RShift in many projects, but Power key on ADB converter.
Magic keybind can be vary on each project, check config.h in project directory.
Following commands can be also executed with Magic + key. In console mode Magic keybind is not needed.
----- Command Help -----
c: enter console mode
d: toggle debug enable
x: toggle matrix debug
k: toggle keyboard debug
m: toggle mouse debug
v: print device version & info
t: print timer count
s: print status
e: print eeprom config
n: toggle NKRO
0/F10: switch to Layer0
1/F1: switch to Layer1
2/F2: switch to Layer2
3/F3: switch to Layer3
4/F4: switch to Layer4
PScr: power down/remote wake-up
Caps: Lock Keyboard(Child Proof)
Paus: jump to bootloader
Boot Magic Configuration - Virtual DIP Switch
Boot Magic are executed during boot up time. Press Magic key below then plug in keyboard cable. Note that you must use keys of Layer 0 as Magic keys. These settings are stored in EEPROM so that retain your configure over power cycles.
To avoid configuring accidentally additive salt key KC_SPACE also needs to be pressed along with the following configuration keys. The salt key is configurable in config.h. See tmk_core/common/bootmagic.h.
General
- Skip reading EEPROM to start with default configuration(
ESC) - Clear configuration stored in EEPROM to reset configuration(
Backspace)
Bootloader
- Kick up Bootloader(
B)
Debug
- Debug enable(
D) - Debug matrix enable(
D+X) - Debug keyboard enable(
D+K) - Debug mouse enable(
D+M)
Keymap
- Swap Control and CapsLock(
Left Control) - Change CapsLock to Control(
Caps Lock) - Swap LeftAlt and Gui(
Left Alt) - Swap RightAlt and Gui(
Right Alt) - Disable Gui(
Left Gui) - Swap Grave and Escape(
Grave) - Swap BackSlash and BackSpace(
Back Slash) - Enable NKRO on boot(
N)
Default Layer
- Set Default Layer to 0(
0) - Set Default Layer to 1(
1) - Set Default Layer to 2(
2) - Set Default Layer to 3(
3) - Set Default Layer to 4(
4) - Set Default Layer to 5(
5) - Set Default Layer to 6(
6) - Set Default Layer to 7(
7)
Mechanical Locking support
This feature makes it possible for you to use mechanical locking switch for CapsLock, NumLock
or ScrollLock. To enable this feature define these macros in config.h and use KC_LCAP, KC_LN UM or KC_LSCR in keymap for locking key instead of normal KC_CAPS, KC_NLCK or KC_SLCK. Res
ync option tries to keep switch state consistent with keyboard LED state.
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
Start Your Own Project
- Add
tmk_coreinto your repository usinggit submoduleorgit subtree. - Copy files from
tmk_keybaordor other project similar to yours - Edit those files to support your keyboard.
See these as examples.
Debugging
Use PJRC's hid_listen to see debug messages. You can use xprintf() to display debug info, see tmk_core/common/xprintf.h.
Files and Directories
Top
- keyboard/ - keyboard projects
- converter/ - protocol converter projects
- tmk_core/ - core library
- tmk_core/doc/ - documents
Contribution
- Report bugs in github Issues.
- Pull requets are also welcomed.
Coding Style
- Doesn't use Tab to indent, use 4-spaces instead.
Other Keyboard Firmware Projects
You can learn a lot about keyboard firmware from these. See Other Projects other than TMK.