Compare commits

...

2241 Commits
v4.0 ... 0.5.8

Author SHA1 Message Date
Jack Humbert
616b8604b0 variable scope fix for travis 2017-02-07 11:53:43 -05:00
Jack Humbert
6a92cc2897 correctly assign bash variable 2017-02-07 02:00:07 -05:00
Jack Humbert
c8d5376f11 fix typo 2017-02-07 01:54:58 -05:00
Jack Humbert
f79f38d726 add comma 2017-02-07 01:53:46 -05:00
Jack Humbert
2179a548f4 Merge pull request #1069 from hot-leaf-juice/master
change cmd-l and cmd-r for actual home and end
2017-02-07 01:42:30 -05:00
Jack Humbert
19d63ad72c try building only keyboards needed 2017-02-07 01:35:10 -05:00
Jack Humbert
e5a2306804 Merge pull request #1041 from folkert4/master
Added Espynn's keymap
2017-02-07 00:37:23 -05:00
Jack Humbert
ab07d71b22 Merge pull request #1047 from lordchair/keymap_yale
yale planck layout
2017-02-07 00:30:56 -05:00
Jack Humbert
d4c88626bd Merge pull request #1048 from smt/smt/planck
Add smt's keymap for Planck
2017-02-06 20:21:42 -05:00
Jack Humbert
198a2929ed Merge pull request #1059 from qmk/hf/algr_t
Introduces ALGR_T for dual-function AltGr
2017-02-06 19:33:33 -05:00
Jack Humbert
b5159c964a Merge pull request #1036 from nicinabox/lets-split-improvements
Lets Split flashing improvements
2017-02-06 19:33:07 -05:00
Jack Humbert
4348fb54d6 Merge pull request #960 from ofples/feature/combos
Keyboard combination triggers
2017-02-06 19:31:45 -05:00
Jack Humbert
b6ffda4849 Merge pull request #1010 from SjB/oneshot_timeout_fix
oneshot timeout would only timeout after an event.
2017-02-06 18:57:23 -05:00
Jack Humbert
449ab9109a Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2017-02-06 18:28:50 -05:00
Jack Humbert
35edb382ee [skip build] testing travis script 2017-02-06 18:28:37 -05:00
Jack Humbert
0a3c5c06fe Merge pull request #981 from jonasoberschweiber/osx-surrogate-pairs
Add support for Unicode supplementary planes on OS X
2017-02-06 18:00:47 -05:00
Jack Humbert
5c8cdfd2b5 [skip build] testing travis script 2017-02-06 17:51:20 -05:00
Jack Humbert
246d2583ff Merge pull request #1030 from SjB/refactor_register_code16
speeding up (un)register_code16
2017-02-06 17:06:53 -05:00
Jack Humbert
ee386a29d1 [skip build] testing travis script 2017-02-06 17:00:30 -05:00
Jack Humbert
cf8dac3538 [skip build] testing travis script 2017-02-06 16:56:39 -05:00
Jack Humbert
98adda34c9 [skip build] testing travis script 2017-02-06 16:54:54 -05:00
Jack Humbert
470c8436c2 [skip build] testing travis script 2017-02-06 16:46:44 -05:00
Jack Humbert
3a76f24cbd [skip build] testing travis script 2017-02-06 16:42:18 -05:00
Jack Humbert
835cacb031 fixes qmk.fm linking, tests out auto version incrementing 2017-02-06 16:04:28 -05:00
Callum Oakley
21015918b4 change cmd-l and cmd-r for actual home and end 2017-02-06 12:40:32 +00:00
Erez Zukerman
f0633f2540 Merge pull request #1063 from osamuaoki/master
Typo fixes
2017-02-02 18:33:04 -05:00
Erez Zukerman
404f79ef14 Merge pull request #1058 from edasque/master
Reverted Dockerfile to put the CMD back
2017-02-02 18:31:25 -05:00
Osamu Aoki
f787f4291a Typo fixes 2017-02-02 23:15:08 +09:00
Erez Zukerman
45e5b32781 Merge pull request #1049 from SjB/tap_dance_save_oneshot_mods
race condition between oneshot_mods and tap_dance
2017-02-01 20:12:44 -05:00
Erez Zukerman
a5d10e8c2e Merge pull request #1054 from deadcyclo/master
Adds support for ergodox shine and unicode and emoji support to the deadcyclo layout
2017-02-01 20:11:37 -05:00
Brendan Johan Lee
02a95ee08c Merge remote-tracking branch 'upstream/master' 2017-02-01 08:56:35 +01:00
Erez Zukerman
f46c2b3ca0 Introduces ALGR_T for dual-function AltGr 2017-01-31 21:31:05 -05:00
Erik Dasque
407f949e4b Reverted Dockerfile to put the CMD back 2017-01-31 19:59:59 -05:00
Erez Zukerman
748316fc43 Merge pull request #1039 from zabereer/albert_ergodox_keymap
albert ergodox keymap
2017-01-31 19:29:19 -05:00
Erez Zukerman
0081101c30 Merge pull request #1055 from matzebond/master
update my neo2 keymap
2017-01-31 19:25:46 -05:00
Matthias Schmitt
4c3630dc17 update my neo2 keymap 2017-01-30 23:10:28 +01:00
Brendan Johan Lee
f70758622b [deadcyclo layout] Refactoring. Use custom functions and macros 2017-01-30 19:42:27 +01:00
Brendan Johan Lee
f400ac1d7d [deadcyclo layout] fixed failing tests 2017-01-30 15:45:16 +01:00
Brendan Johan Lee
d43f4a5f57 Merge remote-tracking branch 'upstream/master' 2017-01-30 12:59:17 +01:00
SjB
5a860b71a1 race condition between oneshot_mods and tap_dance
since the keycode for a tap dance process gets process only after the
TAPPING_TERM timeout, you really only have ONESHOT_TIMEOUT -
TAPPING_TERM time to tap or double tap on the key. This fix save the
oneshot_mods into the action.state structure and applies the mods with
the keycode when it's registered. It also unregisters the mod when the
the tap dance process gets reset.
2017-01-29 13:26:31 -05:00
SjB
45e0d09414 moved oneshot cancellation code outside of process_record.
The oneshot cancellation code do not depend on the
action_tapping_process and since process_record get called via the
action_tapping_process logic moved the oneshot cancellation code into
the action_exec function just before the action_tapping_process call
2017-01-29 13:01:47 -05:00
SjB
f644b9a07a registering a weak_mods when using register_code16
Scenario:
Locking the KC_LSHIFT, and then using a tap dance key that registers a
S(KC_9) will unregister the KC_LSHIFT.

The tap dance or any keycode that is registered should not have the
side effect of cancelling a locked moditifier. We should be using a
similar logic as the TMK codes in tmk_core/comman/action.c:158.
2017-01-29 12:29:43 -05:00
Yale Thomas
8df30c1c56 added picture of layout 2017-01-28 18:44:14 -08:00
Yale Thomas
ad0ce40db0 usability tweaks 2017-01-28 18:44:01 -08:00
Yale Thomas
d549002d22 mouse keys added 2017-01-28 18:43:40 -08:00
Yale Thomas
4eafa86564 new 'yale' keymap 2017-01-28 18:43:40 -08:00
Stephen Tudor
1d9e0b0120 s/Bkps/Bksp 2017-01-28 20:54:34 -05:00
Stephen Tudor
7c24ecf580 Carry over Planck updates to my Preonic keymap 2017-01-28 01:38:58 -05:00
Stephen Tudor
321904b8e3 Improve Planck keymap
- added escape+shift mod-tap key
- replaced BRITE with backtick
2017-01-28 01:37:59 -05:00
Stephen Tudor
fa72689145 Merge branch 'master' into smt/planck
* master:
  Clarify license on abnt2 keymap (#1038)
  replace jackhumbert with qmk
  Add gitter image, start update to qmk org
  Remove COLEMAK from preonic_keycodes enum
  layer defines to enum
  Update readme for smt Preonic keymap
  Add smt keymap for Preonic
  updated all the other keymaps to support the new changes.
  fix: infinity60 keyboard was not using quantum features.
  Compare Makefile with itself instead of using `--help`
2017-01-28 00:51:07 -05:00
skullydazed
ec05f65421 Merge pull request #1043 from potz/patch-1
Clarify license on abnt2 keymap (#1038)
2017-01-27 18:40:59 -08:00
Potiguar Faga
2fe18a50ec Clarify license on abnt2 keymap (#1038) 2017-01-27 18:22:44 -02:00
folkert4
8c794d73fa Added Espynn's keymap 2017-01-27 13:51:39 -05:00
Jack Humbert
a28f689387 Merge pull request #869 from dylanjgscott/master
Use `type cmp` to test for cmp in Makefile
2017-01-27 11:23:02 -05:00
Brendan Johan Lee
d7aa4724fb Merge remote-tracking branch 'upstream/master' 2017-01-27 15:24:08 +01:00
Brendan Johan Lee
13fa63b192 [deadcyclo layout] Added more unicode keys and ibus unicode compose trigger keys 2017-01-27 13:53:02 +01:00
Jack Humbert
712f3de16f Merge pull request #1035 from qmk/qmk_org_changes
Updated urls due to transfer to qmk org
2017-01-27 00:28:46 -05:00
Albert Pretorius
fffe76a7b7 albert ergodox keymap 2017-01-26 20:07:47 +00:00
Nic Aitch
890ecf6a2a Update readme 2017-01-26 09:31:40 -06:00
Nic Aitch
3131d65563 Add avrdude target 2017-01-26 09:31:27 -06:00
Brendan Johan Lee
8a645aa9ad Merge remote-tracking branch 'upstream/master' 2017-01-26 11:56:32 +01:00
Jack Humbert
c9ca368008 replace jackhumbert with qmk 2017-01-26 01:52:43 -05:00
Jack Humbert
aac7c0aa4d Merge pull request #1029 from SjB/qmk_infinity60
fix: infinity60 keyboard was not using quantum features.
2017-01-26 01:28:44 -05:00
Jack Humbert
0212a30aa6 Merge pull request #1033 from smt/smt/preonic
Add smt's keymap for Preonic
2017-01-26 01:27:51 -05:00
Jack Humbert
1b20243092 Add gitter image, start update to qmk org 2017-01-26 01:26:17 -05:00
Stephen Tudor
63e406eca4 Add smt keymap for Planck 2017-01-26 00:24:51 -05:00
Stephen Tudor
6546dddddb Remove COLEMAK from preonic_keycodes enum 2017-01-25 10:57:42 -05:00
Jack Humbert
7e3962f36a Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2017-01-25 10:02:06 -05:00
Jack Humbert
938422ce99 layer defines to enum 2017-01-25 10:02:01 -05:00
Brendan Johan Lee
8af48194f2 [deadcyclo layout] Added lotsof new emojis and some new unicode keys 2017-01-25 15:16:38 +01:00
Stephen Tudor
51fe4f0d34 Update readme for smt Preonic keymap 2017-01-25 01:08:51 -05:00
Stephen Tudor
b3cf96ec2e Add smt keymap for Preonic 2017-01-25 00:47:45 -05:00
Brendan Johan Lee
d0db044164 Merge remote-tracking branch 'upstream/master' 2017-01-24 21:56:18 +01:00
Brendan Johan Lee
37ed3d13a4 [deadcyclo layout] Added unicode layer 2017-01-24 21:54:34 +01:00
Brendan Johan Lee
3c32e38036 [deadcyclo layout] Added support for ergodox ez shine 2017-01-24 19:10:35 +01:00
Jack Humbert
71137deba2 Merge pull request #1014 from SjB/lcd_mods_status
added mods status bit to visualizer.
2017-01-24 00:34:55 -05:00
SjB
9111cc00f5 updated all the other keymaps to support the new changes.
qmk firmware requires the matrix_init_user and matrix_scan_user
function to be implementated. Added these function to all the existing
keymaps.
2017-01-24 00:24:01 -05:00
SjB
2b3859937b speeding up (un)register_code16
In register_code16 and unregister_code16 we call register_code and
unregister_code twice, once for the mods and once for the keycode.
The (un)register_code have many check to see that keycode we have sent
however because we know that we are sending it a mods key, why not
just skip all of it and call (un)register_mods instead. This will skip
alot of checks and should speedup the loop a little.
2017-01-23 23:16:57 -05:00
SjB
a777495683 fix: infinity60 keyboard was not using quantum features.
the quantum matrix codes where not being initialized or/and called
so no feature of the quantum firmware could be used. These codes have
been added and now we can enjoy the quantum firmware goodness.
2017-01-23 23:15:31 -05:00
Dylan Scott
245f77b863 Compare Makefile with itself instead of using --help 2017-01-24 13:53:46 +11:00
Jack Humbert
841d7e6a1d turn off rgb_midi in ez 2017-01-23 13:55:24 -05:00
Jack Humbert
6d377bcc9c Merge pull request #1026 from TerryMathews/master
Let's Split: More code cleanup
2017-01-23 00:33:29 -05:00
TerryMathews
372af5e3f6 More code cleanup
Missed a few commented out vestigal defines in revx/config.h that had
been moved to keymap/serial and i2c.
2017-01-22 22:06:53 -05:00
Jack Humbert
0026f4ec09 Merge pull request #1018 from hot-leaf-juice/master
simplified my keymap
2017-01-22 19:01:34 -05:00
Christopher Browne
89461e743e More keyboard map tweaking (#1019)
* Add HOME/END keys as upper/lower on arrow-up/down

* Reduce .hex file size by turning off unneeded options

* Put digit keypad onto left hand upon RAISE; this will sometimes be preferable to double-hits of right hand
2017-01-22 19:01:07 -05:00
Jack Humbert
79a823d802 Merge pull request #1020 from remigius42/master
Swiss German layout for Ergodox EZ & Infinity
2017-01-22 18:59:57 -05:00
Jack Humbert
a8a1fbbac8 Merge pull request #1022 from lucwastiaux/master
Improvements to Dvorak Programmer Ergodox keymap
2017-01-22 18:59:12 -05:00
Jack Humbert
a54944ac33 Merge pull request #1021 from luizribeiro/ps2avrGB
Support for ps2avrGB / winkeyless.kr boards
2017-01-22 18:58:46 -05:00
Jack Humbert
405b2ae267 Merge pull request #1023 from TerryMathews/master
Corrects Let's Split code
2017-01-22 18:57:44 -05:00
TerryMathews
99d548c4fb Missed commenting out notes at end of line 2017-01-22 15:57:30 -05:00
TerryMathews
a00957abca Fixed keymap matrix on rev2
* Fixed keymap matrix in rev2 so that left half and right half match
when in same orientation.
2017-01-22 15:50:08 -05:00
TerryMathews
efa526f570 Created lines to uncomment keyboards built upside down
* Reverses column order to fix left-to-right key order that occurs if
PCB assembled upside down.
2017-01-22 15:46:43 -05:00
TerryMathews
9d24943ec1 Refactor code to eliminate duplicate defines
* Moved duplicated defines out of inappropriate source files (matrix
pins in keymap subdirectory)
* Eliminated default keymap directory
* Hardcoded serial keymap to use serial defines and EE_CONFIG
* Hardcoded i2c keymap to use i2c defines
2017-01-22 15:37:48 -05:00
Luiz Ribeiro
84661ac44b Upgrade AVR 8-bit Toolchain to 3.5.4 on Travis 2017-01-22 12:38:42 -05:00
Andreas Schmidt
08c192caea SG Ergodox layout: Updated layout documentation
- Swiss German Ergodox layout:
    Updated layout documentation based on previous
    layout changes.
2017-01-22 12:57:58 +01:00
Andreas Schmidt
afd2c2ee9e SG Ergodox layout: Fixed ENTER key mapping
- Swiss German Ergodox layout:
    Additional ENTER key was mapped to wrong layer
    and keyboard half.
2017-01-22 12:43:46 +01:00
Andreas Schmidt
c2c8a12022 SG Ergodox layout: Minor code formatting changes
- Swiss German Ergodox layout:
    Removed unnecessary spaces.
2017-01-22 12:35:24 +01:00
Andreas Schmidt
5c4a73d788 SG Ergodox layout: Add ENTER to left keyboard
- Swiss German Ergodox layout:
    Added ENTER key to left keyboard half on media layer
    such that the enter key is available on both halves to
    be able to flash both halves without an additional keyboard.
2017-01-22 12:32:40 +01:00
Andreas Schmidt
3fd9aa3660 SG Ergodox layout: Add <br/> macro to media layer
- Added <br/> macro to media layer of Swiss German layout
    for Ergodox
2017-01-22 12:30:18 +01:00
lucwastiaux
803a861b4e document BRACKETS and SHELL_LAYER 2017-01-22 10:32:17 +08:00
Luiz Ribeiro
642d0acef5 Added a copyright header to the default keymap... ¯\_(ツ)_/¯ 2017-01-21 18:23:44 -05:00
Luiz Ribeiro
bfbab75292 Slightly saner default keymap for ps2avrGB and removed some unused code 2017-01-21 18:15:39 -05:00
Luiz Ribeiro
9ce38cbccf Simplified and polished a bit the code changes on tmk_core 2017-01-21 17:18:05 -05:00
Andreas Schmidt
eb6abb6305 Renamed JSON source of Ergodox Swiss German
- Renamed the JSON source files for the layout description of
    the Ergodox Swiss German keymap
2017-01-21 20:58:28 +01:00
Andreas Schmidt
6b5cd656fd Correct layout description of ergodox swissgerman
- Added missing HTML macros to media layer.
2017-01-21 20:55:18 +01:00
Andreas Schmidt
250628de04 Removed Ergodox EZ & Infinity specific keymaps
- Removed the keymaps for Swiss German spefic for Ergodox EZ
    and Infinity after previously merging them.
2017-01-21 20:22:24 +01:00
Andreas Schmidt
c26c81c7f3 Merged keymap for Ergodox EZ & Infinity
- Merged keymap for Ergodox EZ & Infinity into one single
    keymap using pre-processor macros.
2017-01-21 20:20:47 +01:00
Luiz Ribeiro
461dfd4462 Simplification and code polish on ps2avrGB directory 2017-01-21 13:52:23 -05:00
Luiz Ribeiro
f7462aaa61 Got ps2avrGB to work with the V-USB protocol 2017-01-21 12:55:19 -05:00
lucwastiaux
4cf0f7dd16 make shell layer more compatible with default layer 2017-01-21 23:42:23 +08:00
Andreas Schmidt
bf0b355bc8 Add Swiss German layout for Ergodox Infinity
- Add Swiss German layout for Ergodox Infinity based on default
    layout for Ergodox EZ.
- Minor changes in the event loop to prevent flashing display
    background lights.
2017-01-21 16:24:41 +01:00
Andreas Schmidt
cbb1927d6f Add Swiss German layout for Ergodox EZ
- Add Swiss German layout for Ergodox EZ based on default
    layout for Ergodox EZ.
- Minor changes in the event loop to prevent flashing of leds.
2017-01-21 16:22:40 +01:00
lucwastiaux
01e750a372 couple of changes to the shell layer 2017-01-21 23:15:37 +08:00
Callum Oakley
dc3937d485 simplify 2017-01-20 21:22:18 +00:00
lucwastiaux
072237bce8 introduce shell_layer 2017-01-19 22:45:30 +08:00
Jack Humbert
10ff962321 Merge pull request #1016 from arthurnn/patch-1
this is the atreus doc
2017-01-18 21:28:43 -05:00
Arthur Nogueira Neves
489d0ab581 this is the atreus doc 2017-01-18 21:12:02 -05:00
SjB
9eb8d05246 added mods status bit to visualizer.
Since we can't read the real_mods and oneshot_mods static variable
directly within the update_user_visualizer_state
function (Threading and serial link). We are know storing the mods
states in the visualizer_keyboard_status_t structure. We can now
display the status of the modifier keys on the LCD display.
2017-01-17 21:57:32 -05:00
Jack Humbert
3d264adfc5 Merge pull request #1013 from mitchlloyd/mitch-keymap-update
Update mitch layout for new keymaps
2017-01-17 16:38:31 -05:00
Mitch Lloyd
0815c7ae17 Update mitch layout for new keymaps 2017-01-17 13:01:07 -08:00
lucwastiaux
1ac15e6b3a put shell nav under tab, introduce an OSL for the brackets layer 2017-01-17 20:34:05 +08:00
SjB
6f44ca7a59 oneshot timeout would only timeout after an event.
After setting a ONESHOT_TIMEOUT value, the oneshot layer state would
not expire without an event being triggered (key pressed). The reason
was that in the process_record function we would return priort to
execute the process_action function if it detected a NOEVENT cycle. The
process_action contained the codes to timeout the oneshot layer state.
The codes to clear the oneshot layer state have been move just in
front of where we check for the NOEVENT cycle in the process_record
function.
2017-01-15 23:29:24 -05:00
Jack Humbert
6f44885615 Merge pull request #987 from belak/belak/whitefox-initial-support
Initial whitefox support
2017-01-15 01:14:02 -05:00
Jack Humbert
81b89f8b2b Merge pull request #996 from milestogo/master
kinesis keyboard with subdirectories for different hardware - matches pull #911
2017-01-15 01:13:15 -05:00
Jack Humbert
99d0b54e5e Merge pull request #999 from deadcyclo/master
Adds layer images to the deadcyclo layout readme
2017-01-15 01:12:21 -05:00
Jack Humbert
b2dcac9655 Merge pull request #1003 from mneme/master
Layout "Mneme" for Atreus62
2017-01-15 01:12:04 -05:00
Jack Humbert
ff76ee8377 Merge pull request #1005 from kd0kkv/patch-1
Update keymap.c
2017-01-15 01:11:38 -05:00
Jack Humbert
5036112d39 Merge pull request #1006 from Vifon/master
Update the vifon keymap
2017-01-15 01:11:04 -05:00
Jack Humbert
a896b300ec Merge pull request #1007 from bryan4887/bryan
Added Bryan's keymap
2017-01-15 01:10:39 -05:00
Jack Humbert
5521d854d0 Merge pull request #1009 from getclacking/master
Typo fix
2017-01-15 01:09:50 -05:00
Jason Milkins
b56ec38d5c Typo fix 2017-01-15 14:08:17 +08:00
Bryan Hernandez
aa0939b5ef Added Bryan's keymap 2017-01-13 21:51:55 -06:00
Erez Zukerman
0fde5a34e2 Merge pull request #1004 from jackhumbert/hf/scmd
Adds SCMD and SCMD_T
2017-01-13 21:16:10 -05:00
Jack Humbert
7288e5ab9c Update quantum_keycodes.h 2017-01-13 14:04:51 -05:00
Wojciech Siewierski
c6299a7859 Update the vifon keymap 2017-01-13 18:52:13 +01:00
kd0kkv
c660d5f814 Update keymap.c
Fixed the default querty layout to have a B button and just one F
2017-01-13 08:30:46 -06:00
David Olsson
236a0b0b60 Update makefile.
Readme.
2017-01-12 16:00:09 +01:00
David Olsson
b2419b31d3 - Change docs to match keymap.
- Switched around modifiers on the function layer to match muscle memory.
- Added support for application switching.
2017-01-12 15:36:14 +01:00
Erez Zukerman
3717cf5864 A shot at aliasing 2017-01-12 07:38:07 -05:00
Erez Zukerman
8459bb97c1 Adds SCMD and SCMD_T 2017-01-11 21:57:41 -05:00
David Olsson
ed975f2454 Remove comments and change to correct KN_PLUS instead of KC_PLUS. 2017-01-12 00:14:42 +01:00
David Olsson
1bef7bf45a Link fix in readme. 2017-01-11 23:43:13 +01:00
David Olsson
e491f5a4d0 Readme + minor change to make it match reality. 2017-01-11 23:41:07 +01:00
David Olsson
3a453a03ed Atreus62 first semi-final draft 2017-01-11 23:00:34 +01:00
Brendan Johan Lee
c4fca8b6bc Fixed incorrect layer image in deadcyclo readme 2017-01-10 19:23:59 +01:00
Brendan Johan Lee
1121753746 Merge remote-tracking branch 'upstream/master' 2017-01-10 19:21:33 +01:00
Brendan Johan Lee
db1aec159d Added layer images to deadcyclo layout readme 2017-01-10 19:20:25 +01:00
Kaleb Elwert
a55c5e3ea3 Wait for two ticks rather than 1 2017-01-10 03:00:36 -08:00
Kaleb Elwert
0b38204e62 Fix mismatched indentation 2017-01-09 11:57:44 -08:00
Kaleb Elwert
49a00a535f Update clock frequencies to match the infinity ergodox 2017-01-09 11:15:10 -08:00
Kaleb Elwert
a702f4631e Increase tick frequency for responsiveness
Based off of PR #866 which did the same thing for the infinity60
2017-01-09 10:54:36 -08:00
Kaleb Elwert
ef2ebeb3ca Remove KC_ prefix from KEYMAP macro to match other keyboards 2017-01-09 10:45:34 -08:00
milestogo
9d4cc2f3f1 removing old programmer layout, in favor of milestogo 2017-01-08 22:25:41 -08:00
milestogo
62f1c13c3a trying to clean up duplicate docs 2017-01-08 22:17:47 -08:00
milestogo
f74ff86f9c kinesis remap 2017-01-08 22:02:01 -08:00
Jack Humbert
176b93d08e Merge pull request #994 from priyadi/unicode_mods_fix
Unregister all mods before inputting Unicode, and reregister afterwards
2017-01-08 21:12:02 -05:00
Jack Humbert
18d013b25b Merge pull request #993 from priyadi/greek_layer
Greek alphabet layer
2017-01-08 21:11:32 -05:00
Jack Humbert
d8b445b03b Merge pull request #990 from replicaJunction/master
Update replicaJunction keymap
2017-01-08 21:10:42 -05:00
Priyadi Iman Nurcahyo
30b80a23f3 Unregister all mods before inputting Unicode, and reregister afterwards 2017-01-09 02:59:10 +07:00
Priyadi Iman Nurcahyo
02055406e8 Greek alphabet layer 2017-01-09 02:50:13 +07:00
Priyadi Iman Nurcahyo
3a71f3534a Merge branch 'promethium' of github.com:priyadi/qmk_firmware into promethium 2017-01-09 02:48:07 +07:00
Priyadi Iman Nurcahyo
58b2536bf1 om telolet om 2017-01-08 23:45:16 +07:00
Priyadi Iman Nurcahyo
b0a9bd319b om telolet om 2017-01-08 22:45:16 +07:00
Joshua T
cfb45027bb Removed build.bat
Make.exe is easy enough to use, and there's no real sense in having a wrapper aroung it.
2017-01-07 14:05:04 -06:00
Joshua T
8f8d104759 Merged from upstream 2017-01-07 14:01:21 -06:00
Joshua T
b7b44dc481 Updated README and images to reflect latest keymap 2017-01-07 13:57:51 -06:00
Joshua T
677ae86bde Added another Shift on Extend layer.
This moves the GUI key to the pinkie, but honestly, I never use that function anyway.
2017-01-07 13:07:55 -06:00
Joshua T
fe51724544 Updated Atreus layout to 0.4
Removed Alt on base layer, replaced with Function layer.

Moved function keys to left hand.  Added mouse keys to right hand on the function layer.

Moved middle click on gaming layer to be consistent with mouse layer.

Added macro _USER. Macro contents are not implemented yet.
2017-01-06 19:56:57 -06:00
Joshua T
5ce7ec9ea5 Increased TAPPING_TERM to 200 2017-01-06 17:08:14 -06:00
Joshua T
6fba925f41 Fixed key not matching its diagram 2017-01-06 17:07:58 -06:00
Jack Humbert
e7df488a92 Merge pull request #989 from ishigoya/master
Keymap
2017-01-06 17:28:45 -05:00
ishigoya
402e6c13a1 new file: keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png
new file:   keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png
	new file:   keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png
	modified:   keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
	new file:   keyboards/ergodox/keymaps/ishigoya-jp/readme.md
2017-01-06 17:53:04 +09:00
ishigoya
0bd03d698c new file: keyboards/ergodox/keymaps/ishigoya-jp/keymap.c 2017-01-06 16:41:14 +09:00
Kaleb Elwert
ca9a3dcb71 Fix unrelated spelling error 2017-01-04 21:20:06 -08:00
Kaleb Elwert
ccde1d8b5e Add white fox to keyboards readme 2017-01-04 21:19:32 -08:00
Jack Humbert
e5c7b5d8fc Merge pull request #983 from common-nighthawk/master
adds personal keymap for ergodox optimized for macOS with Vim
2017-01-04 23:41:56 -05:00
Jack Humbert
6a59dfb4c6 Merge pull request #984 from deadcyclo/master
Added the deadcyclo layout
2017-01-04 23:41:29 -05:00
Jack Humbert
ad290946f2 Merge pull request #988 from jcowgar/master
Added Jeremy’s developers keymap for the Planck
2017-01-04 23:39:52 -05:00
Jeremy Cowgar
5fca9ff4d5 Added Jeremy’s developers keymap for the Planck 2017-01-04 10:51:00 -05:00
Kaleb Elwert
262d31c389 Add whitefox readme 2017-01-04 00:29:58 -08:00
Kaleb Elwert
300c71a023 Remove unneeded define 2017-01-04 00:05:18 -08:00
Kaleb Elwert
8377d5fdc5 Initial whitefox support 2017-01-03 23:41:52 -08:00
Brendan Johan Lee
a85aefd27a fix version macro making layer 3 sticky on deadcyclo layout 2017-01-03 15:09:25 +01:00
Brendan Johan Lee
b23a963bec Added the deadcyclo layout 2017-01-02 19:12:06 +01:00
Jack Humbert
ffc1d97672 Update config.h 2017-01-02 09:57:39 -05:00
Daniel
0de3a5d0b2 reverts change outside of personal keymap. 2017-01-01 21:02:43 -07:00
Daniel
acffbb480f adds dedicated double-quote key. 2017-01-01 20:09:30 -07:00
Jack Humbert
847377fb43 Merge pull request #980 from TerryMathews/master
Establish support for AMJPAD
2016-12-31 13:38:10 -05:00
Jonas Oberschweiber
0aa413af44 Add support for supplementary planes for OS X 2016-12-31 19:37:56 +01:00
TerryMathews
925ed44405 Establish support for AMJPAD 2016-12-31 13:19:05 -05:00
Jack Humbert
6dbcc50f56 Merge pull request #975 from fredizzimo/remove_temp_files
Remove extra file that has been commited by mistake
2016-12-30 11:12:47 -05:00
Jack Humbert
f98062081b Merge pull request #976 from fredizzimo/fix_makefile_on_cygwin
Fix makefile on cygwin
2016-12-30 11:08:02 -05:00
Jack Humbert
460bf008f5 Merge pull request #973 from Wilba6582/keycode_refactor
Keycode refactor
2016-12-30 11:07:17 -05:00
Jack Humbert
07e266bbc6 Merge pull request #971 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.10
2016-12-30 11:06:21 -05:00
Jack Humbert
2eced29675 Merge pull request #974 from fredizzimo/remove_malloc_from_sysex
API Sysex fixes
2016-12-30 11:05:50 -05:00
Jack Humbert
8a76075ca7 Merge pull request #972 from mechkeys/rgb_compat
Add extern for 'led' global, set 'weak' attribute for rgblight_set()
2016-12-29 21:42:16 -05:00
Scott Wilson
b8e74c378b Removed errant + 2016-12-29 09:32:02 -05:00
Fred Sundvik
1d1f2b4ee2 Clean up the SKIP_GIT code 2016-12-29 15:20:43 +02:00
Fred Sundvik
2acfd2ab2b Remove extra parenthesis from Makefile
Cygwin had trouble running the tests
2016-12-29 14:56:01 +02:00
Fred Sundvik
52430ef0d6 Remove extra file that has been commited by mistake 2016-12-29 12:26:41 +02:00
Fred Sundvik
dd685eceb2 API Sysex fixes
Fix memory leaks by using stack instead of malloc
Reduce memory usage by having less temporary bufffers
Remove warnings by adding includes
Decrease code size by 608 bytes (mostly due to not linking malloc)
More robust handling of buffer overflows
2016-12-29 12:13:30 +02:00
Wilba6582
d8a608f3ff Keycode refactor 2016-12-29 18:28:48 +11:00
Scott Wilson
748181dccd Add extern for 'led' global, set 'weak' attribute for rgblight_set() 2016-12-28 16:29:02 -05:00
Gergely Nagy
eb588d630c ergodox: Update algernon's keymap to v1.10
Miscellaneous
=============

* `µ` can now be entered with UCIS.
* `™` can now be entered with UCIS.

Tools
=====

* `tools/hid-commands` can now find Banshee, and prefers it over Kodi.
* `tools/hid-commands` can now find Chrome too, not juts Chromium.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-12-28 19:27:48 +01:00
Jack Humbert
223cffd92f Merge pull request #968 from ofples/bugfix/right-modifiers
Fixed bug in do_code16
2016-12-28 13:07:16 -05:00
Jack Humbert
d3ec88cd07 Merge pull request #966 from Dbroqua/master
Some updates for GH60 and Satan keyboard
2016-12-28 13:04:08 -05:00
dbroqua
db48b28eeb - Updated dbroqua layout for Satan keyboard 2016-12-24 14:53:15 +01:00
dbroqua
033f0b92c4 - Added RGB layer on dbroqua GH60 layout 2016-12-24 14:43:07 +01:00
Jack Humbert
273faa4d9c add different scales for music mode 2016-12-23 20:59:00 -05:00
Ofer Plesser
01038ab54c Added check that makes sure a code is a right modifier before considering it as one 2016-12-23 21:51:11 +02:00
Jack Humbert
cae269b08b Christmas RGB light mode 2016-12-23 10:29:19 -05:00
dbroqua
6be061c6d4 - Fixed bug in dbroqua layout for Satan keyboard 2016-12-22 19:08:17 +01:00
dbroqua
46ff5f3b90 - Fixed bad typo in dbroqua layout for gh60
- Removed unused function in dbroqua layout for gh60
2016-12-22 08:26:55 +01:00
Erez Zukerman
9675e1357f Update readme.md 2016-12-21 21:09:20 -05:00
Erez Zukerman
a81279158b Update readme.md 2016-12-21 21:08:55 -05:00
Erez Zukerman
4e4f365c87 updates readme 2016-12-21 21:05:58 -05:00
Erez Zukerman
10864def46 New default firmware graphic 2016-12-21 21:03:53 -05:00
dbroqua
5ee136a36f - Renamed dbroqua_hhkb as dbroqua for gh60 layout 2016-12-21 23:12:33 +01:00
dbroqua
d6c545f471 - Rewrote dbroqua layout for Satan keyboard and adding RGB light 2016-12-21 23:08:30 +01:00
Jack Humbert
2fa36e38cf initial subatomic keymap (text) 2016-12-21 00:22:32 -05:00
Jack Humbert
438a5d685b limit voices by default, add some drums 2016-12-20 19:38:22 -05:00
dbroqua
b7696fb3b0 - Updated gh60 files 2016-12-20 18:43:06 +01:00
Jack Humbert
53ea854462 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-12-19 21:01:27 -05:00
Jack Humbert
dd114e648e planck preonic update 2016-12-19 21:01:23 -05:00
Jack Humbert
29c527f0f0 Merge pull request #964 from climbalima/master
added case stl
2016-12-19 14:06:39 -05:00
climbalima
281aa1dad0 added case stl from se7en9057 2016-12-19 14:01:40 -05:00
Jack Humbert
101416eb82 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-12-19 11:18:22 -05:00
Jack Humbert
06c64bbff3 rgb clean-up, api clean-up 2016-12-19 11:18:18 -05:00
Jack Humbert
ea926369b8 Merge pull request #963 from Wilba6582/fix_900
Fixes issue #900 KC_PWR not working
2016-12-19 11:07:39 -05:00
Wilba6582
a305da2bc9 Fixes issue #900 2016-12-20 02:46:50 +11:00
Erez Zukerman
29731588b7 Flips off MIDI and API_SYSEX 2016-12-19 08:27:05 -05:00
Jack Humbert
8e28bf39d8 Merge pull request #958 from pvinis/master
make a sysctl MO button so i can quickly use the arrows
2016-12-18 20:56:20 -05:00
Jack Humbert
96cc053799 Merge pull request #961 from Dbroqua/master
Updated kc60 layout for dbroqua_hhkb
2016-12-18 20:55:52 -05:00
Jack Humbert
e05fd4fc66 Merge pull request #962 from stanleylai/master
Added XD60 Support
2016-12-18 20:55:38 -05:00
Stanley Lai
5834d4b262 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-12-18 15:35:59 -08:00
Stanley Lai
91913146db Added XD60 support 2016-12-18 15:35:03 -08:00
Stanley Lai
b49d7800ae Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-12-17 13:49:13 -08:00
dbroqua
e9f69ff46e - Revert local fail o_O 2016-12-17 22:33:45 +01:00
dbroqua
c3469b8d21 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-12-17 22:28:56 +01:00
Damien
c9803f78b2 Merge pull request #14 from jackhumbert/master
Merged from jackhumbert/qmk_firmware
2016-12-17 22:28:45 +01:00
dbroqua
df50bee5a8 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-12-17 22:25:21 +01:00
dbroqua
46b93f02d5 - Added capslock key 2016-12-17 22:25:08 +01:00
Erez Zukerman
8a65c640ec Adds a troubleshooting layout for resetting the EEPROM 2016-12-16 20:53:42 -05:00
Erez Zukerman
df32d5b769 Removes alt/j dual function 2016-12-16 20:13:40 -05:00
Ofer Plesser
40abf8bc9c Moved combo processing lower down in process logic 2016-12-16 22:00:29 +02:00
Ofer Plesser
6a462c818c Merge branch 'master' into feature/combos 2016-12-16 21:52:51 +02:00
Ofer Plesser
6e7cfa83b9 Refactored as well as added support for action keys in combos 2016-12-16 21:50:28 +02:00
Pavlos Vinieratos
34d6f07d2c make a sysctl MO button so i can quickly use the arrows 2016-12-16 09:46:03 +01:00
Jack Humbert
b8e13167c8 Merge pull request #957 from priyadi/qwertz-dot-comma
Update my layouts using QWERTZ style dot & comma, move QUOT to SCLN position
2016-12-15 22:52:12 -05:00
Priyadi Iman Nurcahyo
c641e46567 QWERTZ style dot & comma, move QUOT to SCLN position 2016-12-16 01:16:55 +07:00
Jack Humbert
61ab3018c7 Merge pull request #956 from sgoodwin/master
Make keymap compile again.
2016-12-15 10:02:31 -05:00
Samuel Ryan Goodwin
826c929c49 Make keymap compile again. 2016-12-15 09:52:57 +01:00
Jack Humbert
36dddd45fb Merge pull request #949 from priyadi/promethium
Promethium firmware update
2016-12-15 00:03:18 -05:00
Jack Humbert
803040d4ee Merge pull request #952 from pvinis/master
update my keymap a bit
2016-12-15 00:03:02 -05:00
Jack Humbert
97f9b05efb Merge pull request #953 from priyadi/ibm_terminal
IBM Terminal M-122 converter support
2016-12-15 00:02:45 -05:00
Jack Humbert
2ba7f38bf4 Merge pull request #955 from askreet/powerDrawPerKeyboard
Allow power consumption to be set per-keyboard.
2016-12-15 00:02:19 -05:00
Kyle Smith
83e613ad23 Allow power consumption to be set per-keyboard. 2016-12-14 23:29:33 -05:00
climbalima
16483409cf better switch spacing in svg 2016-12-14 23:11:04 -05:00
lucwastiaux
ebe351a690 enable brackets using the - key on the right, and cleanups 2016-12-15 07:22:31 +08:00
Priyadi Iman Nurcahyo
e58304c094 My layout for M-122 terminal keyboard 2016-12-14 22:34:23 +07:00
Priyadi Iman Nurcahyo
dc49231391 Update KEYMAP macro to be consistent with the rest of QMK 2016-12-14 22:33:56 +07:00
Priyadi Iman Nurcahyo
bd5f323bec IBM Terminal M-122 converter support
Code ported from TMK to QMK.
2016-12-14 16:21:01 +07:00
Priyadi Iman Nurcahyo
e5b165c255 fine tune trackpoint initialization 2016-12-14 07:10:28 +07:00
Priyadi Iman Nurcahyo
32e952bda9 disable remote mode 2016-12-14 06:03:27 +07:00
Priyadi Iman Nurcahyo
0b54b32361 Enable Adafruit BLE support 2016-12-14 06:03:27 +07:00
Priyadi Iman Nurcahyo
9838ddcead Pretend to be Thinkpad USB Keyboard 2016-12-14 06:03:27 +07:00
Priyadi Iman Nurcahyo
a747343b61 Enable PS2 remote mode 2016-12-14 06:03:27 +07:00
Jack Humbert
20892bf706 Merge pull request #948 from climbalima/master
svg bug fix and added pilcrow to hand wire
2016-12-12 23:32:14 -05:00
climbalima
5dce74d0ff svg bug fix and added pilcrow to hand wire 2016-12-12 22:36:16 -05:00
Jack Humbert
ae95834f5a specialise music variables 2016-12-12 16:06:41 -05:00
Jack Humbert
0edfe55bfe re-enable audio and extrakeys 2016-12-12 15:39:07 -05:00
Jack Humbert
0213acbdbe Merge pull request #946 from climbalima/master
Changed lets split svg to support boston meetup pcb
2016-12-12 00:47:48 -05:00
Jack Humbert
6cd55d89e6 Merge pull request #945 from priyadi/planck_priyadi
Remove unneeded options to reduce firmware size
2016-12-12 00:47:29 -05:00
Jack Humbert
f2e5ca25db Merge pull request #944 from priyadi/negmousefix
Allow negative values for mouse movements
2016-12-12 00:46:59 -05:00
Jack Humbert
a30591cd53 Merge pull request #943 from lucwastiaux/master
Update dvorak_programmer layout
2016-12-12 00:46:32 -05:00
Jack Humbert
02fa4e3ce2 Merge pull request #942 from priyadi/cpp11
The adafruit BLE C++ code requires -std=c++11
2016-12-12 00:46:12 -05:00
climbalima
7bc1caa21c changed svg after merge 2016-12-10 23:18:46 -05:00
climbalima
73d6018296 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-12-10 23:15:47 -05:00
climbalima
56515ba503 changed svg to support proto pcb 2016-12-10 23:13:36 -05:00
Ofer Plesser
b6bf4e0dce Added support for timing out combos if a key as been pressed for longer than COMBO_TERM 2016-12-10 16:11:59 +02:00
Priyadi Iman Nurcahyo
a6db20e518 Remove unneeded options to reduce firmware size 2016-12-10 21:08:22 +07:00
Priyadi Iman Nurcahyo
434b286032 Allow negative values for mouse movements 2016-12-10 19:40:44 +07:00
lucwastiaux
75d7eb9cb5 put home/end on thumb cluster 2016-12-10 13:20:05 +08:00
lucwastiaux
a3c8949627 readme updates 2016-12-10 12:52:59 +08:00
lucwastiaux
9240f27ba9 Merge remote-tracking branch 'upstream/master' 2016-12-10 12:49:47 +08:00
lucwastiaux
dc4c8875ba use thumb cluster key to toggle brackets layer 2016-12-10 12:37:32 +08:00
Ofer Plesser
eac8fa7999 Implemented basic key combination feature 2016-12-10 00:49:11 +02:00
Priyadi Iman Nurcahyo
901f29e3aa The adafruit BLE C++ code requires -std=c++11 2016-12-10 04:08:08 +07:00
Damien
13c4080a1d Merge pull request #13 from jackhumbert/master
Merged from qmk
2016-12-09 19:44:03 +01:00
Pavlos Vinieratos
9a59fee667 tap dance for some layers. one tap sysctl, two taps mouse. 2016-12-09 16:01:11 +01:00
Pavlos Vinieratos
063ade6bb5 add light for some layers 2016-12-09 16:00:46 +01:00
Pavlos Vinieratos
be2863e56d separate sysctl and mouse layers 2016-12-09 16:00:10 +01:00
Pavlos Vinieratos
d5914a4dfe add alt key 2016-12-09 14:37:22 +01:00
Pavlos Vinieratos
5d241479f5 media keys 2016-12-09 14:37:07 +01:00
Daniel
1f52dbcac0 removes double-tab brackets and adds back quot to left cmd. 2016-12-06 14:15:23 -06:00
Jack Humbert
985a091a73 Update readme.md 2016-12-06 09:49:05 -05:00
Erez Zukerman
cd41355069 Merge pull request #936 from jackhumbert/f/shine_default
Official default factory firmware for ErgoDox EZ Shine
2016-12-06 07:57:02 -05:00
Erez Zukerman
82922a4937 A new default layout that supports Shine 2016-12-05 20:35:03 -05:00
Erez Zukerman
a05b6a72d9 Adjusts config for better mousekey support 2016-12-05 20:34:24 -05:00
Jack Humbert
c87d039839 Merge pull request #921 from Wilba6582/raw_hid
Initial version of Raw HID interface
2016-12-05 00:13:37 -05:00
Jack Humbert
1eec2b7277 Update planck.c 2016-12-04 23:11:22 -05:00
Jack Humbert
b66845ca7f Update rules.mk 2016-12-04 23:10:44 -05:00
Jack Humbert
7e4341e437 Update rules.mk 2016-12-04 23:01:07 -05:00
Jack Humbert
d15d1d3833 Merge pull request #935 from priyadi/promethium
Promethium handwired keyboard firmware update
2016-12-04 21:07:26 -05:00
Priyadi Iman Nurcahyo
c7d11fd001 Remove unnecessary build options 2016-12-05 02:15:38 +07:00
Priyadi Iman Nurcahyo
e18a75609d Merge branch 'master' into promethium 2016-12-05 02:01:20 +07:00
Jack Humbert
dd2911151b Merge pull request #932 from climbalima/master
Added ponoko svg for lets split
2016-12-04 13:53:25 -05:00
Jack Humbert
082f7ed3d3 Merge pull request #933 from priyadi/ps2_mouse_init_user2
Implemented weak ps2_mouse_init_user()
2016-12-04 13:52:17 -05:00
Priyadi Iman Nurcahyo
236c040859 syntax error fix 2016-12-05 01:38:41 +07:00
Priyadi Iman Nurcahyo
07d29b7d29 syntax error fix 2016-12-05 01:22:40 +07:00
Priyadi Iman Nurcahyo
d059624bfb Implemented weak ps2_mouse_init_user()
There are a lot of PS/2 commands, some are vendor/device specific, so we
provide a weak ps2_mouse_init_user() to be implemented in each keyboard
that need it.
2016-12-05 01:21:17 +07:00
Priyadi Iman Nurcahyo
73073f270b Trackpoint initialization 2016-12-05 01:15:04 +07:00
Priyadi Iman Nurcahyo
6ef3060b42 Implemented weak ps2_mouse_init_user()
There are a lot of PS/2 commands, some are vendor/device specific, so we
provide a weak ps2_mouse_init_user() to be implemented in each keyboard
that need it.
2016-12-05 01:07:12 +07:00
Priyadi Iman Nurcahyo
fc80aa9974 Merge branch 'master' into promethium 2016-12-04 23:57:47 +07:00
Priyadi Iman Nurcahyo
a8e5f61805 fix emoji LED indicators. 2016-12-04 23:55:06 +07:00
Priyadi Iman Nurcahyo
75b18773bd fix RGB LED order 2016-12-04 14:51:27 +07:00
climbalima
0f71c81df8 having trouble with conflicts 2016-12-03 17:37:41 -05:00
climbalima
45b7718fb1 cleaned up personal projects 2016-12-03 17:30:40 -05:00
climbalima
59c54d651b Merge https://github.com/climbalima/qmk_firmware 2016-12-03 17:15:22 -05:00
climbalima
ae66f0d702 added plate files for lets split 2016-12-03 17:09:11 -05:00
climbalima
2186e5ae85 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-12-03 17:01:26 -05:00
Jack Humbert
f39e1b5dfe cleans-up formatting of readme 2016-12-03 14:36:39 -05:00
Jack Humbert
d0c667c790 Merge pull request #931 from OferPlesser/feature/improve-ps2-mouse
Improving ps/2 mouse
2016-12-03 10:13:11 -05:00
Jack Humbert
464f7d9687 Merge pull request #916 from wez/ble_4
Connect the adafruit ble code to the lufa main loop
2016-12-03 10:12:38 -05:00
Ofer Plesser
f0768f8be9 Forgot to use define in delay instead of hardcoded number 2016-12-03 13:41:56 +02:00
Ofer Plesser
8e2732edf3 Updated ps2 mouse documentation in readme 2016-12-03 13:11:37 +02:00
Ofer Plesser
9f41544e1d Added back PS2_MOUSE_INIT_DELAY define 2016-12-03 13:09:42 +02:00
ofples
d639e08a31 Refactored and improved ps2 mouse feature 2016-12-03 13:05:02 +02:00
Wez Furlong
044fa3ff85 Connect the adafruit ble code to the lufa main loop
There are now 3 potential locations to send HID reports:

1. USB
2. The bluefruit easy key
3. Adafruit BLE

Generally speaking, if USB is connected then we should prefer to
send the reports there; it is generally the best channel for this.

The bluefruit module has no feedback about bluetooth connectivity
so the code must speculatively send reports over both USB and bluetooth.

The BLE module has connectivity feedback.  In general we want to
prefer to send HID reports over USB while connected there, even
if BLE is connected.  Except that it is convenient to force them
over BLE while testing the implementation.

This policy has been extracted out into a where_to_send function
which returns a bitmask of which of the channels should be used.
2016-12-02 22:46:23 -08:00
Jack Humbert
7f88c9506c Merge pull request #930 from cbbrowne/master
Adds warnings to Planck keymaps that exceed 0x7000 bytes in size #929
2016-12-02 15:21:04 -05:00
Jack Humbert
11d263118a Merge pull request #929 from jackhumbert/hf/size-warnings
Adds warnings to Planck keymaps that exceed 0x7000 bytes in size
2016-12-02 15:20:44 -05:00
cbbrowne
cee0cf8a6e Adds warnings to Planck keymaps that exceed 0x7000 bytes in size #929 2016-12-02 14:12:55 -05:00
Jack Humbert
245c9508bd adds warnings to 4 keymaps 2016-12-02 13:32:50 -05:00
Jack Humbert
e14b0e8e7e Merge pull request #881 from NoahAndrews/patch-1
Recommend WSL on Windows 10 [Discussion]
2016-12-02 13:22:03 -05:00
Jack Humbert
78f8fe361f Merge pull request #915 from wez/ble_3
Add support for Adafruit BLE modules
2016-12-02 13:14:04 -05:00
Jack Humbert
8f0a8cb7a6 Merge pull request #914 from wez/ble_2
Add arduino-alike GPIO pin control helpers
2016-12-02 13:12:56 -05:00
Jack Humbert
ead68248c5 Merge pull request #913 from wez/ble_1
Tidy up atomicity in timer.c and ring_buffer.h
2016-12-02 13:12:19 -05:00
Jack Humbert
4bcec04c01 Merge pull request #924 from cbbrowne/master
Keymapping revs, revisions to documentation on API_SYSEX_ENABLE
2016-12-02 13:06:31 -05:00
Erez Zukerman
555e41d9e5 Annotates nordic 2016-12-02 13:03:51 -05:00
Erez Zukerman
aa70aa3962 Tweaks Kristian's layout again 2016-12-02 13:03:39 -05:00
Erez Zukerman
5d43a2aecf Kristian's keymap 2016-12-02 12:53:18 -05:00
cbbrowne
f6e86cd2c9 I also want page-down/page-up on UPPER layer 2016-12-02 12:35:03 -05:00
cbbrowne
570e784140 I want page-down/page-up - put those on LOWER-Left/Right near bottom corner 2016-12-02 12:31:43 -05:00
cbbrowne
95a160bf92 Improve docs on memory usage 2016-12-01 16:31:51 -05:00
cbbrowne
af4c44deef Improve docs on SYSEX bit 2016-12-01 16:31:30 -05:00
cbbrowne
b787ed9dc6 More notes on .hex size protection 2016-12-01 16:24:03 -05:00
cbbrowne
1f290f6213 Make my builds smaller 2016-12-01 16:21:15 -05:00
cbbrowne
13eb2f826b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-12-01 12:54:16 -05:00
Erez Zukerman
66b13a66e9 Better layout 2016-11-30 22:22:57 -05:00
Wilba6582
fe001d46fd Initial version of Raw HID interface 2016-12-01 00:44:54 +11:00
cbbrowne
ff1b563e85 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-29 12:20:26 -05:00
Jack Humbert
81ea909467 Merge pull request #919 from jackhumbert/hf/robot_test_layout
Test layout for ErgoDox EZ manufacturing robot
2016-11-29 11:22:31 -05:00
Erez Zukerman
4094544d41 Test layout for ErgoDox EZ manufacturing robot 2016-11-29 09:23:16 -05:00
Erez Zukerman
51ae6da99e Merge pull request #918 from jackhumbert/wu5y7
Adds Ergodox EZ RGB lights (both sides using I2C) and implements API base, Midi SysEx API
2016-11-29 08:16:04 -05:00
Erez Zukerman
7b219a7f60 Merge pull request #917 from gid0/master
keyboards/ergodox/keymaps/bepo : merge from author
2016-11-29 08:13:49 -05:00
Jack Humbert
f946d830f9 guess i didnt pull 2016-11-29 00:11:11 -05:00
Jack Humbert
efbc205efd Merge branch 'wu5y7' of github.com:jackhumbert/qmk_firmware into wu5y7 2016-11-29 00:10:06 -05:00
Jack Humbert
d0cefef946 enable rgblight by default for ez 2016-11-29 00:09:56 -05:00
Jack Humbert
06f18e95d4 enable api sysex for ez 2016-11-29 00:06:12 -05:00
Jack Humbert
6e0f994950 Merge branch 'master' of github.com:jackhumbert/qmk_firmware into wu5y7 2016-11-28 23:51:07 -05:00
cbbrowne
5776f39667 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-28 12:27:42 -05:00
Olivier
5a2501d90f Add the AZERTY compatibility layer. 2016-11-28 16:38:03 +01:00
Olivier
f02eccbb29 Change layer names (cosmetic change) and reorder them so that the "shift" layer can be accessed from the "alt" layer when in QWERTY compat mode. 2016-11-28 14:16:42 +01:00
Erez Zukerman
84735836e3 Tweaks position of TOG not to conflict with MO 2016-11-28 08:13:32 -05:00
Olivier
d2b6438e39 A little cleanup, add some comments, change others. 2016-11-28 14:10:31 +01:00
Erez Zukerman
9caf866618 Tweaks EZ Makefile 2016-11-28 07:59:01 -05:00
Erez Zukerman
2d0ada0190 Pulls LED config into common config for EZ 2016-11-28 07:55:02 -05:00
Olivier
3f1fca2eb8 Adjust comment. 2016-11-28 11:21:23 +01:00
Olivier
e26a80508f Reorganize the numeric keypad layer more like a traditional numeric keypad. 2016-11-28 11:20:00 +01:00
Wez Furlong
712476cd28 Add support for Adafruit BLE modules
This implements some helper functions that allow sending key reports
to an SPI based Bluetooth Low Energy module, such as the Adafruit
Feather 32u4 Bluefruit LE.

There is some plumbing required in lufa.c to enable this; that
is in a follow-on commit.
2016-11-27 23:49:44 -08:00
Wez Furlong
8485bb34d2 Add arduino-alike GPIO pin control helpers
Unlike the arduino functions, these don't take abstract pin numbers,
they take pin labels like `B0`.  Also, rather than taking very
generic parameter names, these take slightly more descriptive
enum values.

These improve the clarity of code that would otherwise be inscrutable
bit manipulation in tersely named port register names.
2016-11-27 22:58:34 -08:00
Wez Furlong
be4e75423a Tidy up atomicity in timer.c and ring_buffer.h
Adopt the macros for saving/restoring the interrupt state
that are provided by the avr gcc environment.

Removing intialization of the timer value; this shaves off
a few bytes because globals are default initialized to zero.
2016-11-27 22:58:34 -08:00
Olivier
d6d0b7eada Merge https://github.com/jackhumbert/qmk_firmware 2016-11-27 23:23:21 +01:00
Daniel
a94eb16bd7 removes the double actions from the metakeys. 2016-11-27 16:12:32 -06:00
dbroqua
a849bdc581 - Merged 2016-11-27 11:44:30 +01:00
Jack Humbert
7edac212c8 separated into api files/folder 2016-11-26 15:38:44 -05:00
Jack Humbert
1585fc4b61 Merge pull request #908 from priyadi/promethium
My handwired keyboard firmware
2016-11-26 13:40:42 -05:00
Priyadi Iman Nurcahyo
12c1314b02 update docs 2016-11-27 00:40:31 +07:00
Jack Humbert
b5c811bde5 Merge pull request #907 from priyadi/unicode_docs
Update Unicode documentation
2016-11-26 12:38:48 -05:00
Jack Humbert
637170d560 Merge pull request #906 from priyadi/unicode_map_fix_warning
fix strict-prototypes warning
2016-11-26 12:38:10 -05:00
Priyadi Iman Nurcahyo
a182cbc031 Update Unicode documentation 2016-11-27 00:34:29 +07:00
Priyadi Iman Nurcahyo
6fee7e178f fix strict-prototypes warning 2016-11-26 23:53:15 +07:00
Priyadi Iman Nurcahyo
a1f88bf7bf Merge branch 'promethium' of github.com:priyadi/qmk_firmware into promethium 2016-11-26 23:48:52 +07:00
Priyadi Iman Nurcahyo
0f39ab5219 remove ifdef on chip type 2016-11-26 23:48:11 +07:00
Priyadi Iman Nurcahyo
7f3c9c6a39 protocols.mk is already included in latest QMK 2016-11-26 23:48:11 +07:00
Priyadi Iman Nurcahyo
b5019bef05 change init delay to 2000ms 2016-11-26 23:48:11 +07:00
Priyadi Iman Nurcahyo
8ee389c9b6 My Promethium keyboard firmware 2016-11-26 23:48:11 +07:00
Jack Humbert
746fd15638 Merge pull request #905 from priyadi/ps2_documentation
A few addition to PS2 documentation.
2016-11-26 10:46:41 -05:00
Jack Humbert
fbd4c34c0f Merge pull request #904 from priyadi/ps2_remove_hardcoded_pins
PS2 pins configuration belongs to each keyboards config.h
2016-11-26 10:46:29 -05:00
Priyadi Iman Nurcahyo
f2214ce1cb remove define checks. didn't work because of include ordering. 2016-11-26 15:57:48 +07:00
Priyadi Iman Nurcahyo
d9d67e7b76 add macro error when a required define is missing 2016-11-26 15:26:02 +07:00
Priyadi Iman Nurcahyo
f837406ace A few addition to PS2 documentation. 2016-11-26 14:23:55 +07:00
Priyadi Iman Nurcahyo
17acde94ee Fix unterminated ifndef 2016-11-26 14:02:38 +07:00
Priyadi Iman Nurcahyo
de1df63953 PS2 pins configuration belongs to each keyboards config.h
Each keyboard might have different pin configuration. And keeping this
here will trigger redefinition warning on keyboards that have PS2
defines.
2016-11-26 13:55:41 +07:00
Priyadi Iman Nurcahyo
2cf9b93758 remove ifdef on chip type 2016-11-26 13:47:03 +07:00
Priyadi Iman Nurcahyo
6313ec7ef9 protocols.mk is already included in latest QMK 2016-11-26 13:46:05 +07:00
Priyadi Iman Nurcahyo
b94e5b2aa6 change init delay to 2000ms 2016-11-26 13:44:50 +07:00
Jack Humbert
7a1eca784f Merge pull request #903 from priyadi/ps2_init_delay
Make PS2 init delay configurable.
2016-11-26 01:34:49 -05:00
Priyadi Iman Nurcahyo
b5511b9a8a Merge branch 'master' into promethium 2016-11-26 13:31:17 +07:00
Priyadi Iman Nurcahyo
9a071f051c Make PS2 init delay configurable. Some devices are not fully powered up
after 1s.
2016-11-26 13:24:53 +07:00
Priyadi Iman Nurcahyo
4b0d16cd7b My Promethium keyboard firmware 2016-11-26 13:11:40 +07:00
cbbrowne
e3c735e400 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-25 12:06:35 -05:00
Jack Humbert
bf23ac96f6 Merge pull request #902 from OferPlesser/feature/ps2-mouse-support
PS/2 mouse support
2016-11-25 11:22:44 -05:00
ofples
97e7486d4c Added documentation for PS/2 mouse in readme 2016-11-25 12:10:44 +02:00
ofples
0c9d66eb59 Removed comment 2016-11-25 09:20:41 +02:00
ofples
03d6e165bb Added missing endif for ifdef __AVR_ATmega32U4__ and removed the unnecessary one at the end of the file 2016-11-25 09:17:40 +02:00
ofples
3be13d1ffb Added protocol.mk to build 2016-11-25 09:15:12 +02:00
Jack Humbert
98d7ad6f49 Merge pull request #899 from Wilba6582/suspend_fix
Fixed NO_SUSPEND_POWER_DOWN handling
2016-11-24 22:20:08 -05:00
Jack Humbert
f25596b8dc rgblight fixes 2016-11-23 21:28:12 -05:00
Jack Humbert
cefa8468fb travis pls 2016-11-23 20:16:38 -05:00
Jack Humbert
2e23689b8e converted to new format 2016-11-23 18:52:02 -05:00
cbbrowne
c05cbaf534 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-23 17:47:16 -05:00
Wilba6582
cf3926a8e1 Fixed NO_SUSPEND_POWER_DOWN handling 2016-11-23 19:45:50 +11:00
Jack Humbert
3d7aaa31e4 converted to 8bit messages 2016-11-23 00:30:06 -05:00
Wilba6582
5893f0fa1f Fixed NO_SUSPEND_POWER_DOWN handling 2016-11-23 16:22:57 +11:00
Jack Humbert
2b3a3ca678 Merge pull request #898 from PureSpider/backlight-fix
Set backlight status to on if it's at maximum brightness already and the brightness increase keybind is used
2016-11-22 18:41:37 -05:00
Jack Humbert
e131de3df6 Merge pull request #896 from h-youhei/jp106
Add japanese keymap
2016-11-22 18:39:54 -05:00
PureSpider
d37becc0a9 Set backlight status to on if it's at maximum brightness already and the brightness increase keybind is used
Before it was turned on but the status wasn't set to on, so you had to
push the backlight toggle bind twice to turn it off again
2016-11-22 22:12:57 +01:00
h-youhei
2febf9b9f7 Add japanese keymap 2016-11-22 20:40:12 +09:00
Jack Humbert
450a8fb5b6 Merge branch 'master' of github.com:jackhumbert/qmk_firmware into wu5y7 2016-11-21 20:17:45 -05:00
Jack Humbert
06a2677b7e fix infinity 2016-11-21 20:17:32 -05:00
Jack Humbert
6390033e86 cleaning up midid 2016-11-21 20:14:16 -05:00
Jack Humbert
af119baf71 Merge pull request #894 from dchagniot/ergodoxDvorakEmacs
Ergodox dvorak emacs
2016-11-21 20:00:40 -05:00
Jack Humbert
4bb0eaef26 Merge pull request #893 from Sihui/sh-hhkb-jp
[HHKB JP with Dvorak]
2016-11-21 20:00:13 -05:00
Jack Humbert
be265decae Merge pull request #892 from fredizzimo/disable_ergodox_lcd
Always initialize the Infinity Ergodox backlight
2016-11-21 19:59:39 -05:00
Jack Humbert
377583d9f3 Merge pull request #891 from g-sam/galson-keymap
adds galson keymap
2016-11-21 19:59:17 -05:00
Jack Humbert
132c079534 Merge pull request #890 from algernon/f/space-cadet/timeout
Add a timeout to space-cadet shift.
2016-11-21 19:58:55 -05:00
Jack Humbert
e0fc186c28 Merge pull request #888 from climbalima/master
Added pro micro to maxipad
2016-11-21 19:58:24 -05:00
Jack Humbert
ea472fb018 Merge pull request #887 from profet23/atreus62
atreus62 Keyboard Support
2016-11-21 19:58:00 -05:00
Jack Humbert
664c0a036b cleaning up new code 2016-11-21 19:50:55 -05:00
Jack Humbert
27ebacb15d merging lets_split 2016-11-21 19:18:47 -05:00
Jack Humbert
c1037b1dc0 working with helper, qmk_helper_windows@05b0105 2016-11-21 18:05:06 -05:00
Jack Humbert
b57cf3c0c8 more structure to the package 2016-11-21 12:54:06 -05:00
Sihui Huang
b75538c0bf add del to new cmd 2016-11-20 14:45:51 -08:00
Sihui Huang
390a1bda8b add space to NewCmd layer 2016-11-20 13:32:25 -08:00
Sihui Huang
ccc34851f2 add space to NewCmd layer 2016-11-20 13:31:41 -08:00
Didier Chagniot
6f24344be7 typo fix 2016-11-20 20:51:05 +01:00
Sihui Huang
23f63ed1b9 Update README.md 2016-11-20 11:18:08 -08:00
Sihui Huang
34aa59c6d5 Update README.md 2016-11-20 11:13:57 -08:00
Sihui Huang
11f17e3b23 Update README.md 2016-11-20 11:12:48 -08:00
Sihui Huang
a8b1c47f0f add sh-hhkb-jp layers 2016-11-20 11:10:26 -08:00
Fred Sundvik
c86bbf474e Always initialze the Infinity Ergodox backlight
Otherwise it will stay lit. The set_led functionality is also disabled
since it doesn't work properly for slaves.
2016-11-20 19:28:10 +02:00
Jack Humbert
3b990c08dc Merge pull request #878 from sethbc/add_sethbc_gh60_keymap
add sethbc keymap for gh60 and update macro expansion
2016-11-19 13:05:30 -05:00
Seth Chandler
df8724ce08 remove KC expansion from GH60 2016-11-19 12:19:21 -05:00
Gergely Nagy
74a1f00713 Fix the Space Cadet timeout code
Define a default TAPPING_TERM in quantum.c, for keyboards that do not
have it set. Fixes the CI failure.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-11-19 18:19:18 +01:00
Seth Chandler
620e4f74d3 move KC expansion to separate macros 2016-11-19 11:37:12 -05:00
Seth Chandler
ac7d202d4f merge upstream/master 2016-11-19 11:20:41 -05:00
samgalson@gmail.com
7f5e71d79f adds galson keymap 2016-11-19 14:21:12 +00:00
Gergely Nagy
ffa5b1e7ea Add a timeout to space-cadet shift.
When one holds a Space Cadet shift, to have it act as a shift, so that
mouse behaviour changes, when released without any other key pressed, it
still registers a paren. To remedy this, add a hold timeout: if the key
is held longer than TAPPING_TERM, it will not register the parens.

Fixes #884, with the side-effect of not being able to have parens
trigger the OS-side repeat anymore.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-11-19 11:32:09 +01:00
climbalima
102a830bbd changed readme 2016-11-19 00:49:20 -05:00
climbalima
e356de2220 added the pinout for pro micro into maxipad 2016-11-19 00:44:52 -05:00
climbalima
01736a502e just saving 2016-11-18 23:40:34 -05:00
Jack Humbert
a06115df19 don't always detect a matrix change (fixes debounce) 2016-11-18 23:20:07 -05:00
Jack Humbert
ab6557c1a0 wqMerge branch 'wu5y7' of https://github.com/jackhumbert/qmk_firmware into wu5y7 2016-11-18 22:22:29 -05:00
Jack Humbert
161bd5596b midi back and forth 2016-11-18 22:22:24 -05:00
Daniel
abee809298 moves brackets to top row. 2016-11-18 11:11:08 -06:00
Erez Zukerman
285c5a91f2 Groundwork for dedicated color keycodes 2016-11-17 20:56:36 -05:00
Erez Zukerman
9bbc9a7ce0 Initial Erez Experimental keymap tweaks 2016-11-17 19:47:08 -05:00
Jack Humbert
3774a7fcda rgb light through midi 2016-11-17 17:42:14 -05:00
Benjamin Grabkowitz
6c5fce5c1a Adding readme placeholder 2016-11-16 23:59:42 -05:00
Benjamin Grabkowitz
00d88b74ad Adding Support for atreus62 keyboard. https://github.com/profet23/atreus62 2016-11-16 23:52:36 -05:00
Jack Humbert
c38b3e3be9 Merge pull request #883 from climbalima/master
added rev2 lets split after merging with qmk
2016-11-16 21:17:51 -05:00
climbalima
b085a34506 fixed readme conflicts 2016-11-16 20:44:49 -05:00
climbalima
21b6b4e6c4 should have fixed conflixed 2016-11-16 19:49:38 -05:00
climbalima
668c739702 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-16 19:28:30 -05:00
climbalima
5cac51a773 Merge https://github.com/climbalima/qmk_firmware 2016-11-16 19:26:38 -05:00
climbalima
1dd6ceb45d Updated my repo to current qmk 2016-11-16 19:18:54 -05:00
Jack Humbert
72e78a017f Merge pull request #882 from seebs/master
dvorak/plover keyboard layout
2016-11-16 17:15:58 -05:00
cbbrowne
5b88e7ab9a Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-16 17:05:11 -05:00
Seebs
4da698fda3 dvorak/plover keyboard layout
Plover's steno support likes quasi-qwerty, and gaming likes qwerty,
and I like dvorak, so... what if I could have it all?

Signed-off-by: seebs <seebs@seebs.net>
2016-11-16 15:44:26 -06:00
Jack Humbert
9f1b27c5ba Merge pull request #880 from psyill/master
Added keymap "videck", an ErgoDox keymap for Vi(m) users.
2016-11-16 14:54:18 -05:00
Jack Humbert
e025a94bc2 Merge pull request #879 from sethbc/update_sethbc_ergodox_keymap
update sethbc ergodox keymap
2016-11-16 14:53:52 -05:00
Jack Humbert
d85f6deb9b Merge pull request #877 from sethbc/update_sethbc_satan_keymap
update sethbc keymap
2016-11-16 14:51:18 -05:00
Jack Humbert
6dde65c2a9 Merge pull request #876 from Dbroqua/master
Updated kc60/dbroqua layout and added satan/dbroqua_hhkb
2016-11-16 14:49:55 -05:00
Jack Humbert
17e1a4f825 Merge pull request #866 from fredizzimo/infinity60_clockfixes
Increase the infinity60 system tick frequency
2016-11-16 14:42:53 -05:00
Jack Humbert
7541122cad Merge pull request #860 from IBNobody/master
Improved Quantum Matrix
2016-11-16 14:41:10 -05:00
Jack Humbert
530dd3377e animations, midi, etc 2016-11-15 13:18:10 -05:00
climbalima
bce6e52391 fixed conflict 2016-11-14 23:08:10 -05:00
climbalima
dd22c787b8 fixed extra paste 2016-11-14 23:05:37 -05:00
Noah Andrews
702405f039 Recommend WSL on Windows 10
At this point, I consider the batch scripts @IBNobody and I worked on to mostly be a failure. They've proven to be unreliable, too dependent on the environment they're being run in, and I've seen far too many examples of people having frustrating issues with them that I haven't been able to help them with. They can also produce misleading and confusing error messages. I've been pointing people to use the WSL for a while now. Eventually, I think we should make a proper replacement for the batch scripts, possibly with an environment in msys2. For now, the WSL method in Windows 10 is far more reliable, and is easy to set up. 

I also cleaned up some things in the WSL instructions themselves.
2016-11-14 10:03:18 -05:00
Jack Humbert
e9f7487518 mostly working 2016-11-13 23:02:38 -05:00
Hans Ellegård
162f603b1c Added keymap "videck", an ErgoDox keymap for Vi(m) users. 2016-11-13 22:44:41 +01:00
Seth Chandler
aa76425395 oops, fixed inverted if statement 2016-11-13 01:04:10 -05:00
Seth Chandler
34bf8558cd update sethbc ergodox keymap 2016-11-13 00:56:46 -05:00
Seth Chandler
b2bc215934 add sethbc keymap for gh60 and update macro expansion in connection with same 2016-11-13 00:42:07 -05:00
Seth Chandler
28249498bc update sethbc keymap 2016-11-12 23:56:57 -05:00
Jack Humbert
33e62c080c merging 2016-11-12 20:54:37 -05:00
Damien
0a99cf300c Merge pull request #12 from jackhumbert/master
Merged from qmk
2016-11-12 19:33:07 +01:00
dbroqua
3bc51065a4 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-11-12 19:27:03 +01:00
dbroqua
19ebf6161f - Added dbroqua_hhkb layout for Satan PCB 2016-11-12 19:23:38 +01:00
cbbrowne
c609edc362 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-11-11 10:39:11 -05:00
cbbrowne
992ec01b5d Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-11 10:39:07 -05:00
Chris Browne
de3117f483 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-10 23:32:29 -05:00
climbalima
ec0db2933c Merge branch 'master' of https://github.com/climbalima/qmk_firmware
second try
2016-11-10 20:06:54 -05:00
climbalima
b5cecb4cc9 Added both revisions into one folder 2016-11-10 20:03:24 -05:00
Jack Humbert
631b8999a7 Merge pull request #868 from potz/master
Add brazilian ABNT2 keymap
2016-11-10 18:45:09 -05:00
climbalima
79f82d3d80 returned to o 2016-11-10 18:43:31 -05:00
climbalima
6e27f6fbde Changes to be committed:
new file:   keyboards/lets_splitv2/Makefile
	new file:   keyboards/lets_splitv2/config.h
	new file:   keyboards/lets_splitv2/i2c.c
	new file:   keyboards/lets_splitv2/i2c.h
	new file:   keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png
	new file:   keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png
	new file:   keyboards/lets_splitv2/keymaps/default/keymap.c
	new file:   keyboards/lets_splitv2/lets_split.c
	new file:   keyboards/lets_splitv2/lets_split.h
	new file:   keyboards/lets_splitv2/matrix.c
	new file:   keyboards/lets_splitv2/pro_micro.h
	new file:   keyboards/lets_splitv2/readme.md
	new file:   keyboards/lets_splitv2/serial.c
	new file:   keyboards/lets_splitv2/serial.h
	new file:   keyboards/lets_splitv2/split_util.c
	new file:   keyboards/lets_splitv2/split_util.h
	new file:   keyboards/maxipad/Makefile
	new file:   keyboards/maxipad/config.h
	new file:   keyboards/maxipad/keymaps/default/Makefile
	new file:   keyboards/maxipad/keymaps/default/config.h
	new file:   keyboards/maxipad/keymaps/default/keymap.c
	new file:   keyboards/maxipad/keymaps/default/readme.md
	new file:   keyboards/maxipad/maxipad.c
	new file:   keyboards/maxipad/maxipad.h
	new file:   keyboards/maxipad/readme.md
2016-11-10 18:19:13 -05:00
Erez Zukerman
f73a378f0f Merge pull request #870 from NoahAndrews/patch-1
Add proper shortcode for KC_DELETE to keycode.txt
2016-11-10 09:43:38 -05:00
IBNobody
1803dbc6d5 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-11-08 21:11:24 -06:00
Noah Andrews
64218f0f70 Add proper shortcode for KC_DELETE to keycode.txt 2016-11-08 22:05:24 -05:00
Potiguar Faga
7aa31ad338 Add brazilian ABNT2 keymap 2016-11-08 13:32:04 -02:00
cbbrowne
83b67b0cf3 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-11-07 12:49:05 -05:00
cbbrowne
cdad01b57a Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-07 12:48:34 -05:00
Jack Humbert
a9e0fd410c Merge pull request #867 from fredizzimo/variable_trace
Variable trace
2016-11-07 10:55:05 -05:00
Jack Humbert
309d93184e Merge pull request #852 from J3RN/remove-z-slash-controls
Removed the control action when holding z or /
2016-11-07 10:47:32 -05:00
Fred Sundvik
0ba3e523a7 Add documentation for the variable tracing 2016-11-06 22:44:43 +02:00
Fred Sundvik
a377017c95 Add possibility to control variable trace from make 2016-11-06 22:11:24 +02:00
Fred Sundvik
f519b94be7 Add variable trace
For debugging changes to variables, either normally or as a result
of a memory corruption.
2016-11-06 21:58:34 +02:00
Jonathan Arnett
1d766c596e Removed the control action when holding z or / 2016-11-06 13:48:20 -05:00
Chris Browne
a4255664ce Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-11-06 07:52:44 -05:00
Chris Browne
4f1cb9fd5e Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-06 07:52:21 -05:00
Fred Sundvik
c06e2486ab Increase the infinity60 system tick frequency 2016-11-05 22:45:21 +02:00
lucwastiaux
b8e204322a added more shortcut keys 2016-11-05 12:07:33 +08:00
lucwastiaux
78a1dc84dd updated readme 2016-11-05 11:58:23 +08:00
lucwastiaux
ff8b4a1d89 removed brackets anywhere but in brackets layer, added mouse layer back in, replaced all HYPR with MEH, put semicolon-newline and end-newline on symbol layer 2016-11-05 11:56:59 +08:00
Damien
7697f23538 Merge pull request #11 from jackhumbert/master
Merged from jackhumbert
2016-11-03 21:50:31 +01:00
cbbrowne
930ae4b7ff Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-11-01 13:09:27 -04:00
IBNobody
78976d8f7a Adding SKIP_GIT to speed up compiles. 2016-11-01 11:52:58 -05:00
IBNobody
9e6c57af2a Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-11-01 10:56:56 -05:00
Erez Zukerman
d5270af111 Implements dedicated text zoom keys 2016-11-01 10:03:58 -04:00
Erez Zukerman
7a9be2562d Merge pull request #851 from J3RN/momentary
Switched to momentary
2016-10-31 21:41:19 -04:00
Erez Zukerman
a6401076d5 Merge pull request #843 from lucwastiaux/master
Adding Ergodox Dvorak Programmer layout
2016-10-31 21:40:58 -04:00
Erez Zukerman
bd40844e4e Merge pull request #836 from 20lives/master
added new layout
2016-10-31 21:39:40 -04:00
cbbrowne
b90366285f Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-31 11:45:54 -04:00
Jack Humbert
964b8574ee Merge pull request #839 from priyadi/planck-priyadi-modification
Update priyadi's keymap for Planck; added readme
2016-10-30 12:26:20 -04:00
Jack Humbert
d75de44551 Merge pull request #854 from slebedev/master
Add link to article about Unicode Hex Input in readme
2016-10-30 12:25:52 -04:00
Jack Humbert
b0317abe42 Merge pull request #857 from fredizzimo/fix_makefile_too_long_bash
Run each sumbmake in a separate shell
2016-10-30 12:25:22 -04:00
Fred Sundvik
d956dd1248 Run each sumbmake in a separate shell
This will fix the situation where the commandline gets too long when
there are many keyboards and keymaps.
2016-10-30 17:03:01 +02:00
IBNobody
f403028974 added fixed debounce code 2016-10-29 16:12:58 -05:00
Sergey Lebedev
552f469dfc Add link to article about Unicode Hex Input in readme
For me it wasn't clear what is `Unicode Hex Input`, that article
  clarifies it (at least for me).
2016-10-29 22:08:11 +03:00
IBNobody
e40c33f754 Merge branch 'master' of https://github.com/IBNobody/qmk_firmware 2016-10-29 11:13:15 -05:00
IBNobody
32f88c0717 Made scanning more efficient 2016-10-29 10:39:03 -05:00
IBNobody
4c6960835c Refactoring Matrix scanning 2016-10-28 16:24:20 -05:00
IBNobody
508eddf8ba Fixing Debounce - WIP 2016-10-28 14:21:38 -05:00
IBNobody
a0fdb6b81a Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-28 09:28:47 -05:00
dbroqua
2082c6f110 - Fixed typo in gh60/dbroqua layout 2016-10-26 22:24:26 +02:00
cbbrowne
2a2920d92c Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-26 10:55:41 -04:00
lucwastiaux
055247f35d re-introduce brackets layer 2016-10-26 21:00:58 +08:00
Damien
41d7460f53 Merge pull request #10 from jackhumbert/master
Merge from jackhumbert/qmk_firmware
2016-10-26 07:43:58 +02:00
Jack Humbert
f44ead1462 Merge pull request #827 from Dbroqua/master
Updated dbroqua layout for HHKB keyboard and added new layout for KC60
2016-10-26 01:19:27 -04:00
Jack Humbert
67cf367a45 Merge pull request #849 from hot-leaf-juice/master
tiny keymap change
2016-10-26 00:52:13 -04:00
Jack Humbert
003cb9124c Merge pull request #848 from andrebeat/fix-dockerfile
Add subproject env var to dockerfile
2016-10-26 00:51:51 -04:00
Jack Humbert
cbb7e95284 Merge pull request #847 from yinshanyang/master
added notes on using Arduino Pro Micro 3.3V with Let’s Split
2016-10-26 00:51:39 -04:00
Jack Humbert
8d60354d5a Merge pull request #844 from priyadi/unicode_wincompose_input
Unicode WinCompose input method
2016-10-26 00:48:44 -04:00
Jack Humbert
108d0e89a6 Merge pull request #842 from priyadi/unicode_map_length
UNICODE_MAP: remove 5 char limit; ignore leading zeroes; handle OS limitations
2016-10-26 00:48:00 -04:00
Jack Humbert
3b34cf7e6c Merge pull request #841 from jacwib/master
Update jacwib keymap to version 1.2
2016-10-26 00:47:30 -04:00
Jack Humbert
f2dd125a1e Merge pull request #831 from kejadlen/master
add alphadox layouts to atreus and ergodox
2016-10-26 00:46:56 -04:00
Jack Humbert
c66c86cace Merge pull request #834 from kazufukurou/master
add programmer dvorak keymap
2016-10-26 00:45:59 -04:00
Alpha Chen
427ea7a889 [alphadox] remove tmk reset code 2016-10-25 09:00:45 -07:00
Alpha Chen
e2916f8ab1 [ergodox][alphadox] undefine tapping_term, ignore_mod_tap_interrupt 2016-10-25 09:00:45 -07:00
Alpha Chen
22cb73fad3 add alphadox layouts to atreus and ergodox 2016-10-25 09:00:45 -07:00
Callum Oakley
6bbb0b030e replace lock key with general power key 2016-10-25 11:51:32 +01:00
Callum Oakley
c0a9fa8eea switched to standard volume keys 2016-10-25 11:37:09 +01:00
Andre Silva
1557d16562 add subproject env var to dockerfile 2016-10-24 20:29:34 +01:00
Joshua T
7d698cc494 Added comments with ASCII art keymaps 2016-10-24 10:30:00 -05:00
Yin Shanyang
7550abbb7f added notes on using Arduino Pro Micro 3.3V with Let’s Split 2016-10-24 15:36:24 +08:00
IBNobody
ef8f618027 Fixing Line Terminations 2016-10-23 23:03:26 -05:00
IBNobody
17170ba76d Fixed some large keyboard bugs
Fixed some bugs relating to keyboards with more than 16 columns. Also
added the ability to mask off keyboard matrix bits.
2016-10-23 23:00:43 -05:00
IBNobody
05ceef2350 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-23 20:45:20 -05:00
Lior Haim
0d26320cf3 merge upstream 2016-10-23 20:22:28 +03:00
Chris Browne
6a0313ac26 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-23 10:28:47 -04:00
Chris Browne
ed8efcf86d Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-23 10:28:02 -04:00
jacwib
b7611d5037 1.2 update 2016-10-23 15:57:36 +02:00
Priyadi Iman Nurcahyo
c6f6172fd5 Use WinCompose unicode input method instead of HexNumpad 2016-10-23 19:35:06 +07:00
Priyadi Iman Nurcahyo
4a666c2010 Unicode WinCompose input method 2016-10-23 19:15:33 +07:00
lucwastiaux
919caaccb7 adding readme 2016-10-23 11:44:16 +08:00
Priyadi Iman Nurcahyo
e7d5dc89f2 UNICODE_MAP: remove 5 char limit; ignore leading zeroes; handle OS limitations 2016-10-23 05:36:26 +07:00
jacwib
dbcbd8ee3c Update readme to reflect 1.1 changes. 2016-10-22 21:32:39 +02:00
jacwib
83b2149885 Update keymap to reflect 1.1 changes. 2016-10-22 21:29:47 +02:00
jacwib
a625c2201a Update readme to reflect changes 2016-10-22 21:29:11 +02:00
lucwastiaux
14ac397d5d add up/down keys on thumb clusters 2016-10-23 00:47:58 +08:00
lucwastiaux
64ac74cab6 remove brackets layer, replace a few shortcuts on thumb cluster 2016-10-23 00:44:34 +08:00
lucwastiaux
97e3106848 type brackets in symbol layer, using bottom row 2016-10-23 00:11:16 +08:00
lucwastiaux
e0c9ec54dd add tap-dance support, make right shift double-tap=caplock 2016-10-22 22:39:24 +08:00
lucwastiaux
bc8092245c change include files 2016-10-22 22:29:05 +08:00
lucwastiaux
53a2bf9215 added dvorak programmer layout 2016-10-22 22:22:34 +08:00
Priyadi Iman Nurcahyo
5fa44c594f Update priyadi's keymap for Planck; added readme 2016-10-22 18:47:51 +07:00
twentylives
8727976a1a fixed copy-cut-paste buttons 2016-10-21 12:13:44 +03:00
cbbrowne
976136a0b2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-20 12:03:15 -04:00
Erez Zukerman
2e2b9962cd Merge pull request #833 from h-parks/master
Win10 Writer's Block - An ErgoDox Keymap
2016-10-20 08:55:16 -04:00
Erez Zukerman
c3dee2bb66 Merge pull request #832 from PhoenixRion/master
Phoenix Layout
2016-10-20 08:53:47 -04:00
twentylives
4ebbb3c297 Merge branch 'master' of https://github.com/20lives/qmk_firmware 2016-10-20 11:07:53 +03:00
twentylives
7090c99adf fixed base layer = key 2016-10-20 11:07:14 +03:00
Artyom Mironov
6e003b1e3f add programmer dvorak keymap 2016-10-19 23:45:55 +03:00
20lives
464af700eb fix readme 2016-10-19 20:26:58 +03:00
twentylives
65c1127b49 update pics and readme 2016-10-19 20:23:10 +03:00
h-parks
f2197611c7 Win10 Writer's Block - An ErgoDox Keymap
fix for compiling on infinity:

replaced `_delay_ms()' with `wait_ms()'
included "wait.h"
2016-10-19 09:33:37 -05:00
h-parks
1688c014cc Win10 Writer's Block - An ErgoDox Keymap
This is a QWERTY layout for ErgoDox on QMK. It's designed to work well in MS Office-like environments. It's tested on Windows 7 and 10.
2016-10-18 21:58:33 -05:00
cbbrowne
729b4cdef3 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-18 18:11:54 -04:00
IBNobody
826417bfc0 Updating Vision keyboard files 2016-10-18 16:45:45 -05:00
Ryan Ascheman
fad20756e3 update header file 2016-10-18 13:58:59 -07:00
Ryan Ascheman
cabfd78309 didn't read PR comment close enough, correcting folder 2016-10-18 12:48:07 -07:00
Ryan Ascheman
60326eded2 moving keymap to new location 2016-10-18 12:44:30 -07:00
Ryan Ascheman
55b8b8477c Merge remote-tracking branch 'upstream/master'
* upstream/master: (1239 commits)
  Update ez.c
  removes planck/rev3 temporarily
  Move hand_swap_config to ez.c, removes error for infinity
  Update Makefile
  ergodox: Update algernon's keymap to v1.9
  Added VS Code dir to .gitignore
  Support the Pegasus Hoof controller.
  [Jack & Erez] Simplifies and documents TO
  add readme
  use wait_ms instead of _delay_ms
  add messenger
  init keymap
  Add example keymap
  Adding whiskey_tango_foxtrot_capslock ergodox keymap
  Unicode map framework. Allow unicode up to 0xFFFFF using separate mapping table
  CIE 1931 dim curve
  Apply the dim curve to the RGB output
  Update the Cluecard readme files
  Tune snake and knight intervals for Cluecard
  Tunable RGB light intervals
  ...
2016-10-18 12:42:02 -07:00
20lives
48eb5112b5 Update readme.md 2016-10-18 22:35:05 +03:00
20lives
31193b9cff Update readme.md 2016-10-18 22:33:42 +03:00
twentylives
28dfaa20f5 adding dvorak hebrew layout 2016-10-18 22:27:36 +03:00
Jack Humbert
04df74f636 Merge pull request #829 from r2d2rogers/master
Move hand_swap_config to ez.c, removes error for infinity
2016-10-18 15:19:00 -04:00
Jack Humbert
d8417f9f6e Merge pull request #824 from dsvensson/pegasushoof
Support the Pegasus Hoof controller.
2016-10-18 15:18:19 -04:00
Rob Rogers
75ea142d01 Update ez.c 2016-10-18 13:59:19 -05:00
Jack Humbert
b466628c0b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-18 13:58:20 -04:00
Jack Humbert
18b5c3dccf removes planck/rev3 temporarily 2016-10-18 13:57:56 -04:00
Erez Zukerman
0d8844dcb8 Merge pull request #826 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.9
2016-10-17 18:12:31 -04:00
cbbrowne
778dbe46d2 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-17 10:54:09 -04:00
cbbrowne
0469bd8ffa Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-17 10:53:39 -04:00
Rob Rogers
1dcee07eab Move hand_swap_config to ez.c, removes error for infinity 2016-10-17 08:04:29 -05:00
Chris Browne
62e6789ab2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-16 20:59:52 -04:00
Jack Humbert
a889b899e2 working with power limit 2016-10-16 16:03:56 -04:00
Jack Humbert
5f91fb4136 working with power limit 2016-10-16 16:03:33 -04:00
Jack Humbert
80ac73a21c Update Makefile 2016-10-16 15:59:50 -04:00
Jack Humbert
52d7f7d277 Merge pull request #815 from priyadi/unicode_map
Allow unicode up to 0xFFFFF using separate mapping table
2016-10-16 15:49:45 -04:00
Jack Humbert
5e2b843538 Merge pull request #825 from replicaJunction/pr-vscode
Added VS Code dir to .gitignore
2016-10-16 15:49:33 -04:00
dbroqua
911b52a494 - Added HHKB like layout for KC60 pcb 2016-10-16 15:37:47 +02:00
Gergely Nagy
f9d8cf35f6 ergodox: Update algernon's keymap to v1.9
Overall changes
===============

* `F12` was replaced by an `Fx` key, that activate the **Media** layer
  as a one-shot layer, and also `Alt` as a one-shot modifier.

Base layer changes
==================

* The `Media Stop` key is now a tap-dance key, and resets the device for
  programming on the fourth tap.

Miscellaneous
=============

* `π` can now be entered with UCIS.
* `🐁` can now be entered with UCIS.

Tools
=====

* The `tools/layer-notify` tool was removed, it was an example, which I
  don't use.

`tools/hid-commands`
--------------------

* Now looks at the `DISABLE_APPSEL_START` environment value, and does
  not display an AppSel notification if it is non-empty.
* Will attempt to re-program the keyboard when receiving a `reflash`
  command.
* No longer tries to select Emacs 24 on `APPSEL_EMACS`, rather, it goes
  for any Emacs.
* The `APPSEL_MUSIC` command now includes Kodi in the list too, as the
  last choice.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-10-16 08:01:50 +02:00
Joshua T
2a918718f1 Added VS Code dir to .gitignore 2016-10-15 18:46:39 -05:00
Joshua T
d9dede476f Added VS Code dir to .gitignore 2016-10-15 18:40:26 -05:00
Joshua T
896c1e6f1e Added a bit more detail to header 2016-10-15 18:19:09 -05:00
Joshua T
a2adff94bb Reversed tilde and grave 2016-10-15 18:05:22 -05:00
Joshua T
825563f34d Moved Extend tab and ^tab 2016-10-15 17:56:09 -05:00
Joshua T
1455a44a44 Added = to match Atreus 2016-10-15 17:41:36 -05:00
Joshua T
80fe2ea676 Switched Tab and Ctrl back 2016-10-15 17:23:25 -05:00
Joshua T
0714981288 Fixed typo 2016-10-15 17:19:07 -05:00
Joshua T
c67f6ee872 Added Menu key (the rclick menu) 2016-10-15 17:03:27 -05:00
Joshua T
d9db5395b3 Updated layout to 1.2 - lots of changes
Rewrote QWERTY to make it a first-class citizen instead of just a glorified game layer.

Added a lot of keys to Extend layer to bring it in line with my Atreus.

Plenty of other changes too.
2016-10-15 16:51:40 -05:00
Joshua T
a9c8f2f5b8 Reduced TAPPING_TERM to 150
Also removed duplicate definition of PREVENT_STUCK_MODIFIERS
2016-10-15 16:44:26 -05:00
Joshua T
8ec7341fb2 Added Ctrl+` (ConEmu shortcut) 2016-10-15 15:28:16 -05:00
Joshua T
2e6a1a53d7 Merge remote-tracking branch 'upstream/master' 2016-10-15 15:14:10 -05:00
dbroqua
28ca1f5345 Merge branch 'master' of https://github.com/Dbroqua/qmk_firmware 2016-10-14 21:53:37 +02:00
Damien
2098b363ea Merge pull request #9 from jackhumbert/master
Merge from jackhumbert
2016-10-13 21:51:35 +02:00
cbbrowne
f74c560be8 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-13 13:05:33 -04:00
Daniel Svensson
b73adf0dea Support the Pegasus Hoof controller.
Replacement controller for Filco Majestouch TKL keyboards.

matrix.c ported from:
https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard

More details:
http://bathroomepiphanies.com/controllers/
2016-10-13 12:50:54 +02:00
Erez Zukerman
0a9ad8f335 Merge pull request #818 from pvinis/pvinis-keymap
pvinis keymap
2016-10-13 06:41:51 -04:00
Erez Zukerman
16e362cfc4 Merge pull request #822 from jackhumbert/hotfix/simplify_to
[Jack & Erez] Simplifies and documents TO
2016-10-13 06:41:07 -04:00
Jack & Erez
e27a754b70 [Jack & Erez] Simplifies and documents TO 2016-10-12 22:18:27 -04:00
cbbrowne
99ca59baf8 I keep mis-using UPPER|LOWER/SLASH, and getting RESET.
With RESET shifted to the UPPER+LOWER layer, it is now time to change that key to Alt-Slash, which, in Emacs, does automatic word completion
2016-10-12 12:03:54 -04:00
cbbrowne
dbb8cbac18 Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-12 11:57:46 -04:00
Pavlos Vinieratos
0853227ede add readme 2016-10-11 11:25:54 +02:00
Pavlos Vinieratos
538cdda78e use wait_ms instead of _delay_ms 2016-10-11 10:34:47 +02:00
Pavlos Vinieratos
bcc0fa5c81 add messenger 2016-10-11 10:34:47 +02:00
Pavlos Vinieratos
2855de5f0f init keymap 2016-10-11 10:34:47 +02:00
Erez Zukerman
698d02122b Merge pull request #803 from coderkun/coderkun_neo2
Merge Unicode fixes for keymap “coderkun_neo2”
2016-10-10 19:59:28 -04:00
Erez Zukerman
be60c057dc Merge pull request #809 from nathanejohnson/osx_whiskey_tango_foxtrot_capslock
Adding whiskey_tango_foxtrot_capslock ergodox keymap
2016-10-10 19:58:59 -04:00
Chris Browne
92ca95641f Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-10-10 17:19:47 -04:00
Chris Browne
4b682ea63e Merge branch 'master' of github.com:cbbrowne/qmk_firmware 2016-10-10 17:18:15 -04:00
Jack Humbert
aa8aa6af75 Merge pull request #808 from npoirey/master
Altgr quick combination and updated readme
2016-10-10 00:22:12 -04:00
Jack Humbert
49fe93fbb3 Merge pull request #811 from Vifon/planck_keymap_vifon
New Planck keymap: vifon
2016-10-10 00:21:01 -04:00
Jack Humbert
0f119e09a5 Merge pull request #810 from Vifon/dynamic_macros
Reduce the default dynamic macro buffer
2016-10-10 00:20:46 -04:00
Jack Humbert
03b6fcdaf0 Merge pull request #814 from fredizzimo/rgb_tuning
Improve the RGB led effects
2016-10-10 00:20:24 -04:00
Jack Humbert
4859be084d Merge pull request #813 from fredizzimo/add_cluecard_rgb_effects
Add a Cluecard keymap for testing the RGB effects
2016-10-10 00:19:34 -04:00
Priyadi Iman Nurcahyo
932705706e Add example keymap 2016-10-10 01:35:41 +07:00
Nathan Johnson
e95c1e3f2c Adding whiskey_tango_foxtrot_capslock ergodox keymap 2016-10-09 12:58:31 -05:00
Priyadi Iman Nurcahyo
5b2e455d3b Unicode map framework. Allow unicode up to 0xFFFFF using separate
mapping table
2016-10-10 00:56:09 +07:00
Fred Sundvik
ffae9d84c5 CIE 1931 dim curve 2016-10-09 20:07:23 +03:00
Fred Sundvik
92a3a96849 Apply the dim curve to the RGB output
Just like it's supposed to be used. It now looks much better.
2016-10-09 20:04:33 +03:00
Fred Sundvik
db4dce7312 Update the Cluecard readme files 2016-10-09 19:37:47 +03:00
Fred Sundvik
02c9a99215 Tune snake and knight intervals for Cluecard 2016-10-09 19:27:11 +03:00
Fred Sundvik
9b0e21f87f Tunable RGB light intervals 2016-10-09 19:26:16 +03:00
Fred Sundvik
0ae07ae64d Tune the snake and knight effect parameters for Cluecard 2016-10-09 19:11:52 +03:00
Jonathan Arnett
f284bc6af9 Switched to momentary
Also updated the style of these lines slightly to match the style of the
default keymap
2016-10-09 11:40:08 -04:00
Wojciech Siewierski
26759e126e New Planck keymap: vifon 2016-10-09 13:34:17 +02:00
Wojciech Siewierski
70f32842e5 Reduce the default dynamic macro buffer
There have been reports of it leaving not enough free memory preventing
the keyboard from working properly.
2016-10-09 12:52:39 +02:00
Fred Sundvik
2d7b549e21 Add keymap with audio disabled but RGB effects enabled 2016-10-09 01:38:55 +03:00
Damien
811257a0c8 Merge pull request #8 from jackhumbert/master
Merge from jackhumbert
2016-10-07 22:27:36 +02:00
npoirey
628a48c788 Updated Readme to help windows users use docker for build 2016-10-07 17:21:38 +02:00
npoirey
1048a588c7 Add Altgr combination for non US layouts 2016-10-07 17:21:38 +02:00
IBNobody
973f526bb4 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-06 20:17:16 -05:00
Jack Humbert
a9df99b81c Merge pull request #807 from hot-leaf-juice/master
minor update to callum planck keymap
2016-10-06 19:44:53 -04:00
Jack Humbert
91d2b64850 Merge pull request #805 from SethSenpai/gamenum
Gamenum
2016-10-06 19:44:39 -04:00
Callum Oakley
387b94a6cf updated readme 2016-10-06 07:24:26 +01:00
Callum Oakley
059990e05a added lock screen button and fixed error in diagram 2016-10-06 07:23:12 +01:00
Jack Humbert
b8679bbe04 RGBW lights 2016-10-05 20:41:38 -04:00
SethSenpai
b7442999df updated the wrong makefile like a dummy 2016-10-04 07:58:28 +00:00
SethSenpai
aac3ba61a5 added rules.mk 2016-10-04 07:52:13 +00:00
IBNobody
8ed1208b42 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-10-03 18:46:10 -05:00
Erez Zukerman
d465e3f0c3 Merge pull request #804 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.8
2016-10-03 17:49:23 -04:00
dbroqua
0320fbf6f4 - Updated dbroqua layout for HHKB keyboard (added some missing fn keys) 2016-10-03 23:30:31 +02:00
SethSenpai
0e2786e396 updated readme with images 2016-10-03 18:27:52 +00:00
Gergely Nagy
aa9c6e9f59 ergodox: Update algernon's keymap to v1.8
ADORE
-----

* Major rearrangements were made, to reduce pinky use, and to balance
  out the hand usage.

Tools
-----

* The `hid-commands` tool will now display a notification when
  the **AppSel** layer is triggered.
* The `log-to-heatmap.py` tool now treats the innermost keys on the
  bottom row as thumb keys, as far as statistics are concerned.

Miscellaneous
-------------

* Fixed the **Steno** toggle key.
* My wife is now present on the keyboard too.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-10-03 19:20:00 +02:00
coderkun
8dd69a1b05 Overwrite method hex_to_unicode() for make it compatible with Neo 2016-10-03 16:36:21 +02:00
coderkun
4c9071964b Merge branch 'master' into coderkun_neo2 2016-10-03 16:35:40 +02:00
Jack Humbert
86065dca4d Merge pull request #799 from coderkun/master
Declare Unicode method hex_to_keycode() as “weak”
2016-10-03 10:27:06 -04:00
Jack Humbert
fc86ef6c95 Merge pull request #798 from Dbroqua/master
Updated dbroqua layout for HHKB keyboard
2016-10-03 10:26:39 -04:00
Jack Humbert
37d587d62b Merge pull request #797 from hot-leaf-juice/master
Made some simplifications leveraging the LALT(), LGUI(), and S() functions.
2016-10-03 10:26:21 -04:00
SethSenpai
0f06e94d5d update readme 2016-10-03 09:07:37 +00:00
SethSenpai
468e855207 moved folder, update readme 2016-10-03 08:59:50 +00:00
SethSenpai
c0c0c579ff added gamenum handwired keyboard 2016-10-03 08:53:09 +00:00
coderkun
a3f5a4cf58 Declare Unicode method hex_to_keycode() as “weak”
Declare Unicode method hex_to_keycode() as “weak” to be able to override it in keymaps.
2016-10-02 10:37:51 +02:00
coderkun
8655677584 Merge branch 'master' into coderkun_neo2 2016-10-02 10:04:29 +02:00
coderkun
a10e100bd5 Add double arrow Unicode characters to FMU layer 2016-10-02 09:55:38 +02:00
dbroqua
6a090c5df7 - Fixed key name in default layer definition 2016-10-01 19:04:11 +02:00
dbroqua
7cd210722d Merge remote-tracking branch 'origin/master' 2016-10-01 18:28:48 +02:00
dbroqua
8747c0786e - Updated dbroqua layout for HHKB keyboard 2016-10-01 18:28:33 +02:00
Callum Oakley
633da3bdb6 Made some simplifications leveraging the LALT(), LGUI(), and S() functions. 2016-10-01 13:03:46 +01:00
Damien
7abd3b4ddd Merge pull request #7 from jackhumbert/master
Merge from jackhumbert
2016-09-30 22:55:07 +02:00
Erez Zukerman
35e6870e5c Merge pull request #788 from chwilk/kastyle-refresh
Kastyle refresh
2016-09-30 08:59:59 -04:00
Erez Zukerman
fede822fce Merge pull request #789 from cmclen/master
Contributing new keymap to Ergodox
2016-09-30 08:59:24 -04:00
Jack Humbert
7c76d36454 Merge pull request #794 from AGausmann/midi-patch
Missing ifdef statement
2016-09-29 23:32:23 -04:00
Jack Humbert
d3fdc3a00f Merge pull request #792 from hot-leaf-juice/master
Big restructure, plus mouse and some convenience keys.
2016-09-29 23:31:59 -04:00
Damien
eb0f21a984 Merge pull request #6 from jackhumbert/master
Merge from jackhumbert
2016-09-29 22:59:31 +02:00
Adam Gausmann
8d99140d1b Missing ifdef statement 2016-09-29 14:46:10 -05:00
Callum Oakley
3c7d2e765a Merge branch 'master' of https://github.com/hot-leaf-juice/qmk_firmware 2016-09-29 07:49:45 +01:00
Callum Oakley
2f07ad8e8a added en-dash and gbp keys and updated readme 2016-09-29 07:49:27 +01:00
Callum Oakley
c762ea975a big restructure now I only have to consider macOS, also added mouse, more function keys, and some neat macros 2016-09-29 07:49:27 +01:00
Callum Oakley
fa2724360b removed windows layer and updated brightness keys for macOS Sierra 2016-09-29 07:49:27 +01:00
Callum Oakley
02635e5924 changed RALT to LALT on Windows 2016-09-29 07:49:27 +01:00
Callum Oakley
b2ecd296ae fixed comments 2016-09-29 07:49:27 +01:00
Callum Oakley
c593564aca Update readme.md 2016-09-29 07:49:27 +01:00
Callum Oakley
ff09695897 Update readme.md 2016-09-29 07:49:27 +01:00
Callum Oakley
6ad8a06c73 updated readme 2016-09-29 07:49:27 +01:00
Callum Oakley
b51f51c614 added close key for alt-f4 macro 2016-09-29 07:49:27 +01:00
Callum Oakley
41227856f4 added a toggle between Mac and Windows base layers (with swapped cmd and ctrl) 2016-09-29 07:49:27 +01:00
Callum Oakley
ce57b94908 added en-dash and gbp keys and updated readme 2016-09-29 07:47:30 +01:00
Jack Humbert
f0db230c46 Merge pull request #790 from IBNobody/master
Fix #770, Fix #779, Update Vision
2016-09-28 23:57:50 -04:00
IBNobody
78767bf208 Fix #770, Fix #779 2016-09-28 20:26:41 -05:00
IBNobody
72e643998f Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-28 20:21:19 -05:00
IBNobody
3d45860dc2 Updating Vision to beta layout. 2016-09-28 20:19:28 -05:00
Callum Oakley
8fa41f1ca1 big restructure now I only have to consider macOS, also added mouse, more function keys, and some neat macros 2016-09-28 23:15:35 +01:00
Chris McLennon
cce294df86 Remove config.h 2016-09-28 14:44:41 -05:00
Chris McLennon
65b0eff6d8 Contributing new keymap to Ergodox 2016-09-28 13:24:29 -05:00
Callum Oakley
ddb8eb842d removed windows layer and updated brightness keys for macOS Sierra 2016-09-28 08:04:38 +01:00
Callum Oakley
848bb6df43 changed RALT to LALT on Windows 2016-09-28 07:28:08 +01:00
Callum Oakley
d387534687 fixed comments 2016-09-28 07:28:08 +01:00
Callum Oakley
1c1aa729b1 Update readme.md 2016-09-28 07:28:08 +01:00
Callum Oakley
65f035933b Update readme.md 2016-09-28 07:28:08 +01:00
Callum Oakley
0c243d0d5d updated readme 2016-09-28 07:28:08 +01:00
Callum Oakley
f442348e50 added close key for alt-f4 macro 2016-09-28 07:28:08 +01:00
Callum Oakley
7bca9bc402 added a toggle between Mac and Windows base layers (with swapped cmd and ctrl) 2016-09-28 07:28:08 +01:00
chwilk
32cc2f6bd9 Added description of kastyle keymap 2016-09-27 11:27:09 -05:00
chwilk
e1bfe13090 Moved hand_swap_config array so all keyboards get it defined 2016-09-26 15:49:10 -05:00
chwilk
90fd0810db Updated kastyle keymap, including swap hands feature 2016-09-26 01:05:06 -05:00
chwilk
04c0a1c3e2 Added ONEHAND_ENABLE to allow SWAP HANDS actions 2016-09-26 01:04:33 -05:00
Jack Humbert
812219e8a0 Merge pull request #786 from mannkind/patch-1
Fix lets_split.c so that audio can be disabled
2016-09-25 22:43:38 -04:00
Dustin
c40ad11615 Fix lets_split.c so that audio can be disabled
Matching the use of `#ifdef AUDIO_ENABLE` used in `matrix_init_kb()` in order to compile firmware for the Let's Split keyboard without audio enabled.
2016-09-25 19:04:20 -07:00
IBNobody
24a953ae64 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-25 16:36:30 -05:00
Jack Humbert
f24b3f4589 Merge pull request #785 from jcowgar/master
Added Jeremy’s Atreus Layout
2016-09-25 16:45:08 -04:00
Jack Humbert
a64840613f Merge pull request #784 from Dbroqua/master
Added dbroqua layout for HHKB keyboard
2016-09-25 16:44:50 -04:00
Jack Humbert
628c5bcc62 Merge pull request #781 from cbbrowne/master
Recent enhancements to keyboard map
2016-09-25 16:43:55 -04:00
Jeremy Cowgar
77099c777a Added Jeremy’s Atreus Layout 2016-09-25 12:27:29 -04:00
dbroqua
f0441f08b8 - Added dbroqua layout for HHKB keyboard 2016-09-25 16:32:06 +02:00
Damien
b75cb53c4a Merge pull request #5 from jackhumbert/master
Merge from jackhumbert
2016-09-25 14:03:27 +02:00
Erez Zukerman
6725262516 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-09-23 20:57:41 -04:00
Erez Zukerman
1a96b2cdc8 Disables sleep LED by default 2016-09-23 20:57:36 -04:00
cbbrowne
3f020c0b92 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-23 17:51:32 -04:00
Jack Humbert
e1fa9073c2 Merge pull request #778 from TerryMathews/master
Establish support for TADA68
2016-09-23 15:27:20 -04:00
Jack Humbert
3d42d60b7f Merge pull request #776 from DidierLoiseau/issue-772
Fix issue #772 Meh and Hyper not working
2016-09-23 15:26:28 -04:00
TerryMathews
e71d4f3235 Disable RGB led support until a suitable pin is located 2016-09-23 14:20:05 -04:00
cbbrowne
888bd89ba7 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-23 12:05:25 -04:00
TerryMathews
fad5487266 Initial support for TADA68 2016-09-22 23:33:22 -04:00
Erez Zukerman
ce6a9a6c38 Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-09-22 22:05:18 -04:00
Erez Zukerman
6e5142ca3e Adds EPRM reset key 2016-09-22 22:05:12 -04:00
Erez Zukerman
545f0ca00e Merge pull request #760 from algernon/ergodox-ez/algernon
Update the ergodox/algernon keymap to v1.7
2016-09-22 21:38:59 -04:00
Didier Loiseau
d430999047 Fix issue #772 Meh and Hyper not working 2016-09-23 01:20:49 +02:00
cbbrowne
7a183b4e8b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-22 16:32:29 -04:00
Jack Humbert
0f205a854f Merge pull request #771 from UnderSampled/master
Impossible Layout
2016-09-21 15:56:00 -04:00
Jack Humbert
bd57faa7bf Merge pull request #769 from pvinis/fix/tap-dance-each-tap-restore
[tap dance] restore each_tap functionality
2016-09-21 15:55:18 -04:00
Jack Humbert
3dc1f39d40 Merge pull request #768 from Dbroqua/master
Updated backlight levels for KC60
2016-09-21 15:53:27 -04:00
Jack Humbert
c1414e59c2 Merge pull request #767 from IBNobody/lets_split_reduce_hex_size
Lets split reduce hex size
2016-09-21 15:53:11 -04:00
UnderSampled
9e6a493172 Fixed Impossible Layout readme tables (again) 2016-09-21 18:55:14 +00:00
cbbrowne
3b57a35532 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-21 12:19:23 -04:00
Stephen Christie
073a1f21bb Corrected Impossible Layout readme tables 2016-09-21 14:45:05 +00:00
Stephen Christie
9d629719cb Filled Impossible Layout documentation 2016-09-21 14:41:37 +00:00
Pavlos Vinieratos
cda4b534fa add user_data field 2016-09-21 11:29:43 +02:00
Pavlos Vinieratos
0edc82f030 formatting 2016-09-21 11:29:34 +02:00
Pavlos Vinieratos
e1f131db8e restore each_tap callback 2016-09-21 10:23:51 +02:00
dbroqua
7a91cce869 - Updated backlight levels for KC60 2016-09-21 08:02:51 +02:00
IBNobody
b30e6c1c9e Created I2C and Serial keymaps for unit testing
Having a dedicated I2C keymap and a dedicated serial keymap will allow
the testing suite to check both conditions.
2016-09-20 21:46:33 -05:00
IBNobody
6631abc1cb Made Serial and I2C not include the Other
This saves 192 bytes
2016-09-20 21:38:59 -05:00
IBNobody
f956802f29 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-20 20:31:09 -05:00
Jack Humbert
d1d54dedac Merge pull request #765 from jakllsch/more-shifted-dvorak-keycodes
Add more shifted Dvorak key code definitions
2016-09-20 21:02:07 -04:00
Jack Humbert
4d493cd05c Merge pull request #763 from Dbroqua/master
Updated dbroqua layout for KC60
2016-09-20 21:00:47 -04:00
Stephen Christie
86e85438d3 Fixed Qwerty Fn layer to match documented design 2016-09-20 15:45:50 -04:00
IBNobody
3b1df7fb00 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-19 21:00:20 -05:00
Stephen Christie
57a6828a7a Merge branch 'master' of http://github.com/jackhumbert/qmk_firmware 2016-09-19 18:05:58 -04:00
Jonathan A. Kollasch
f0021c9cb9 Add more shifted Dvorak key code definitions 2016-09-19 14:25:44 -05:00
cbbrowne
2c3fcc6c08 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-19 11:13:53 -04:00
dbroqua
9a2e24fa98 - Removed HHKB like layout 2016-09-19 13:36:36 +02:00
dbroqua
21b6e4c1f3 Merge remote-tracking branch 'origin/master' 2016-09-19 13:26:18 +02:00
Damien
c438a2a265 Merge pull request #4 from jackhumbert/master
Merge from jackhumbert
2016-09-19 13:25:37 +02:00
dbroqua
94af0194dd - Updated dbroqua layout for kc60 2016-09-19 13:22:34 +02:00
Jack Humbert
5f9c2f63ff Merge pull request #761 from runcom/fix-yum-installs
util/install_dependecies.sh: fix yum packages
2016-09-19 01:22:38 -04:00
Jack Humbert
c678676e41 Merge pull request #755 from IBNobody/master
Fix USER PRINT/NO PRINT warning w/ Bootmagic
2016-09-19 01:21:25 -04:00
Jack Humbert
6282fc8dc1 Merge pull request #751 from erlandsona/master
My Atreus Layout
2016-09-19 01:20:04 -04:00
Antonio Murdaca
edc7441800 util/install_dependecies.sh: fix yum packages
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
2016-09-18 12:42:58 +02:00
Gergely Nagy
3e128552d9 Update the ergodox/algernon keymap to v1.7
Overall changes
===============

* The number row has been completely rearranged on both the **Base** and
  the **ADORE** layers.
* The number/function key behavior was changed: function keys are now on
  the **Media**.
* The `:`/`;` and `-`/`_` keys were put back to their thumb position on
  the bottom row, on both the **Base** and **ADORE** layers.
* The bottom large keys on the inner side of each half now function as
  [tmux](http://tmux.github.io/) keys: the left to send the prefix, the
  right to send the `display-panes` key. The left also doubles as a GNU
  screen prefix key, and sends `C-a` when double tapped.
* A number of functions, such as the **AppSel** layer, now require the
  `hid-commands` tool to be running, with the output of `hid_listen`
  being piped to it.

ADORE
=====

* `Y` and `X` have been swapped again.

Media/Navigation layer
======================

* The function keys are now on this layer.
* Mouse keys have been removed.
* Media start/stop/prev/next have been removed.
* `Print screen` has been removed.
* There is only one screen lock key now.

Heatmap
=======

* Fixed a few issues in the finger-stats calculation.
* The tool now also timestamps and saves all input lines to a logfile,
  which it loads on start, allowing one to continue the collection after
  upgrading the tool.
* The heatmap tool will now colorize the stats by default.
* The periodic stats are now printed in a more compact format.

Tools
=====

* Added a new tool, `tools/layer-notify` that listens to layer change
  events on the HID console, and pops up a notification on layer
  changes.
* Another new tool, `tools/text-to-log.py` has been added that converts
  arbitrary text to a keylogger output, which can be fed to the heatmap
  generator.
* A number of features have been moved to the `tools/hid-commands`
  utility. These generally are OS dependent, and are easier to implement
  on the software side.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-09-18 11:48:47 +02:00
dbroqua
602b058b9e - Added capslock led for KC60 keyboard (based on gitbug.com/jpec/kc60 works) 2016-09-17 19:40:56 +02:00
cbbrowne
cc7604d116 Add breathing, as initial implementation with the RAISE/LOWER keys. And throw in extra macros to shorten keymaps 2016-09-16 17:15:33 -04:00
IBNobody
bbf06d516a Added notes on vagrant file fixes, UPRINT 2016-09-15 21:44:03 -05:00
IBNobody
39cbf1c221 Fixed Batch Syntax on different versions of Windows 2016-09-15 19:49:29 -05:00
Austin Erlandson
ac6125cbea Revert because the IGNORE_MOD_TAP_INTERRUPT flag didn't feel right. 2016-09-15 11:19:54 -05:00
Austin Erlandson
e50f15e360 Add IGNORE_MOD_TAP_INTERRUPT to fix overloaded mod keys sending mod on diads... 2016-09-15 10:58:28 -05:00
cbbrowne
24e8d01dc9 Move ALT... 2016-09-15 11:28:12 -04:00
cbbrowne
0db06def9b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-15 11:27:37 -04:00
IBNobody
4f5f5f0103 Fixed Win_Check Verbose mode. 2016-09-15 07:59:14 -05:00
IBNobody
edb5e72605 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-15 07:52:10 -05:00
IBNobody
0d3ce58b6b Renamed to Win_Check, Removed SET for privacy. 2016-09-14 22:53:23 -05:00
Erez Zukerman
a258358b6c Merge pull request #758 from absenth/development
Absenth Ergodox Keymap Improvements
2016-09-14 22:51:41 -04:00
IBNobody
bcc4213edc Marked the Win_Check_Output.txt file as ignored 2016-09-14 21:39:19 -05:00
IBNobody
b4622eb894 Fixed a last minute format bug. 2016-09-14 21:34:28 -05:00
IBNobody
e72f8dfd7e Adding WinCheck Script for windows install help 2016-09-14 20:22:18 -05:00
Lars R. Noldan
8a01bbc422 Adding Space Cadet, And Correcting Ascii Keymap 2016-09-14 11:54:13 -05:00
Austin Erlandson
c8e7cca6ed Copy config overrides to my keymap directory... 2016-09-14 09:39:57 -05:00
IBNobody
9c574b493c Changed Docs, Moved RetroRefit to Handwired 2016-09-13 22:05:10 -05:00
cbbrowne
5d643bb7ee Got Right SHIFT + Right CTRL 2016-09-13 16:29:01 -04:00
cbbrowne
5be2795ca1 C macros for my favorite complex keystrokes 2016-09-13 16:17:51 -04:00
cbbrowne
fdeaf1d9f8 Give layers longer names 2016-09-13 15:49:46 -04:00
cbbrowne
344929e067 Give layers longer names 2016-09-13 15:48:50 -04:00
Austin Erlandson
3668b29520 Shorten TAPPING_TERM for better responsiveness of overloaded keys... 2016-09-13 11:20:59 -05:00
Austin Erlandson
6098704145 Small update 2016-09-13 10:35:59 -05:00
IBNobody
cb1ac2a3ed Fixed NO_PRINT / USER_PRINT conflict warning. 2016-09-12 20:20:31 -05:00
IBNobody
e9a093451e Clean up atomic keymap (#9)
* Added keyboard help macros

* Fixing Atomic PVC keymap / adding print help
2016-09-12 19:54:52 -05:00
IBNobody
658db40df9 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-12 18:56:16 -05:00
Austin Erlandson
cf17eb0f43 Get rid of sleep button... 2016-09-12 18:36:41 -05:00
Austin Erlandson
0c3aede09e Latest making use of overloaded modifiers... 2016-09-12 18:23:24 -05:00
Austin Erlandson
af4c25c475 My Atreus Layout 2016-09-12 15:20:51 -05:00
cbbrowne
103ba24df2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-12 13:24:31 -04:00
cbbrowne
6a7ef59629 Ongoing experiment; have a special layer for RESET 2016-09-12 13:24:22 -04:00
Erez Zukerman
23faf9ec81 Merge pull request #734 from adiabatic/master
Ergodox EZ: Zweihander keyboard layout updates
2016-09-11 20:28:09 -04:00
Erez Zukerman
862d93e0cb Merge pull request #740 from absenth/development
Absenth's Layout- QWERTY with additional Media Layer Functions.
2016-09-11 20:27:12 -04:00
Erez Zukerman
fe4b379287 Merge pull request #746 from DidierLoiseau/bépo
Bépo with firmware remapping for software CSA layout
2016-09-11 20:26:23 -04:00
Jack Humbert
05b4949fd2 Merge pull request #744 from AlliedEnvy/master
Use rules.mk template in new project generator
2016-09-11 19:25:16 -04:00
Jack Humbert
ffa12f9235 Merge pull request #743 from shelaf/patch-2
Fix compiler warnings for HHKB
2016-09-11 19:24:59 -04:00
Jack Humbert
b06b8f5c18 Merge pull request #742 from dbordak/master
Update Atreus default map
2016-09-11 19:24:34 -04:00
Jack Humbert
5b4f56d6e5 Merge pull request #741 from shelaf/patch-1
fix number of NKRO keys
2016-09-11 19:24:12 -04:00
Didier Loiseau
21747cc310 Added readme.md for bepo_csa 2016-09-11 22:30:05 +02:00
IBNobody
498eddedc5 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-10 21:51:21 -05:00
Didier Loiseau
1aeb59335f Fixed compilation issues after the merge 2016-09-11 02:19:55 +02:00
Didier Loiseau
b9014c7575 Merge remote-tracking branch 'remotes/jackhumbert/master' into bépo 2016-09-11 01:26:47 +02:00
Didier Loiseau
60a826923d Added KC_APP on fn+BP_AGRV 2016-09-11 01:16:36 +02:00
Daniel K. Levy
11bcdbc1f5 Use rules.mk template in new project generator 2016-09-10 16:37:08 -05:00
shela
2a8536f00f Variables in Makefile are ignored in rules.mk 2016-09-11 02:46:06 +09:00
Daniel Bordak
475d0b23f6 Add PCBDOWN 2016-09-10 13:35:53 -04:00
Daniel Bordak
054108d1d1 Update to new default keymap 2016-09-10 13:35:53 -04:00
shela
70b4fc808d fix variable value of rules.mk 2016-09-11 02:29:32 +09:00
Daniel Bordak
a9e56186e0 Fix typo 2016-09-10 12:16:38 -04:00
shela
e25ae23287 fix number of NKRO keys
32byte report = 1byte modifiers + 31byte keys
31byte * 8bit * 1key/bit = 248keys
2016-09-10 23:47:33 +09:00
Didier Chagniot
83b6dd0cd6 readme.md updated 2016-09-10 00:20:21 +02:00
Didier Chagniot
67dfde765f typing with it 2016-09-09 21:42:35 +02:00
Jack Humbert
5010df3d8b Merge pull request #715 from profet23/master
Support for Ergodoxes with 80 keys.
2016-09-09 10:50:39 -04:00
Lars
52121cee7a Updated Image Header 2016-09-08 23:32:11 -05:00
Lars
9c2015ea7f first commit of Absenth's Ergodox Firmware 2016-09-08 23:20:17 -05:00
profet23
b83f76e1b0 Changing keymap name to "profet_80" 2016-09-08 23:34:55 -04:00
Jack Humbert
7c1b5c85b9 Merge pull request #739 from pondrejk/master
util/install_dependencies.sh made executable, fixes #738
2016-09-08 17:50:36 -04:00
Jack Humbert
55a3fb2411 Merge pull request #737 from pondrejk/patch-1
fixed typo in Linux install instructions
2016-09-08 17:50:24 -04:00
Jack Humbert
4caddd1c5b Merge pull request #736 from tong92/master
add tong92 keymap
2016-09-08 17:50:11 -04:00
Jack Humbert
02ff748132 Merge pull request #735 from romanzolotarev/patch-1
Fix typo
2016-09-08 17:49:51 -04:00
Jack Humbert
94ef7f99b8 Merge pull request #733 from cbbrowne/master
Various recent enhancements to my keyboard map
2016-09-08 17:49:35 -04:00
Jack Humbert
4a54ece468 Merge pull request #730 from IBNobody/master
Change NKRO Report Size = 32, User Print
2016-09-08 17:48:54 -04:00
Peter Ondrejka
01163b268a util/install_dependencies.sh made executable, fixes #738 2016-09-08 19:39:27 +02:00
Peter Ondrejka
08c177f00b fixed typo in Linux install instructions 2016-09-08 19:22:26 +02:00
tong92
98e43f995d add tong92 keymap 2016-09-08 23:37:13 +09:00
Roman Zolotarev
740b4bbe46 Fix typo 2016-09-08 21:12:34 +08:00
IBNobody
fe2aed0d1c Added User Print - A "light" console out option (#8)
User print disables the normal print messages in the body of QMK/TMK
code and is meant as a lightweight alternative to NOPRINT. Use it when
you only want to do a spot of debugging but lack flash resources for
allowing all of the codebase to print (and store their wasteful
strings).
2016-09-07 23:50:58 -05:00
Nathan Sharfi
273a6cc688 - Make thumb-accessible ⌥ and ⌃ into right-⌥ and right-⌃
- remove media-space and media-shift-space; put a play/pause key at media-m instead
- add print screen, scroll lock, and pause/break to the media layer

And in the readme:

- don't say we don't have any Windows-specific keys
- add mnemonics for thumb-alt and thumb-ctrl positioning
2016-09-07 20:28:31 -07:00
Nathan Sharfi
e5396ca9e5 zweihander: rename to Makefile 2016-09-07 18:23:01 -07:00
cbbrowne
54214b3abc Borrowed joint Shift/Enter idea from sgoodwin mapping 2016-09-07 13:29:29 -04:00
cbbrowne
73fdd8a769 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-09-07 13:09:14 -04:00
IBNobody
558f3ec1eb Use keyboard config for nkro (#7)
* removing nkro references - wip

* changed NKRO to be defined by keymap_config
2016-09-06 23:19:01 -05:00
Daniel
b807867f95 moves brackets from J/K to U/I to remove block of common vim sequence. 2016-09-06 21:56:27 -06:00
profet23
1406118c71 Removing separate ergodox80 project.
Created KEYMAP_80 in ez.h to support 80 key ergodoxes.
Creating default_80 keymap as ez keymap.
2016-09-06 21:59:47 -04:00
Erez Zukerman
0f111182a6 Merge pull request #732 from romanzolotarev/master
Change CTL_T(KC_ESC) to KC_LCTRL and update readme
2016-09-06 21:35:15 -04:00
Erez Zukerman
74d72c724b Merge pull request #729 from joarau/master
norwegian programmer-friendly layout
2016-09-06 21:33:55 -04:00
Roman Zolotarev
da16733e7a Change CTL_T(KC_ESC) to KC_LCTRL and update readme 2016-09-07 08:03:19 +08:00
IBNobody
f0388a5b13 Merge pull request #6 from IBNobody/fix_magic_key_binding_NKRO
Set keyboard_nkro (used by TMK) w/ MAGIC_HOST_NKRO
2016-09-06 18:07:48 -05:00
IBNobody
e571d4656c Set keyboard_nkro (used by TMK) w/ MAGIC_HOST_NKRO
If NKRO is enabled, also set keyboard_nkro with MAGIC_HOST_NKRO and
MAGIC_UNHOST_NKRO.
2016-09-06 18:02:43 -05:00
IBNobody
91e0f62417 Merge pull request #5 from IBNobody/make_nkro_report_32_bytes
Change NKRO size fron 16 bytes to 32 bytes.
2016-09-06 15:00:51 -05:00
IBNobody
16e706214f Change NKRO size fron 16 bytes to 32 bytes. 2016-09-06 14:59:12 -05:00
IBNobody
ff53e16767 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-06 14:57:12 -05:00
joar
a3e7042084 norwegian programmer-friendly layout 2016-09-06 16:00:08 +02:00
Erez Zukerman
8b0769fe5a Merge pull request #728 from fitzsim/yoruian
Add new ErgoDox EZ keymap, YORUIAN
2016-09-06 07:07:25 -04:00
Thomas Fitzsimmons
ce53c0643d Fix ergodox_yoruian XKB naming 2016-09-06 00:09:14 -04:00
Thomas Fitzsimmons
e9ce4960c1 Add new ErgoDox EZ keymap, YORUIAN 2016-09-05 20:53:35 -04:00
Erez Zukerman
5bb29136b1 Merge pull request #686 from coderkun/coderkun_neo2
Merge Ergodox keymap “coderkun_neo2”
2016-09-05 20:33:09 -04:00
Erez Zukerman
45d68486a2 Merge pull request #678 from algernon/ergodox-ez/algernon
ergodox: Update algernon's keymap to v1.6
2016-09-05 20:32:46 -04:00
Jack Humbert
0468093b12 Merge pull request #724 from sgoodwin/master
Add my keymap.
2016-09-05 13:21:24 -04:00
Jack Humbert
751832192c Merge pull request #722 from fredizzimo/fix_always_linking
Fix the ldflags.txt and obj.txt checks
2016-09-05 13:20:59 -04:00
Jack Humbert
4769b85130 Merge pull request #719 from IBNobody/master
Updated docs to show more info on backlight breathing.
2016-09-05 13:20:48 -04:00
Jack Humbert
fcc2d43943 Merge pull request #716 from MajorKoos/master
Add support for JD40 MKII PCB
2016-09-05 13:19:58 -04:00
Jack Humbert
f1b6729921 Merge pull request #711 from hot-leaf-juice/master
Updated callum's keymap
2016-09-05 13:17:14 -04:00
Jack Humbert
0301d2fdc2 Merge pull request #710 from algernon/h/tap-dance/keyup-seq-start-fix
tap-dance: Do not start a sequence on keyup
2016-09-05 13:16:58 -04:00
Samuel Ryan Goodwin
bf5941b335 Add my keymap. 2016-09-05 15:53:52 +02:00
Fred Sundvik
13f3c73386 Fix the ldflags.txt and obj.txt checks
There was a minor typo, which caused the files to not be generated
and therefore the elf files were always linked.
2016-09-04 23:26:49 +03:00
IBNobody
f16fece283 Merge pull request #4 from IBNobody/update_atomic_planck_pvc_keymaps
Added diagonal mice macros, breathing ala Atomic
2016-09-04 01:08:36 -05:00
IBNobody
f6cb08a5bd Added diagonal mice macros, breathing ala Atomic 2016-09-04 01:07:36 -05:00
IBNobody
d55a705bbb Moved breathing backlighting section in readme.md 2016-09-03 23:21:24 -05:00
IBNobody
f065652812 Updated doc to contain breathing information. 2016-09-03 20:33:34 -05:00
IBNobody
7fd5b6581a Updated readme to have better backlight breathing info. 2016-09-03 20:29:29 -05:00
IBNobody
c20540984e Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-09-03 11:52:55 -05:00
Major Koos
11224a00fe Add rules.mk file 2016-09-02 16:42:40 -07:00
Major Koos
295ef0d964 Add support for JD40 MKII PCB
RGB Included.
2016-09-02 16:14:40 -07:00
profet23
36e16b46e3 Removing/editing non applicable readme 2016-09-02 17:18:39 -04:00
Daniel
250f096144 adds tap dance and macro to move underscore and l- and r- brackets to base layer. 2016-09-02 14:35:15 -06:00
profet23
a485e13afe Adding 80 Key Ergodox Support 2016-09-02 16:24:05 -04:00
Callum Oakley
e4167c8c53 fixed incorrect key combination for locking screen on macOS 2016-09-02 09:03:39 +01:00
Daniel
0c598f53c1 adds Hyper key. improves media layer. first attempt at tap dance. 2016-09-01 23:37:52 -06:00
Callum Oakley
4c67ccc81e changed some of the wording in the readme 2016-09-01 18:30:49 +01:00
Callum Oakley
8b2a235c8d changed order of modifiers after experimentation, updated readme 2016-09-01 18:14:39 +01:00
Callum Oakley
9c3193f225 Merge remote-tracking branch 'upstream/master' 2016-09-01 17:55:00 +01:00
Joshua T
5520b0022f Merge remote-tracking branch 'upstream/master' 2016-09-01 07:40:46 -05:00
Gergely Nagy
acda2b793f tap-dance: Do not start a sequence on keyup
There was an odd case, which confused the hell out of tap-dance: suppose
you had a number of tap-dance keys, on a layer, and as part of the
tap-dance, you turned that layer off - or had it on one-shot to begin
with. In this case, the keydown event would trigger the tap-dance key,
but the keyup would not. This had two funky consequences:

- tap-dance did not correctly register that the dance has ended.
- pressing any other tap-dance key would interrupt the previous
  tap-dance, and potentially input unwanted characters.

To fix this, we simply do not start a tap-dance sequence on keyup, only
when it is pressed. This way the previous sequence has enough time to
time-out and finish properly, and we don't get confused.

This fixes algernon/ergodox-layout#107.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-09-01 08:32:47 +02:00
Daniel
dbac9f4954 Merge remote-tracking branch 'upstream/master' 2016-08-31 22:15:47 -06:00
Jack Humbert
e28d151a8a Merge pull request #707 from algernon/f/unicode/get-mode
process_unicode: Add get_unicode_input_mode()
2016-08-31 11:28:52 -04:00
Gergely Nagy
c9ea236fc3 process_unicode: Add get_unicode_input_mode()
There may be cases where one would like to know the current Unicode
input mode, without having to keep track of it themselves. Add a
function that does just this.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-31 08:21:52 +02:00
Jack Humbert
27f9671a3e Merge pull request #705 from VoodaGod/bone2planck
Bone2planck update
2016-08-30 23:07:24 -04:00
Jason Janse van Rensburg
fc2ca62a3b Merge branch 'master'
Conflicts:
	keyboards/planck/keymaps/bone2planck/keymap.c
2016-08-30 14:54:00 +02:00
Jack Humbert
8e00c464e6 Merge pull request #703 from jhenahan/feature/jhenahan-keymap
jhenahan Planck layout
2016-08-29 20:16:20 -04:00
Jack Humbert
3301e2219f Merge pull request #700 from algernon/h/ucis/enable-fix
build_keyboard.mk: Restore UCIS_ENABLE support
2016-08-29 20:15:46 -04:00
Damien
af24ea558a Merge pull request #3 from jackhumbert/master
Merge from jackhumbert
2016-08-29 22:33:50 +02:00
cbbrowne
fba509780e Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-29 12:32:03 -04:00
Jack Henahan
6d7637ae3e Update README 2016-08-29 11:43:06 -04:00
Jack Henahan
42f1ce08dc jhenahan layout 2016-08-29 11:35:07 -04:00
Gergely Nagy
2f0395ce72 build_keyboard.mk: Restore UCIS_ENABLE support
During the build system refactor, support for enabling UCIS seems to
have been lost. This little patch adds that back, so that keymaps using
UCIS can be compiled again.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-29 11:30:38 +02:00
IBNobody
6da0eb2b2b Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-08-28 18:50:06 -05:00
Jack Humbert
6d1e916851 Merge pull request #697 from fredizzimo/fix_gh_token_problem
Fix the .travis.yml so that GH_TOKEN works properly
2016-08-27 19:00:21 -04:00
Jack Humbert
25502277e8 Merge pull request #696 from fredizzimo/community_boards
Update list of community keyboards
2016-08-27 18:56:42 -04:00
Fred Sundvik
83eb9e4eed Fix the .travis.yml so that GH_TOKEN works properly 2016-08-28 01:10:14 +03:00
Fred Sundvik
3bdebd2270 Update list of community keyboards 2016-08-28 00:54:26 +03:00
Jack Humbert
326de65439 Merge pull request #689 from jeebak/tv44-jeebak
Port jeebak's Planck/JD45 keymap to TV44
2016-08-27 17:30:39 -04:00
Jack Humbert
2ac90ed704 Merge pull request #684 from tomb0y/kc60_workman_dead
Correct typo in kc60 workman-dead keymap
2016-08-27 17:30:05 -04:00
Jack Humbert
bade8be66c Merge pull request #695 from fredizzimo/dfu-util_instructions
Add dfu-util to the instructions
2016-08-27 17:29:35 -04:00
Jack Humbert
98bedbeb75 Merge pull request #693 from fredizzimo/infinity60
Rename infinity_chibios to infinity60, and add readme
2016-08-27 17:29:12 -04:00
Jack Humbert
a1b289c99a Merge pull request #694 from fredizzimo/keyboard_template
Fix the keyboard template with new make syntax
2016-08-27 17:07:49 -04:00
Jack Humbert
4fd5ac8326 Merge pull request #690 from fredizzimo/unit_test
Add Unit Testing support
2016-08-27 17:06:45 -04:00
Fred Sundvik
8ab9c5c55a Rename infinity_chibios to infinity60, and add readme 2016-08-27 23:55:33 +03:00
Fred Sundvik
53302328d0 Add dfu-util to the instructions 2016-08-27 23:43:49 +03:00
Fred Sundvik
1f5838a286 Fix the keyboard template with new make syntax
Also add proper link to the parent
2016-08-27 23:31:15 +03:00
Fred Sundvik
922c4ea3bc Add unit test documentation 2016-08-27 21:57:49 +03:00
Fred Sundvik
ca51457327 Another attempt to make keyboards and tests in parallel 2016-08-27 21:57:49 +03:00
Fred Sundvik
fd93a9bb29 Make tests and keyboards in two different jobs 2016-08-27 21:57:49 +03:00
Fred Sundvik
03b1d142f2 Add -p parameter to mkdir
So that it's created even when there's a deeper structure
2016-08-27 21:57:49 +03:00
Fred Sundvik
6b92b62802 Travis builds the default all target 2016-08-27 21:57:49 +03:00
Fred Sundvik
6410f0c021 The all target makes all keyboards and all tests 2016-08-27 21:57:49 +03:00
Fred Sundvik
1b963117fe Support for running and cleaning all tests 2016-08-27 21:57:49 +03:00
Fred Sundvik
42baa6cf43 Disable map file creation when building tests
It causes strange linker warnings on cygwin.
2016-08-27 21:57:49 +03:00
Fred Sundvik
7eefb34e7c Detect failures when running multiple tests
Also add better output.
2016-08-27 21:57:49 +03:00
Fred Sundvik
ffb0a126f5 Convert tirple_buffered_object_tests to GTest 2016-08-27 21:57:49 +03:00
Fred Sundvik
bcdf9ab76b Convert transport_tests to GTest 2016-08-27 21:57:49 +03:00
Fred Sundvik
b3eba797af Convert frame_validator_tests to GTest 2016-08-27 21:57:49 +03:00
Fred Sundvik
cdd0913bcc Convert frame_router_tests to GTest 2016-08-27 21:57:49 +03:00
Fred Sundvik
c692fd1d55 More common settings for unit tests and keyboards 2016-08-27 21:57:49 +03:00
Fred Sundvik
fc855cb30e Fix running multiple tests 2016-08-27 21:57:49 +03:00
Fred Sundvik
f4429ba48c Running of unit tests
But only if the compilation has succeeded
2016-08-27 21:57:49 +03:00
Fred Sundvik
0a11460175 Build actual tests, convert byte_stuffer_tests 2016-08-27 21:57:49 +03:00
Fred Sundvik
8a9aac6e32 Rules for compiling and linking google test 2016-08-27 21:57:49 +03:00
Fred Sundvik
27a673f5cf The makefile actually calls build_test 2016-08-27 21:57:49 +03:00
Fred Sundvik
6d7cd639a5 Basic framework for parsing test targets 2016-08-27 21:57:49 +03:00
Fred Sundvik
cfddec17d5 Add Google Test submodule 2016-08-27 21:57:49 +03:00
Jack Humbert
f815b4871e Merge pull request #691 from fredizzimo/fix_line_endings
Fix line endings
2016-08-27 14:54:55 -04:00
Fred Sundvik
cff26bc484 Merge branch 'master' into fix_line_endings 2016-08-27 21:01:46 +03:00
Jack Humbert
36b6a96596 Merge pull request #666 from fredizzimo/makefile_overhaul
Makefile overhaul
2016-08-27 13:49:42 -04:00
Fred Sundvik
265df7d5da Fix travis_compiled_push 2016-08-27 20:18:26 +03:00
Fred Sundvik
a5b1af4999 Normalize line endings 2016-08-27 18:40:50 +03:00
Fred Sundvik
de58ec9738 Set eep files to binary mode 2016-08-27 18:37:28 +03:00
JeeBak Kim
5fe883e74b [tv44] Port jeebak's planck keymap to tv44 2016-08-26 22:18:40 -07:00
JeeBak Kim
ff0e0ee459 [tv44] Add "jeebak" keymap folder as a copy of the "default" folder 2016-08-26 14:48:03 -07:00
Fred Sundvik
d1e4f2eb08 Merge remote-tracking branch 'upstream/master' into makefile_overhaul 2016-08-26 21:57:17 +03:00
cbbrowne
a732003bfd Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-26 12:13:50 -04:00
Erez Zukerman
2c8f6557e6 Merge pull request #664 from linsomniac/infinity_readme
Adding nicer Infinity build instructions.
2016-08-26 07:32:24 -04:00
Erez Zukerman
17511870bc Merge pull request #685 from fredizzimo/windows10_instructions_typo
Fix minor typo in the readme
2016-08-26 07:29:12 -04:00
coderkun
137eb118e3 Add box-drawing Unicode characters to keymap “coderkun_neo2” 2016-08-26 13:27:56 +02:00
coderkun
c78b44fb18 Set Unicode input mode and override unicode_input_start() method to keymap “coderkun_neo2” 2016-08-26 13:27:56 +02:00
coderkun
5b58d7d145 Disable debugging for Ergodox keymap “coderkun_neo2” 2016-08-26 13:27:56 +02:00
zs
3f0e1b3a8e Correct typo in kc60 workman-dead keymap
and rename README.md to readme.md
2016-08-26 10:42:36 +02:00
Damien
8e058135e2 Merge pull request #2 from jackhumbert/master
Merge from jackhumbert
2016-08-26 07:55:30 +02:00
Fred Sundvik
6cfdd077b5 Fix bad merge
Led should have been added to KC60, not GH60
2016-08-26 00:05:58 +03:00
Fred Sundvik
86ece64176 Fix minor typo in the readme 2016-08-25 23:54:05 +03:00
Fred Sundvik
3300203157 Remove google test submodule
It had been added for some strange reason, allthough it's supposed
to be there only in another branch.
2016-08-25 23:37:18 +03:00
Fred Sundvik
fb8365a378 Split vision_division into Makefile/rules.mk 2016-08-25 23:28:10 +03:00
Fred Sundvik
523dff3005 Merge branch 'master' into makefile_overhaul 2016-08-25 23:26:02 +03:00
Jack Humbert
4321f0af7d Merge pull request #659 from Dbroqua/master
- Updated dbroqua layout for planck keyboard
2016-08-25 15:49:50 -04:00
dbroqua
8d0aed39d1 - Added capslock led for KC60 keyboard (based on gitbug.com/jpec/kc60 works) 2016-08-25 20:39:55 +02:00
Jack Humbert
f0cb5e9e50 Merge pull request #683 from ickerwx/master
LEDs work now, fixed Kitten Paw default keymap, added my own keymap as a better example
2016-08-25 12:22:28 -04:00
Jack Humbert
8ebe9c446c Merge pull request #681 from IBNobody/vision_division_dev
Added Port A Pin Mapping / Added Vision Division (WIP)
2016-08-25 11:40:51 -04:00
Jack Humbert
6f6f745385 Merge pull request #682 from jeebak/jd45-jeebak
Port jeebak's Planck keymap to JD45
2016-08-25 11:33:14 -04:00
Jack Humbert
5728d1c9f2 Merge pull request #680 from replicaJunction/layout-atreus-replicaJunction
Added replicaJunction keymap
2016-08-25 11:27:55 -04:00
IBNobody
34eeea787c Fixed naming of Analog pins to differentiate them from DIO pins used by Quantum Matrix 2016-08-25 08:16:18 -05:00
René Werner
22ef0bbac5 Merge remote-tracking branch 'upstream/master' into kitten_paw 2016-08-25 12:27:29 +02:00
René Werner
1bbd3c1eea fixed defaulf keymap, added my own keymap
now the LEDs are working like they should
2016-08-25 12:25:57 +02:00
JeeBak Kim
94597a27c5 Make the "extra" key in the top row another backspace 2016-08-25 03:06:42 -07:00
Damien
c51862b237 Merge pull request #1 from jackhumbert/master
Merge from jackhumbert
2016-08-25 08:58:04 +02:00
dbroqua
c34399c592 - Updated kc60/readme
- Added layout examples for kc60
2016-08-25 08:29:30 +02:00
JeeBak Kim
9c0c8c307d [jd45] Port jeebak's planck keymap to jd45 2016-08-24 22:34:03 -07:00
JeeBak Kim
601feed87e [jd45] Add "jeebak" keymap folder as a copy of the "default" folder 2016-08-24 22:23:24 -07:00
IBNobody
8423601ea1 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' into vision_division_dev 2016-08-25 00:16:15 -05:00
IBNobody
936a26d04f Added pin support for A0-A7
Vision Division - It works!
2016-08-25 00:15:41 -05:00
Joshua T
a72d46d1ec Added replicaJunction keymap 2016-08-24 23:58:59 -05:00
Joshua T
b0c3d59681 Fixed getting "stuck" in gaming layer 2016-08-24 23:49:33 -05:00
Joshua T
42fa91a57d Merge remote-tracking branch 'upstream/master' 2016-08-24 23:46:52 -05:00
Joshua T
cac69cb580 Several key placement fixes.
* Switched Tab and Super on the default layout
* Moved Shift on Extend to pinky
* Moved Caps Lock to upper right corner
* Moved gaming toggle to avoid blocking Escape
2016-08-24 23:41:14 -05:00
Olivier
73d2a470ee Merge https://github.com/jackhumbert/qmk_firmware 2016-08-25 00:11:37 +02:00
cbbrowne
7c2a24b315 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-24 17:47:09 -04:00
cbbrowne
9778349c4b More notes 2016-08-24 17:47:01 -04:00
Gergely Nagy
f512179e66 ergodox: Update algernon's keymap to v1.6
Major changes include:

Base layer changes
------------------

* The parentheses & bracket keys have been merged: tapping them results
  in `[` or `{` (if it was shifted), double tapping leads to `(`.
* The `:;` and `-_` keys are now available on the base layer, on
  their **ADORE** location, too, just below `[{(`/`]})`.
* The `Apps` key has been replaced by `F12`.
* The `-`/`_` is no longer a tap-dance key.

ADORE layer changes
-------------------

* Adjustments were made to the **ADORE** layer, to separate some
  inconvenient combinations.

Miscellaneous changes
---------------------

* `LEAD u` now starts the symbolic unicode input system, instead of the
  OS-one.
* The mouse acceleration keys on the **Navigation and Media* layer have
  been turned into toggles: tap them once to turn them on, until tapped
  again. Tapping an accelerator button will turn all the others off.
* When the **ARROW** layer is on, the *red* and *blue* LEDs light up
  now.

Heatmap
-------

* The built-in keylogger has been greatly enhanced, it now outputs the
  pressed state, and the layer (Dvorak or ADORE). As such, the
  `ADORE_AUTOLOG` option has been removed, instead there is
  `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start
  when the keyboard boots. It defaults to off.
* The heatmap generator received a lot of updates.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-24 23:22:57 +02:00
dbroqua
e6dcb8de8c - Fixed layout for kc60 2016-08-24 22:22:14 +02:00
dbroqua
5979051de3 - Updated kc60.h for 2x 1u backspace (K49)
- Added dbroqua layout
2016-08-24 21:53:49 +02:00
Sean Reifschneider
0dfd1712bb Making the existing firmware link better 2016-08-24 09:30:29 -06:00
Sean Reifschneider
7debe7cd77 Changes based on @fredizzimo review, flashing Infinity details 2016-08-24 09:26:41 -06:00
Jack Humbert
ad206155aa Merge pull request #679 from algernon/h/ucis/subproject-fix
quantum: Move qk_ucis_state to process_unicode.c
2016-08-24 11:21:17 -04:00
Jack Humbert
d2990645ca Merge pull request #646 from nclundsten/master
fix ergodox ez link
2016-08-24 11:14:21 -04:00
Gergely Nagy
a058ae40e2 quantum: Move qk_ucis_state to process_unicode.c
In order to not declare the same variable in multiple objects (which
happens when building UCIS-enabled keymap for both the ErgoDox EZ and
the ErgoDox Infinity), move the declaration to the .c file, and keep
only an extern reference in the header.

Many thanks to @fredizzimo for spotting the error in Travis, and
suggesting the fix.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-24 15:39:23 +02:00
dbroqua
235d47e747 - Updated readme by adding link on kle for each layer 2016-08-24 12:57:32 +02:00
Fred Sundvik
2e3834edea Merge remote-tracking branch 'upstream/master' into makefile_overhaul 2016-08-24 10:37:02 +03:00
Fred Sundvik
7c9fff59d0 Fix slight inconsistency
When running make from either a keyboard folder or a subproject
it runs all keymaps for all subprojects and the selected subproject
respectively. Without this fix, the same doesn't happen if your
run make clean for example. As it would just provide you with an
error message. Now this will work as expected.
2016-08-24 10:29:01 +03:00
IBNobody
a902206735 Nightly
Prep for Vision build
2016-08-23 23:05:35 -05:00
IBNobody
5d685efa49 Merge remote-tracking branch 'refs/remotes/origin/master' into vision_division_dev 2016-08-23 20:53:21 -05:00
IBNobody
9263ade0fb Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-08-23 20:52:19 -05:00
IBNobody
6c2b7f359c Fixed line ending 2016-08-23 20:47:35 -05:00
IBNobody
3f8672287f Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-08-23 20:45:06 -05:00
dbroqua
d19c0d46d9 Merge remote-tracking branch 'upstream/master' 2016-08-23 20:39:01 +02:00
Jack Humbert
a920548471 Merge pull request #677 from SmackleFunky/master
Virtual Serial Port - and a Layout that uses that virtual serial port for Plover
2016-08-23 11:05:26 -04:00
dbroqua
e65252d591 Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	keyboards/planck/keymaps/dbroqua/keymap.c
2016-08-23 13:39:49 +02:00
René Werner
6a61c89477 added my personal keymap
I ported my keymap from tmk to QMK.
2016-08-23 13:20:59 +02:00
René Werner
d28942f5d7 Merge branch 'kitten_paw' 2016-08-23 12:17:39 +02:00
René Werner
06c82a063b Fixed wrong keycode in default keymap
Where I used KC_MENU I should have used KC_APP instead.
2016-08-23 12:15:29 +02:00
Jason Green
7009112752 move to ergodox-ez only 2016-08-23 07:04:55 +00:00
Fred Sundvik
feebc58d32 Split kitten_paw into Makefile/rules.mk 2016-08-23 09:42:11 +03:00
Fred Sundvik
8f2af3c6bc Merge branch 'master' into makefile_overhaul 2016-08-23 09:38:05 +03:00
Jason Green
104ca8a5e1 Remove unneeded include 2016-08-23 04:49:05 +00:00
Jason Green
ec62cbe384 add missing #include 2016-08-23 04:32:40 +00:00
Jack Humbert
fb4452c2f5 Merge pull request #671 from Talljoe/one-hand
Add native one-handed support
2016-08-23 00:29:46 -04:00
Jack Humbert
57125ce790 Merge pull request #673 from coderkun/master
Add method to set Unicode input key for ISO 14755
2016-08-23 00:28:01 -04:00
Jack Humbert
3824fa0014 Merge pull request #675 from Xyverz/master
Added missing item K3A to KEYMAP() variable in tv44.h
2016-08-23 00:27:23 -04:00
Jack Humbert
9ca4c9f57f Merge pull request #676 from ickerwx/kitten_paw
Added support for the Kitten Paw controller
2016-08-23 00:26:59 -04:00
Jason Green
86656690f1 TxBolt (Steno) Serial protocol for Ergodox Ez 2016-08-23 04:17:34 +00:00
Jason Green
80d10bef07 Added USB Virtual Serial support 2016-08-23 04:16:35 +00:00
dbroqua
92fe78a5ea - Added PrintScreen key on multimedia layer 2016-08-22 21:19:03 +02:00
René Werner
a26ee57eb8 Added support for the Kitten Paw controller
This adds support for the 2016 revision of the Kitten Paw [1] replacement
controller by Bathroom Epiphanies.

[1] http://bathroomepiphanies.com/controllers/
2016-08-22 20:34:29 +02:00
cbbrowne
90abe70586 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-22 13:16:49 -04:00
Sean Reifschneider
0418ecc073 Changes from review by @fredizzimo and @Xyverz 2016-08-22 10:26:18 -06:00
IBNobody
705c775a4a Nightly
Only major change to qmk was the addition of A0-A7 pins for the AT90USB
2016-08-21 22:05:55 -05:00
Xyverz
02f4e5b064 Merge remote-tracking branch 'upstream/master' 2016-08-21 19:02:32 -07:00
Xyverz
364b77563c Added missing key K3A to KEYMAP() macro in tv44.h 2016-08-21 18:59:10 -07:00
Jack Humbert
d8c5041f0a Merge pull request #669 from fredizzimo/windows10_build_instructions
Add instructions for Windows 10 subsystem for Linux
2016-08-21 19:13:19 -04:00
Jack Humbert
fa18e62d37 Merge pull request #668 from fredizzimo/line_endings
Enforce correct line endings
2016-08-21 19:13:06 -04:00
Jack Humbert
7c140538c7 Merge pull request #674 from kyleberry/master
Fixing Dvorak
2016-08-21 19:09:26 -04:00
dbroqua
d7b6d74842 - Inverted key Tab and Esc
- Reorganised bottom row
2016-08-21 23:20:24 +02:00
Kyle Berry
30de8663a9 Fixing Dvorak
Updating with proper Dvorak layout.
2016-08-21 14:01:43 -07:00
coderkun
81594c7883 Drop method to set Unicode input key and declare start and finish methods as “weak” instead 2016-08-21 21:02:18 +02:00
coderkun
dffdeb50b7 Add method to set Unicode input key for ISO 14755
https://github.com/jackhumbert/qmk_firmware/issues/672
2016-08-21 20:27:23 +02:00
Fred Sundvik
8f16403179 Change order of variable assignment
BUILD_DIR and TARGET was assigned too late, so the dfu-util target,
which depends on them did not work.
2016-08-21 13:53:36 +03:00
Fred Sundvik
1c69acb7d5 Add longest match to the rule-checking
This fixes cases where you have several keyboards with a common
prefix, like algernon, and algernon-master
2016-08-21 13:10:34 +03:00
Joe Wasson
c20bf83afd Add one-hand key to planck/experimental keymap. 2016-08-20 18:47:06 -07:00
Joe Wasson
66adbfcab5 Add default swap configs for a couple of boards. 2016-08-20 17:46:53 -07:00
Joe Wasson
8090f6b499 Improve one-hand support by adding more actions and tap keys. 2016-08-20 17:46:53 -07:00
Joe Wasson
dd37860160 Add one-hand support.
This adds an action, `ACTION_SWAP_HANDS`, that swaps the the keys on the keyboard across a keymap-defined hemisphere in order to support one-hand typing without requiring a separate one-handed layer. See updated `doc/keymap.md` for more information.
2016-08-20 17:46:53 -07:00
IBNobody
4807feec8a In Progress Merge 2016-08-20 14:49:16 -05:00
Olivier
b5172e3afa Rename file following upstream folder rename. 2016-08-20 18:19:03 +02:00
Fred Sundvik
2a5bdd81d4 Add warning about line endings 2016-08-20 19:11:22 +03:00
Olivier
009ab77d3e Merge https://github.com/jackhumbert/qmk_firmware 2016-08-20 18:07:02 +02:00
Fred Sundvik
704cbd1d2b Add instructions for Windows 10 subsystem for Linux
Also simplify the linux instructions
2016-08-20 19:02:19 +03:00
IBNobody
5febdb0a3c Initial Commmit 2016-08-20 10:26:36 -05:00
Jack Humbert
a3f726174c Merge pull request #665 from linsomniac/keymap_jafo
Adding jafo layout.
2016-08-20 11:04:54 -04:00
Jack Humbert
a592c9dcf4 Merge pull request #658 from Xyverz/master
Got rid of all the kludge in my ErgoDox keymap.
2016-08-20 11:04:02 -04:00
Jack Humbert
7cef0f56e9 Merge pull request #630 from nrrkeene/master
The Ordinary Layout is the unsurprising layout
2016-08-20 11:01:22 -04:00
Fred Sundvik
fd2f957a1a Normalize line endings 2016-08-20 17:59:18 +03:00
Fred Sundvik
f0fd840a57 Add .gitattributes to ensure correct line endings
It also ensures that make files and shell script are checked out
with lf endings, for compability with the Windows 10 bash
2016-08-20 17:27:51 +03:00
IBNobody
462e516ad9 Merge 2016-08-20 08:34:42 -05:00
IBNobody
9e3a550840 Merge 2016-08-20 08:31:24 -05:00
IBNobody
2dfe13ac6d fixed color detection routine in makefile 2016-08-20 08:28:30 -05:00
IBNobody
e1590abea9 fixed color detection routine in makefile 2016-08-20 08:28:30 -05:00
IBNobody
6bd9235fe3 Merge 2016-08-20 08:16:06 -05:00
Fred Sundvik
b26ded3ab1 Comment the Makefile
Also move some messages to message.mk
2016-08-20 14:53:29 +03:00
Fred Sundvik
48f8ab1ae2 Fix the clean target
It now properly cleans all the outputs
2016-08-20 12:44:04 +03:00
Xyverz
70d4ea7904 Merge remote-tracking branch 'upstream/master' 2016-08-19 22:50:55 -07:00
Xyverz
e4984f65de Changed the Ergodox keymap to use the KEYMAP() macro, updated readme.md. 2016-08-19 22:45:20 -07:00
Xyverz
aff792545d Changed my keymap to match normal keymaps. 2016-08-19 22:30:34 -07:00
IBNobody
dd553d460e fixed color detection routine in makefile 2016-08-19 23:53:22 -05:00
Nicholas Keene
6a9a6b9477 The Ordinary Layout is boring because all the keys are where you expect them to be 2016-08-19 23:44:08 -05:00
IBNobody
23617779b4 Merge https://github.com/IBNobody/qmk_firmware 2016-08-19 23:39:35 -05:00
Nicholas Keene
8f78ba1f73 The Ordinary Layout is boring because all the keys are where you expect them to be 2016-08-19 23:38:13 -05:00
IBNobody
fdaae7ec88 fixed color detection routine in makefile 2016-08-19 23:37:54 -05:00
Sean Reifschneider
d98e5ddf30 Tweaks after review. 2016-08-19 21:50:04 -06:00
Sean Reifschneider
9e03517ae5 Restructuring of the ergodox README. 2016-08-19 21:47:00 -06:00
Sean Reifschneider
a25480b3b5 Bringing over changes from default map. 2016-08-19 20:55:50 -06:00
Fred Sundvik
da226e6126 Update keyboard readme files with new makefile instructions 2016-08-20 03:56:48 +03:00
Fred Sundvik
b4c75569b0 Update readme with new instructions for make 2016-08-20 03:56:47 +03:00
Fred Sundvik
e1243339ca Add diffutils to travis.yml and install_dependencies
It has been required for a while now, and now actually checked in
the makefiles. Before, if you didn't have it installed it would
just recompile everything.

The readme hasn't been updated to reflect this, I think we need
to go through that separately, and see what's really needed. Or
just instruct people to run the batch scripts.
2016-08-20 03:56:46 +03:00
Fred Sundvik
ab4d7adbb9 Fix the template for the Makefile/rules.mk split 2016-08-20 03:56:45 +03:00
Fred Sundvik
f29730da36 Better format for non-silent output 2016-08-20 03:56:44 +03:00
Fred Sundvik
03e31ef8b9 Continue on error 2016-08-20 03:56:43 +03:00
Fred Sundvik
3442e216dc Move bootloader_defs include to build_keyboard
Also fix it for subprojects
2016-08-20 03:56:42 +03:00
Fred Sundvik
9028a412ea Add output specific config file 2016-08-20 03:56:41 +03:00
Fred Sundvik
33fbd3be36 Output specific include paths 2016-08-20 03:56:40 +03:00
Fred Sundvik
3aac4e95c9 More general system for generating several outputs 2016-08-20 03:56:39 +03:00
Fred Sundvik
87bf34a5d3 Pass the target to submake 2016-08-20 03:56:38 +03:00
Fred Sundvik
d924eb591e Fix variable name clash with builtin
This caused the submake to be called several times, messing up the
build.
2016-08-20 03:56:37 +03:00
Fred Sundvik
8732265928 Options for silent compilation
A single keyboard is always by default compiled in verbose mode.
While multiple keyboards are compiled in silent mode. This can be
overriden by the silent variable from the command line
2016-08-20 03:56:36 +03:00
Fred Sundvik
e4c842de02 Don't run builtin rules for submake
To speed up the compilation
2016-08-20 03:56:35 +03:00
Fred Sundvik
881bde8258 Fix running make in parallel 2016-08-20 03:56:34 +03:00
Fred Sundvik
dd8c1a7659 Don't add VERSION as a define
To avoid full recompilation when the git commit hash changes.
2016-08-20 03:56:33 +03:00
Fred Sundvik
60c6e79ecb Move git submodule check and version generation to main Makefile 2016-08-20 03:56:32 +03:00
Fred Sundvik
cc2df445ab Remove unneded code from tmk_core/rules.mk 2016-08-20 03:56:31 +03:00
Fred Sundvik
67b294ca66 Actual compilation 2016-08-20 03:56:30 +03:00
Fred Sundvik
db5c3b74fb Add color output 2016-08-20 03:56:29 +03:00
Fred Sundvik
0dd629a990 Fix running make from various subfolders 2016-08-20 03:56:28 +03:00
Fred Sundvik
a04bb3a3ba Fixed the shortcut targets 2016-08-20 03:56:27 +03:00
Fred Sundvik
3fa6625869 Proper default goals when inside keyboard fodlers 2016-08-20 03:56:26 +03:00
Fred Sundvik
459ddaceda Add backwards compability with makefile variables 2016-08-20 03:56:25 +03:00
Fred Sundvik
4f20061f66 Proper handling for running make from a subproject or keymap dir 2016-08-20 03:56:24 +03:00
Fred Sundvik
051017c312 Split subproject make files into Makefile and rules.mk 2016-08-20 03:56:23 +03:00
Fred Sundvik
c83af54513 Support for running from keyboard directory 2016-08-20 03:56:21 +03:00
Fred Sundvik
1ad5578d11 Print error when building non-existing keyboard 2016-08-20 03:56:20 +03:00
Fred Sundvik
a6d3500024 Print error message when trying to build non-existing keymap 2016-08-20 03:56:20 +03:00
Fred Sundvik
2dd9c1edcd Proper parsing of keymaps inside subprojects 2016-08-20 03:56:19 +03:00
Fred Sundvik
44441de8ca Split keyboard makefiles into rules and Makefile 2016-08-20 03:56:08 +03:00
Fred Sundvik
0d5caead5a Add default subproject parsing 2016-08-20 03:24:40 +03:00
Fred Sundvik
091fab5103 Slight rearrange of the Makefile for easier readability 2016-08-20 03:24:40 +03:00
Fred Sundvik
286b3b8057 Slight refactoring to remove some verbosity 2016-08-20 03:24:40 +03:00
Fred Sundvik
1df6498721 Subproject parsing
Does not handle keyboards without subprojects correctly yet.
2016-08-20 03:24:40 +03:00
Fred Sundvik
9ee6d4a23d Proper looping for allkb and allkm 2016-08-20 03:24:40 +03:00
Fred Sundvik
dfe510d5b8 Refactor common rule list parsing into own function 2016-08-20 03:24:40 +03:00
Fred Sundvik
9b02e66ce0 Add keymap parsing 2016-08-20 03:24:40 +03:00
Fred Sundvik
f97ae2b199 Rule parsing to match kebyoards 2016-08-20 03:24:40 +03:00
Fred Sundvik
e6e675335d First version of rule parsing
Only handles allkb at the moment.
2016-08-20 03:24:40 +03:00
Fred Sundvik
86706de036 Parsing of makefile variables from starting dir 2016-08-20 03:24:40 +03:00
Jack Humbert
a3a312f8f4 Merge pull request #662 from toneman77/iso_satan
Satan Cleanup
2016-08-19 17:55:54 -04:00
Jack Humbert
47b670bced Merge pull request #663 from tomb0y/kc60_workman_dead
Add the workman-dead layout for kc60
2016-08-19 17:54:12 -04:00
Sean Reifschneider
30c63b1495 Noting the change directory. 2016-08-19 14:52:05 -06:00
Sean Reifschneider
b918aa6bab Adding submodule note. 2016-08-19 14:49:29 -06:00
Sean Reifschneider
50531068b3 Adding jafo layout. 2016-08-19 14:42:41 -06:00
Sean Reifschneider
32216066e7 Adding nicer Infinity build instructions. 2016-08-19 14:36:41 -06:00
zs
a1da23d827 Add the workman-dead layout for kc60 2016-08-19 21:59:08 +02:00
dbroqua
b9a284352e - Moved Insert/Del in Esc layer 2016-08-19 21:10:07 +02:00
dbroqua
11aa19a626 - Updated lower and raise layer 2016-08-19 21:00:24 +02:00
Jack Humbert
7bb9d7f0f9 Merge pull request #660 from toneman77/amj60
new keyboard: AMJ60
2016-08-19 11:19:52 -04:00
dbroqua
c6e733afce - Added readme file and layout preview 2016-08-19 14:17:07 +02:00
dbroqua
b4f23b146f - Moved Home/End/PgUp/PgDn on arrow keys 2016-08-19 14:01:37 +02:00
Toni
bc0bd11430 forgot media keys 2016-08-19 10:24:48 +02:00
Toni
225c73ed30 Merge remote-tracking branch 'origin/master' into amj60
merge with upstream
2016-08-19 09:49:56 +02:00
dbroqua
31120ed166 - Moved Brite function on esc to avoid conflict with ctrl key. 2016-08-19 09:39:25 +02:00
dbroqua
578b7e969e - Updated dbroqua layout for planck keyboard 2016-08-19 09:19:55 +02:00
Xyverz
ed1291bfbd Added compatibility for the Infinity ErgoDox to my Ergodox keymap.
Updated readme.md to reflect this change.
2016-08-18 22:43:31 -07:00
Jack Humbert
2c59f71090 Merge pull request #655 from Dbroqua/patch-1
Added dbroqua layout for planck keyboard
2016-08-18 19:25:36 -04:00
Jack Humbert
05728cad68 Merge pull request #656 from Vifon/dynamic_macros
Improve the dynamic macro documentation
2016-08-18 19:23:53 -04:00
Wojciech Siewierski
ea7115534a Improve the dynamic macro documentation 2016-08-19 00:18:45 +02:00
Damien
a5e6da7aa8 Added dbroqua layout for planck keyboard 2016-08-18 22:25:13 +02:00
Jack Humbert
6c359cabbf Merge pull request #652 from iFreilicht/master
Added S60-X keyboard
2016-08-18 10:34:22 -04:00
Jack Humbert
ca7fa07bc1 Merge pull request #651 from algernon/f/register16
Add a register/unregister_code16 pair of functions
2016-08-18 10:32:16 -04:00
Jack Humbert
8f32595820 Merge pull request #650 from Xyverz/master
Minor changes to keymaps and other files
2016-08-18 10:31:17 -04:00
Jack Humbert
6e1b89fdc8 Merge pull request #654 from algernon/h/planck-circuit-tap-dance-fix
planck/circuit: Update after the latest tap-dance change
2016-08-18 10:04:02 -04:00
Toni
21dc8381d1 made a correct default KEYMAP. moved the old one to KEYMAP_ANSI
fixed all layouts that were referencing KEYMAP to KEYMAP_ANSI
whitespace prettyfying
2016-08-18 15:57:17 +02:00
Toni
fe90653886 smyll typo fixed 2016-08-18 15:32:06 +02:00
Toni
0e86c85241 amj60 variant of the readme 2016-08-18 15:30:52 +02:00
Toni
0edf7c7cad first attempt at documentation for the amj60 board 2016-08-18 15:22:34 +02:00
Gergely Nagy
0d9d4b8658 planck/circuit: Update after the latest tap-dance change
Fixes #653.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-18 13:22:16 +02:00
Toni
068e76bbf0 uniform whitespace 2016-08-18 13:10:02 +02:00
Toni
387bd772e1 initial commit for the AMJ60 PCB 2016-08-18 13:06:16 +02:00
Felix Uhl
dbfb27326b Added info to docs 2016-08-18 12:15:10 +02:00
Felix Uhl
ed6ecff292 Merge pull request #1 from jackhumbert/master
Merging from base Repo
2016-08-18 12:02:31 +02:00
Felix Uhl
73f13c8f26 Bugfixes 2016-08-18 11:56:44 +02:00
Felix Uhl
a72dc6da70 Final link fix 2016-08-18 11:45:56 +02:00
Felix Uhl
406ae1a2eb More link fixing 2016-08-18 11:43:32 +02:00
Felix Uhl
aa71ebfbba Fixed links again
Note to self: check before commiting.
2016-08-18 11:41:52 +02:00
Felix Uhl
d34c0a2fc1 Fixed dead link 2016-08-18 11:40:05 +02:00
Felix Uhl
738151d12a Minor documentation changes 2016-08-18 11:38:04 +02:00
Gergely Nagy
0d28787c5c Add a register/unregister_code16 pair of functions
These functions register not only the 8bit keycode, but the modifiers
too. It doesn't handle the full range of the upper 8bits, just the mods,
but that's a good start.

Changed the tap-dance pair functions to use these, so one can do:

  `ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)`

...and that will do the right thing.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-18 11:29:53 +02:00
Felix Uhl
c5f13e5836 Fixed links again 2016-08-18 11:16:10 +02:00
Felix Uhl
a865995595 Fixed pictures and links 2016-08-18 11:11:42 +02:00
Felix Uhl
2618260b34 Documentation overhaul. 2016-08-18 10:37:32 +02:00
Toni
864e26f439 cleanup, readability , shift swap in ISO_SPLIT_RSHIFT 2016-08-18 10:06:13 +02:00
Felix Uhl
07924511f3 Small changes, renamed keymap
Added MicMute
Revived all dead keys
Removed OS Shift
2016-08-18 10:01:46 +02:00
Toni
64ecb15310 corrected the split rshift key to reality
fixed my keymap in the process to adjust to that
2016-08-18 09:56:11 +02:00
Xyverz
aa37a57e0f One last change to the readme. 2016-08-18 00:38:25 -07:00
Xyverz
eb81978ecb One last formatting change 2016-08-18 00:35:32 -07:00
Xyverz
118ad691c4 more formatting changes 2016-08-18 00:34:22 -07:00
Xyverz
4dd641a128 Hopefully this fixes the layout diagrams. 2016-08-18 00:27:54 -07:00
Xyverz
035290b7d8 Added a readme, tidied up comments in the keymap. 2016-08-18 00:22:56 -07:00
Xyverz
47beb763e8 Returned RAISE and LOWER buttons to their original functions - too many inopportune ENTER inputs. :-( 2016-08-18 00:05:24 -07:00
Xyverz
67227e4c71 Merge branch 'master' of https://github.com/Xyverz/qmk_firmware 2016-08-17 23:55:58 -07:00
Xyverz
385b827c85 Merge remote-tracking branch 'upstream/master'
this merge is necessary,
2016-08-17 23:53:56 -07:00
Jack Humbert
8144ce8852 Merge pull request #648 from Vifon/dynamic_macros
Implement the dynamic macros that are recorded in runtime
2016-08-17 21:17:30 -04:00
Jack Humbert
39a95897bc Merge pull request #647 from Vifon/process_record_nocache-fix
Fix the process_record_nocache function
2016-08-17 21:16:49 -04:00
Jack Humbert
f4f80a0e3a Merge pull request #645 from algernon/f/tap-dance/buffering
tap-dance rework
2016-08-17 21:15:29 -04:00
Jack Humbert
1442a882d4 Merge pull request #640 from toneman77/iso_satan
heavily modified spacefn layout for iso boards using the satan PCB
2016-08-17 21:11:59 -04:00
Jack Humbert
f59b61332f Merge pull request #638 from premek/master
Split layout for planck
2016-08-17 21:11:02 -04:00
Jack Humbert
034bf67f2a Merge pull request #637 from mld2443/master
Circuit keymap for Planck keyboard
2016-08-17 21:10:33 -04:00
Wojciech Siewierski
950755edaf Add the dynamic macros documentation to the readme 2016-08-18 01:40:54 +02:00
Wojciech Siewierski
39e8e61258 Implement the dynamic macros that are recorded in runtime 2016-08-18 01:37:13 +02:00
Wojciech Siewierski
644c8c7927 Fix the process_record_nocache function
This function relies on checking the disable_action_cache static
variable before accessing the layer cache.
2016-08-18 01:34:05 +02:00
Xyverz
ef95c10c66 Update readme.md 2016-08-17 14:55:01 -07:00
Xyverz
e3486caf87 Create readme.md 2016-08-17 14:54:05 -07:00
Nigel Lundsten
3e1d142018 trailing slash 2016-08-17 14:01:27 -07:00
Nigel Lundsten
6bafafc18d fix ergodox link (again?)
/ergodox/ez  is a broken link, seems like the ez stuff is at /ergodox
2016-08-17 14:00:47 -07:00
Toni
c024de4a87 wring keypress for german iso fixed. prettified 2016-08-17 15:33:14 +02:00
Gergely Nagy
29f64d7a93 tap-dance: Major rework, to make it more reliable
This reworks how the tap-dance feature works: instead of one global
state, we have a state for each tap-dance key, so we can cancel them
when another tap-dance key is in flight. This fixes #527.

Since we have a state for each key, we can avoid situation where a keyup
would mess with our global state. This fixes #563.

And while here, we also make sure to fire events only once, and this
fixes #574.

There is one breaking change, though: tap-dance debugging support was
removed, because dumping the whole state would increase the firmware
size too much. Any keymap that made use of this, will have to be
updated (but there's no such keymap in the repo).

Also, there's a nice trick used in this rework: we need to iterate
through tap_dance_actions in a few places, to check for timeouts, and so
on. For this, we'd need to know the size of the array. We can't discover
that at compile-time, because tap-dance gets compiled separately. We'd
like to avoid having to terminate the list with a sentinel value,
because that would require updates to all keymaps that use the feature.
So, we keep track of the highest tap-dance code seen so far, and iterate
until that index.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-17 15:05:58 +02:00
Gergely Nagy
d78058cc75 tap-dance: Include action_tapping.h for TAPPING_TERM
Include `action_tapping.h`, so the keymap does not have to define a
`TAPPING_TERM` for us, and we can use the default.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-17 10:28:08 +02:00
Joshua T
bc1059bc1e Minor changes to Extend and Number layers.
Brought QWERTY layer in line with normal layer. Removed Undo function, as it interfered with Shift. Moved Tab and Shift-Tab, and added Insert.
2016-08-16 21:55:33 -05:00
Toni
8e142d8cbe no more warning thanks to iFreilicht's tip with undef 2016-08-16 17:35:03 +02:00
Toni
deedd2f408 in accordance to keymap_makefile_example.mk 2016-08-16 16:44:12 +02:00
Toni
03a24eb86a minor grammer fixes 2016-08-16 16:35:57 +02:00
Toni
b1ac91a040 big cleanup and minor refactoring. thanks iFreilicht. 2016-08-16 16:32:42 +02:00
Přemek Vyhnal
2ebfdcac40 Update readme.md 2016-08-16 01:07:34 +02:00
premek
a75d4bd593 premek split layout 2016-08-16 00:50:35 +02:00
premek
5abb05ca40 premek split layout 2016-08-16 00:44:58 +02:00
Matt
f5ed3e5155 Added my custom Planck layout called Circuit.
* Layout has image and readme, as well as documentation in the code.
2016-08-15 17:26:01 -05:00
Felix Uhl
faa3fd48ae Minor changes to felix keymap 2016-08-15 22:57:26 +02:00
Toni
68005ce602 grammar 2016-08-15 21:47:07 +02:00
Toni
7e1be3ae7c reference to reddit post and Terry Mathews 2016-08-15 21:44:20 +02:00
Toni
b8cbf7c9c0 script now waits for the user to press the button 2016-08-15 21:18:25 +02:00
Toni
396b59f256 readme now with picture 2016-08-15 21:12:49 +02:00
Toni
94ff9c9fa5 more prettyness 2016-08-15 21:04:11 +02:00
Toni
14de76ea80 Update readme.md
typo
2016-08-15 21:02:40 +02:00
Toni
5cf5e27dcd Update readme.md
attempt to prettify the table
2016-08-15 21:02:07 +02:00
Toni
77f3efbef6 more information. first steps in markdown 2016-08-15 20:59:50 +02:00
Toni
ca4968bc44 readme.md added 2016-08-15 20:46:38 +02:00
Toni
f89aec98ae removed my personal stuff 2016-08-15 20:32:45 +02:00
Toni
5ecebc3a66 Merge remote-tracking branch 'origin/master' into iso_split_rshift
no idea what is merged
2016-08-15 19:48:53 +02:00
cbbrowne
3cb1dce622 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-15 12:59:27 -04:00
Jack Humbert
cc7acfb416 Merge pull request #635 from algernon/f/ucis
Symbolic Unicode Input System
2016-08-15 12:19:01 -04:00
cbbrowne
8a14952e44 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-15 11:19:24 -04:00
Xyverz
5c5c3e626b Adding KC_BSPC to the LT() macro for LOWER resulted in a backspace stroke being sent if the LOWER key was used too quickly.
Switching back to original LOWER macro, but keeping the new RAISE macro.
2016-08-15 06:57:24 -07:00
Xyverz
8e2d69d5a2 Adding u/treasuredfrog's hack to use LT() with the RAISE and LOWER macros. 2016-08-15 06:28:39 -07:00
Gergely Nagy
e8845f0daf process_unicode: Introduce a slight delay
When entering unicode codes, use some delay, so the OS has time to
process the information. This is not needed on all systems, but some
seem to require it.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
43d08629cf process_unicode: Replace register_hex32
It turns out that register_hex32 did not work reliably, and some systems
only allow 7 chars after the unicode magic sequence, while others allow
8. To remedy the situation, store the codes as strings, and type those
in instead of doing bit shifting magic.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
a312cbf712 process_unicode: Use uint32_t for UCIS purposes
Use a single uint32_t to store the unicode of a symbol, instead of an
array of uint16_ts.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
234dd276cf process_unicode: Make the startup overridable
Extract out the part of `qk_ucis_start` that inputs the placeholder
symbol, and make it weak, so it can be overridden.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
857aa5bef6 process_unicode: Call process_ucis() automatically
If UCIS is enabled, call process_ucis() automatically from
process_record_quantum().

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
0b6861827f process_unicode: Handle too long UCIS symbol names
If the symbol name being entered is longer than the max, stop recording
it, and stop processing keycodes apart from the ones that can delete,
finish or cancel the sequence.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
fa06a16360 process_unicode: Add a way to enter unicode symbols by name
The purpose of this change is to allow keymaps to specify a dictionary
of unicode symbol name to code mappings, and let the person at the
keyboard enter unicode symbols by name.

This is done by having a way to trigger unicode symbol input mode, when
all keys are cached until Esc, Enter or Space are pressed. Once that
happens, we try to look up the symbol from our lookup table. If found,
we erase back, and type the unicode magic in to get that symbol. If not
found, we still erase back, start unicode input mode, and replay what
the user typed in.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Gergely Nagy
63e5782d2c process_unicode: Small refactor & linux fix
This moves the unicode input start / end sequences into their own
functions, so keymaps and other functionality can build on it too.

At the same time, it changes how the Linux variant works, to match
reality: CTRL+SHIFT must be unregistered too, and we close the thing
with a Space instead.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-15 10:08:53 +02:00
Xyverz
4f0bcfe724 Merge remote-tracking branch 'upstream/master' 2016-08-14 20:27:41 -07:00
Xyverz
055b887b0d Setup the bottom-row modifiers to be mac-like in their arrangement. 2016-08-14 20:25:52 -07:00
Daniel
8019a074cf minor tweaks to numpad and media layer 2016-08-14 20:43:05 -05:00
Jack Humbert
bc8976d277 Merge pull request #634 from di0ib/master
minorca handwired
2016-08-14 21:03:15 -04:00
di0ib
959c48e146 moved to handwired folder 2016-08-14 14:13:58 -10:00
di0ib
288bf4faa3 Merge branch 'master' of https://github.com/di0ib/qmk_firmware 2016-08-14 13:20:00 -10:00
di0ib
df56d742b1 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-08-14 13:19:20 -10:00
Jack Humbert
4865e6f81f Merge pull request #631 from jacwib/master
Jacwib's keymap
2016-08-14 18:50:22 -04:00
Jack Humbert
cdd7301b8b Merge pull request #627 from algernon/h/set-unicode-input-mode
process_unicode: Fix set_unicode_input_mode()
2016-08-14 18:50:03 -04:00
Jack Humbert
8bb299255b Merge pull request #624 from Xyverz/master
Added Ergodox Layout with persistent layers, Atreus corrections
2016-08-14 18:49:28 -04:00
di0ib
503ec7f9f6 Updated readme
Added link to Minorca/Sebright blog.
2016-08-14 11:15:46 -10:00
di0ib
f58a67c991 cleanup readme 2016-08-14 11:10:12 -10:00
di0ib
1eaa685872 Correct data pin to D5 2016-08-14 11:08:15 -10:00
di0ib
65060ad000 Fix list 2016-08-14 11:07:35 -10:00
di0ib
dde9ee572c clean up readnme 2016-08-14 11:06:46 -10:00
di0ib
b4218a2b3e Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-08-14 10:58:22 -10:00
di0ib
c6c2c3fc14 minorca
minirca with RGB keymap
2016-08-14 10:58:10 -10:00
Toni
5705a40320 increased readability with a defince 2016-08-14 20:06:47 +02:00
Felix Uhl
df01d502d4 Ported all keymaps
Old TMK keymaps were ported and confirmed to compile
All keymaps compiled and added to zip-archive.
Documentation was updated.
2016-08-14 13:07:03 +02:00
Felix Uhl
6774f300da Update readme.md 2016-08-14 11:48:59 +02:00
Felix Uhl
ec75c04663 Fixed links to keymap sources 2016-08-14 11:44:43 +02:00
jacwib
54e37fd2d1 Fix bug 2016-08-14 11:08:01 +02:00
jacwib
6ba27ea318 Remove pointless comments 2016-08-14 11:02:46 +02:00
jacwib
e4e13ddc54 Update readme.md 2016-08-14 10:57:47 +02:00
jacwib
26f4a0cf04 Update Makefile 2016-08-14 10:49:26 +02:00
jacwib
62004866b3 Update config.h 2016-08-14 10:49:06 +02:00
jacwib
cf91aa416a Update keymap.c 2016-08-14 10:48:52 +02:00
jacwib
1ab78110bd Update readme.md 2016-08-14 10:48:22 +02:00
jacwib
880486bd24 Jack's keymap. 2016-08-14 10:46:40 +02:00
Xyverz
049343e523 Added my own layout to the Phantom. 2016-08-14 00:33:11 -07:00
Xyverz
97fca1efff Fixing a mixup. Tidying up the keymap. 2016-08-13 20:14:27 -07:00
Xyverz
1920c290a4 Merge remote-tracking branch 'upstream/master' 2016-08-13 19:51:49 -07:00
Erez Zukerman
6323f3d1e7 Merge pull request #623 from algernon/ergodox-ez/algernon
ergodox: Update my keymap to v1.5
2016-08-13 20:12:15 -04:00
Erez Zukerman
5ef3f05215 Merge pull request #626 from tenderlove/readme-link
fix link to ErgoDox EZ
2016-08-13 20:11:34 -04:00
Felix Uhl
911cc68325 Added all original S60-X keymaps
All keymaps that were included in VinnyCordeiro's repository were ported to QMK.
Main Readme was copied over from VC's repo, slightly altered.
Main Makefile was updated to reflect VC's original configuration.
Small changes in felix keymap.
2016-08-14 00:41:09 +02:00
Nicholas Keene
ba7f2b1d3f The Ordinary Layout is the unsurprising layout 2016-08-13 15:53:03 -05:00
Ian Sterling
e87506767c Removal of old minivan44 folder. 2016-08-13 10:44:42 -07:00
Ian Sterling
2d0f585e42 Renamed minivan44 to tv44 in all occurrences per wishes of
Jack and Evan.
2016-08-13 10:36:08 -07:00
Gergely Nagy
8bdf745909 process_unicode: Fix set_unicode_input_mode()
In the header, this was defined as `set_unicode_input_mode`, but the
implementation had `set_unicode_mode` for a name. Changed the
implementation to match the header.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-13 10:37:01 +02:00
Toni
e0aa216905 Merge remote-tracking branch 'origin/master' into iso_split_rshift
update from Upstream
2016-08-13 09:24:24 +02:00
Ian Sterling
c07fe96581 Adding the MiniVan44 aka TheVan 44 by u/evangs to the repo.
Initial Commit.
2016-08-12 23:45:40 -07:00
Xyverz
3bae791372 Update keymap.c 2016-08-12 22:30:01 -07:00
Ian Sterling
458607ee5e Corrections to the Atreus Makefile and updates to my keymap 2016-08-12 22:26:30 -07:00
Aaron Patterson
477f1ad0c8 fix link to ErgoDox EZ
This just fixes the readme link to the ErgoDox EZ directory
2016-08-12 19:15:53 -07:00
Jack Humbert
098951905d forces all ergodox keymaps to be ez on qmk.fm (were infinity) 2016-08-12 20:45:43 -04:00
Daniel
558bf2ed07 completes first-pass at media layer 2016-08-12 19:27:44 -05:00
Callum Oakley
993d72b11f added a lock screen key 2016-08-12 21:05:52 +01:00
Daniel
916d12f9fa completes first-pass at symbol layer 2016-08-12 14:37:13 -05:00
Jack Humbert
11d4784d3a Merge pull request #622 from shelaf/master
My HHKB layout
2016-08-12 14:43:04 -04:00
Jack Humbert
c6ec63eac3 Merge pull request #621 from shelaf/fix
Fix typo
2016-08-12 14:42:42 -04:00
Toni
cafa528b88 only aesthetics 2016-08-12 19:14:48 +02:00
cbbrowne
c21a882ec9 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-12 11:17:34 -04:00
Gergely Nagy
b98d47abe5 ergodox: Update my keymap to v1.5
Major changes include:

* The **1HAND** layer has been removed.
* A `Delete` key is now available on the right thumb cluster.
* The **ADORE** layer received a major update, see the updated layout
  image.
* It is now possible to enable automatic logging for the **ADORE**
  layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when
  compiling the keymap. It is off by default.
* The `~` key and the `Media Next/Prev` key have been swapped on
  the **base** layer.
* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
* There is some experimental support for entering Unicode symbols.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-08-12 16:36:07 +02:00
shela
11e23fd3fd add new line 2016-08-12 21:45:36 +09:00
shela
c9272fee08 add new line 2016-08-12 21:33:32 +09:00
shela
1c8d64d3b3 add my keymap 2016-08-12 21:24:43 +09:00
shela
e692ebf86a fix typo 2016-08-12 20:38:26 +09:00
Jack Humbert
97cd7afc32 Merge pull request #618 from denolfe/master
Add denolfe satan keymap
2016-08-11 21:34:34 -04:00
Jack Humbert
a0ed238c12 Merge pull request #617 from iFreilicht/patch-2
Fix dead link in keycode.txt
2016-08-11 21:34:09 -04:00
Jack Humbert
bad77bf4e9 Merge pull request #614 from iFreilicht/patch-1
Update TMK_README.md
2016-08-11 21:33:55 -04:00
Jack Humbert
a087a207f1 Merge pull request #608 from finleye/master
Adds keymap based on Kinesis advantage
2016-08-11 21:32:32 -04:00
Felix Uhl
4725942dc7 Small changes
Enabled Bootmagic and ISO layouts on felix keymap
Added unused pins
2016-08-11 21:49:10 +02:00
Xyverz
71e1bb2e1c Delete keymap.c
Not ready to submit this one just yet.
2016-08-11 11:04:57 -07:00
Xyverz
eeade4af84 Update keymap.c
Changed right-hand F-key layout in order to add KC_PLUS to _L2.
2016-08-11 09:48:23 -07:00
Xyverz
d1f418d85d Update Makefile
Corrected spelling of "ATREUS" in all locations. (ATRUES -> ATREUS)
2016-08-11 09:46:05 -07:00
Elliot DeNolf
56f86413e0 Add denolfe satan keymap 2016-08-11 09:54:02 -06:00
Felix Uhl
38766dbc82 Minor changes to keymaps
Clarified extra keys
Made ISO-keys non-dead in default layout
Added non-US backslash on felix layout
2016-08-11 09:36:37 +02:00
Felix Uhl
a41a53baad Fix dead link in keycode.txt
The link to the HID Usage tables was outdated and dead, so I replaced it.
2016-08-11 09:13:38 +02:00
Daniel
fe7b46579c completes first-pass at base layer 2016-08-10 19:37:59 -05:00
Felix Uhl
aa1a90af66 Added S60-X to keyboards with two layouts. 2016-08-11 00:54:55 +02:00
cbbrowne
83913f9197 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-10 11:36:37 -04:00
Felix Uhl
6975135f54 updated reference
Build setup links to main readme now.
2016-08-10 11:40:51 +02:00
Ian Sterling
0d60355241 Added braces using LSFT(KC_LBRC) and LSFT(KC_RBRC) since the normal RBCR and LBCR didn't work for me. 2016-08-09 23:56:21 -07:00
Ian Sterling
6f700f1eb0 Adding my own layouts for the Phantom and Ergodox. My Ergodox layout adds persistent layers
based on the Planck and Preonic setup. The layout arrays are pulled directly from the
ergodox/ez/ez.h keymap definition starting at line 81.
2016-08-09 23:49:27 -07:00
Joshua T
6a24bac9c4 Moved Shift keys to Z and ?
Instead of using a thumb shift, I was given the idea of using the pinky keys as dual-role keys that also send the Shift keypress.

This gives me a Shift key on each hand again, but it will make me learn to Shift with opposite hands after all.
2016-08-09 22:16:21 -05:00
Joshua T
82223aec6c Created build.bat
Helper batch file for building the keyboard.
2016-08-09 21:34:55 -05:00
Joshua T
ec67d32bd4 Merged branch master into master 2016-08-09 21:30:31 -05:00
Joshua T
ea8638b944 Changed left thumb back to Ctrl/Alt
Removed Shift from left thumb
2016-08-09 21:29:22 -05:00
Joshua T
fdb8a4cd65 Created keymap-specific config.h 2016-08-09 21:28:31 -05:00
Joshua T
5d78311612 Reverted Ergodox config.h
I will create a separate config.h for my keymap
2016-08-09 21:27:38 -05:00
Joshua T
daa83afe2b Created keymap local config.h file
Reverted the Atreus config.h to default and added one specific to this keymap.
2016-08-09 20:51:22 -05:00
Callum Oakley
2a160bbbe3 Update keymap. (#616)
* changed order of bottom row of symbol layer to ease acess to brackets

* updated readme.md to reflect keymap changes
2016-08-09 12:33:07 -04:00
Xyverz
ca3278cc35 adds Xyverz's keymaps (#615)
* Adding my own keymaps to the following keyboards:

Planck, Preonic, Atreus, Ergodox

* Delete dvorak.png

Not reflective of my layout.

* Delete readme.md

file cleanup, removing file that doesn't apply to my layout.

* Delete old_keymap.c

file cleanup

* Delete README.md

file clean up.

* Delete README.md

file cleanup

* Delete keymap.c

file cleanup

* Changed behavior of _DVORAK layout's KC_RSFT to SFT_T(KC_ENT) for flexibility's sake.
Updated the rest of the keymap to reflect the current (as of 19:37 on 08 Aug 2018) default
layout and default makefile.
2016-08-09 12:31:56 -04:00
cbbrowne
6a618fd44d Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-09 12:10:48 -04:00
Callum Oakley
49fbcb3e7c Merge remote-tracking branch 'upstream/master' 2016-08-09 12:39:59 +01:00
Callum Oakley
725dd7328f updated readme.md to reflect keymap changes 2016-08-09 11:09:52 +01:00
Callum Oakley
5f37b11f2c changed order of bottom row of symbol layer to ease acess to brackets 2016-08-09 11:03:12 +01:00
Ian Sterling
78a6fae453 Merge branch 'master' of https://github.com/Xyverz/qmk_firmware 2016-08-08 19:40:41 -07:00
Ian Sterling
39dd3d674c Changed behavior of _DVORAK layout's KC_RSFT to SFT_T(KC_ENT) for flexibility's sake.
Updated the rest of the keymap to reflect the current (as of 19:37 on 08 Aug 2018) default
layout and default makefile.
2016-08-08 19:35:13 -07:00
Xyverz
c062b6a13d Delete keymap.c
file cleanup
2016-08-08 18:52:48 -07:00
Xyverz
4e030313f7 Delete README.md
file cleanup
2016-08-08 18:51:34 -07:00
Xyverz
1493836762 Delete README.md
file clean up.
2016-08-08 18:48:36 -07:00
Xyverz
c060afe68e Delete old_keymap.c
file cleanup
2016-08-08 18:47:13 -07:00
Xyverz
bf93fa510b Delete readme.md
file cleanup, removing file that doesn't apply to my layout.
2016-08-08 18:46:34 -07:00
Xyverz
de1db144d0 Delete dvorak.png
Not reflective of my layout.
2016-08-08 18:44:09 -07:00
Ian Sterling
552399df4c Adding my own keymaps to the following keyboards:
Planck, Preonic, Atreus, Ergodox
2016-08-08 18:34:08 -07:00
skullY
adad05c3fb Add support for the cluecard 2016-08-08 16:11:54 -07:00
skullY
d561f63bd1 Clueboard: Fix the title in keymaps/skully/readme.md 2016-08-08 13:46:55 -07:00
skullY
e85bf50e1a Clueboard: Add some readme.md files and do some minor cleanup. 2016-08-08 13:43:24 -07:00
Corey Finley
76cd7c5444 Adds keymap based on Kinesis advantage 2016-08-08 15:17:10 -04:00
cbbrowne
6ce0195e24 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-08 13:50:01 -04:00
Jack Humbert
55ca218634 Merge pull request #613 from di0ib/master
Convert hex to bin
2016-08-08 12:10:49 -04:00
Jack Humbert
1f4277fe6b Merge pull request #612 from kuel/master
Added file for software implementation of Russian, gave keymap_cyrillic.h a better name.
2016-08-08 12:09:48 -04:00
Jack Humbert
a3167bdc09 Merge pull request #609 from sethbc/fix_clueboard_orphaned_files
remove orphaned clueboard files
2016-08-08 12:09:14 -04:00
Jack Humbert
9866c23bff Merge pull request #607 from jeebak/jeebak
Update Jeebak's keymap, w/ KC_COPY, etc. workaround.
2016-08-08 12:07:39 -04:00
Felix Uhl
f41c2e6863 Update TMK_README.md
updated link to non-existent build.md file
2016-08-08 17:53:08 +02:00
di0ib
8fab141a02 Convert hex to bin
For flashing via alternative methods like LUFA MassStorage bootloader.
2016-08-07 20:58:59 -10:00
di0ib
a36b2a0756 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-08-07 20:20:16 -10:00
Joshua T
6df31120a1 Merge remote-tracking branch 'upstream/master' 2016-08-07 23:28:59 -05:00
JeeBak Kim
ef83f1d04f Tap for ;, hold for GUI, tap for ", hold for Alt 2016-08-07 12:44:45 -07:00
JeeBak Kim
3d86e5b7a7 Tap for Tab, hold for Hyper 2016-08-07 11:05:10 -07:00
kuel
2a0121a786 Removed unnecessary comment 2016-08-07 11:07:38 -05:00
kuel
c5ee24a6c3 Add keymap_russian.h, a software implementation of Russian
rename keymap_cyrillic.h to keymap_unicode_cyrillic.h
changed CY_RUBLE and CY_NUMERO to CY_RUBL and CY_NMRO in
 keymap_unicode_cyrillic.h
2016-08-07 11:01:12 -05:00
Toni
b5fcb5a744 new variant with the curly braces on tab layer 2016-08-07 11:37:28 +02:00
JeeBak Kim
68e287013b Add Tab Close, New, Reopen macros to TouchCursor layer 2016-08-06 13:36:46 -07:00
JeeBak Kim
bda4d15ffa Add Virtual Desktop Switching macros to TouchCursor layer 2016-08-06 12:00:37 -07:00
JeeBak Kim
57218827cb Move KC_ACL1 button 2016-08-06 00:08:59 -07:00
JeeBak Kim
96ed96f924 Fix KC_ALT_TAB/KC_CMD_TAB logic 2016-08-06 00:01:12 -07:00
JeeBak Kim
6483a2a04b Mouse layer updates
- Rename to MOUSECURSOR
- Use "d" key, since middle finger is stronger than pinky
- Shuffle some mouse buttons around
2016-08-05 23:32:00 -07:00
Seth Chandler
545925fb1b remove orphaned clueboard files 2016-08-05 23:19:12 -04:00
Toni
dcf672223f enterfn / enterisctrl on hold added 2016-08-05 20:53:58 +02:00
JeeBak Kim
36abd4463f Revert swapp of AltTab/CmdTab in readme. Layout did not change 2016-08-04 14:26:03 -07:00
cbbrowne
64e051652b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-08-04 11:10:41 -04:00
JeeBak Kim
7db1d7902b Workaround for KC_COPY, etc. based on current AG_NORM/AG_SWAP setting 2016-08-03 21:21:28 -07:00
JeeBak Kim
9a4e72fa71 Add CmdSlash to TouchCursor Layer 2016-08-03 19:19:18 -07:00
JeeBak Kim
16f4a31784 Number layer tweaks 2016-08-03 19:19:18 -07:00
JeeBak Kim
fdd89e7f0d Add Alt-Tab, Cmd-Tab, and Ctl-Tab Macros to TouchCursor layer, swap LGUI and LSFT 2016-08-03 19:19:18 -07:00
JeeBak Kim
abc3cd4d72 Update readme.md 2016-08-03 19:19:18 -07:00
kuel
8d8709fb79 Merge pull request #1 from jackhumbert/master
Update
2016-08-03 11:24:29 -05:00
Jack Humbert
213cb2c243 Merge pull request #605 from kuel/master
Add keymap_cyrillic.h, lots of cyrillic characters
2016-08-03 00:11:02 -04:00
Jack Humbert
301e46c529 Merge pull request #599 from Depariel/master
Fixed compiling errors and updated keymaps for infinity_chibios
2016-08-03 00:10:41 -04:00
Jack Humbert
e62c588921 Merge pull request #561 from 0xdec/patch-1
Clean up formatting & tiny refactor in rgblight.c
2016-08-03 00:08:02 -04:00
Stephen Christie
bf2b260429 Merge branch 'master' of http://github.com/jackhumbert/qmk_firmware 2016-08-02 22:51:30 -04:00
Stephen Christie
0acb394ac4 Moved Insert, PrtSc, Pause to Adjust; Corner enter 2016-08-02 22:32:27 -04:00
kuel
c70b276b1b Add keymap_cyrillic.h, lots of cyrillic characters 2016-08-02 14:09:01 -05:00
Erez Zukerman
79a9e04706 Merge pull request #592 from sethbc/ez-sethbc
Ez sethbc
2016-08-02 08:03:09 -04:00
Erez Zukerman
8c52327aa6 Merge pull request #593 from J3RN/master
Updated the J3RN ErgoDox keymap
2016-08-02 08:02:27 -04:00
Erez Zukerman
6eab4ecd7e Merge pull request #600 from adiabatic/master
zweihander-osx: add left-hand-thumb tab key
2016-08-02 08:01:56 -04:00
Jack Humbert
461f973c2b correct file name 2016-08-01 23:46:50 -04:00
Jack Humbert
25f138c0d3 fix mkdir cmd 2016-08-01 22:59:25 -04:00
Erez Zukerman
56aa51664e Updates ErgoDox readme 2016-08-01 21:15:01 -04:00
Stephen Christie
76ef37e72d Corrected Qwerty/Fn Mismatch. 2016-08-01 18:54:25 -04:00
Jack Humbert
f422f442cf automatically forward ergodox ez 2016-08-01 14:51:26 -04:00
Jack Humbert
bb249fb239 Merge pull request #597 from Jiehong/feature/basic_keyboard_doc
feature: add basic doc about how a keyboard works on USB
2016-08-01 02:25:20 -04:00
Jack Humbert
d5baa4773d Merge pull request #596 from fredizzimo/rid_of_quick
Fix the makefile dependencies and remove quick targets
2016-08-01 02:24:53 -04:00
Depariel
a675c1aee0 added support for Infinity 1.1a (4th drop) matrix, no LED support yet 2016-07-31 23:12:16 -04:00
Stephen Christie
4b74c90cdb Added quote key. 2016-07-31 22:39:25 -04:00
Nathan Sharfi
07a631bd5a Thumb ⌫ into ⇥, numpad & into :, yank home/end
Also: add (back?) in the light-shine disabler
2016-07-31 14:21:08 -07:00
Nathan Sharfi
c2419ffecc Remove /keyboard/* files 2016-07-31 14:10:03 -07:00
Nathan Sharfi
d889648d53 Merge branch 'master' of github.com:jackhumbert/qmk_firmware
# Conflicts:
#	keyboard/ergodox_ez/keymaps/zweihander-osx/keymap.c
#	keyboard/ergodox_ez/keymaps/zweihander-osx/zweihander-osx.hex
2016-07-31 14:02:25 -07:00
Depariel
0c4177e077 fixed typo in hasu/keymap.c 2016-07-31 15:16:55 -04:00
Depariel
ceecb7c819 fixed compiling bugs in infinity_chibios.h, updated keymaps, added depariel keymap 2016-07-31 14:25:25 -04:00
Jiehong Ma
d9bef1658e feature: add basic doc about how a keyboard works on USB
This comes from the discussion on #520
2016-07-31 16:49:31 +02:00
Fred Sundvik
fda29be3e7 Travis calls the normal build target, instead of quick 2016-07-31 14:18:51 +03:00
Fred Sundvik
87a1a095d0 Fix the readme for the removed quick target 2016-07-31 14:18:00 +03:00
Fred Sundvik
a0dc622199 Remove the quick commands and add proper clean 2016-07-31 14:17:32 +03:00
Fred Sundvik
d5a947b324 Also depend on the gcc version 2016-07-31 13:49:04 +03:00
Fred Sundvik
97817a773e Generate version information to version.h
So that only the files that really needs a version are recompiled.
2016-07-31 13:42:05 +03:00
Fred Sundvik
84bfb19554 Force compilation and linking when options changes 2016-07-31 13:42:04 +03:00
Fred Sundvik
e58e9af2ab More reliable .d file generation
Also generated inside the obj dir instead of separate deps folder.
2016-07-31 13:36:30 +03:00
Fred Sundvik
abdf42573a Put the build output inside the root/.build directory 2016-07-31 13:25:49 +03:00
Fred Sundvik
f11a0275a8 Enable vpath seraching for source files only 2016-07-31 13:24:25 +03:00
Fred Sundvik
79067662c8 Better "include guards" for the makefiles
Checking for ARCH is not good enough, since some subprojects define it.
Ergodox Ez for example. The leads to running the make from
keyboards/ergodox/ez failing. The keyboard makefile will not be included
in that case, and therefore not the CUSTOM_MATRIX either.

Furthermore the output files are read from many different .build
directories, so it doesn't fail deterministically. For example on the
Travis CI the compilation passes, since there's no outdated objects that
needs recompilation.
2016-07-31 13:22:18 +03:00
Jack Humbert
b25dbc484d Merge pull request #594 from jeebak/jeebak
Jeebak's keymap for planck
2016-07-31 01:30:31 -04:00
Jack Humbert
7e000ff476 Merge pull request #590 from jeebak/in-like-flint
Add IN_LIKE_FLINT song
2016-07-31 01:30:09 -04:00
JeeBak Kim
230d313dbd Update readme.md 2016-07-30 17:30:10 -07:00
JeeBak Kim
a2ed7ce795 Add additional shortcut keymaps to TOUCHCURSOR layer 2016-07-30 12:52:51 -07:00
JeeBak Kim
db8ad8204e Add additional maps for [, and ], to LOWER 2016-07-30 12:52:51 -07:00
JeeBak Kim
b54a58859f Make RAISE layer an all numbers/arithmatic layer 2016-07-30 12:52:51 -07:00
JeeBak Kim
216efe6c99 Move reset to a less accessible location 2016-07-30 12:52:51 -07:00
JeeBak Kim
e0dd9d6af0 Add -, +, and . to RAISE 2016-07-30 12:52:51 -07:00
JeeBak Kim
6a2c681ae9 Change calls from persistant_default_layer_set() to default_layer_set() 2016-07-30 12:52:51 -07:00
JeeBak Kim
eb9416a67d PrintScreen and RGUI replace BACKLIT and Ctrl. Move BACKLIT to LOWER/RAISE layers 2016-07-30 12:52:46 -07:00
Jonathan Arnett
1876e100be Updated readme with recent changes 2016-07-30 14:37:54 -04:00
Jack Humbert
17bd4ac062 Updated my keymap 2016-07-30 14:07:27 -04:00
JeeBak Kim
984fc2b630 Media keys for all the "regular" layers 2016-07-30 10:13:50 -07:00
JeeBak Kim
7209310d1b Add mouse layer, and remove default arrow keys (touchcursor only, now) 2016-07-30 10:13:50 -07:00
JeeBak Kim
a6bae9fb07 Add numbers to _RAISE 2016-07-30 10:13:49 -07:00
JeeBak Kim
6baf77d8fb Move _RAISE symbols to _LOWER 2016-07-30 10:13:49 -07:00
JeeBak Kim
ad7e4af45c Tap for Enter, hold for Shift 2016-07-30 10:13:49 -07:00
JeeBak Kim
b5d77440b6 Add personalized TouchCursor layer 2016-07-30 10:13:49 -07:00
JeeBak Kim
eb1a06d3ae Tap for Esc, hold for Control 2016-07-30 10:13:44 -07:00
Seth Chandler
a6ec5fa74a rebase 2016-07-30 10:46:13 -04:00
Seth Chandler
694567f799 update makefile 2016-07-30 10:42:57 -04:00
Seth Chandler
a01d703a58 initial commit of sethbc keymap 2016-07-30 10:42:57 -04:00
Joshua T
cf795a6f93 Moved PREVENT_STUCK_MODIFIERS to config.h 2016-07-30 09:19:17 -05:00
Joshua T
0064f1f84c Moved my Ergodox keymap to match upstream changes 2016-07-30 08:46:01 -05:00
Joshua T
e9a501d447 Merge remote-tracking branch 'upstream/master' 2016-07-30 08:41:22 -05:00
JeeBak Kim
7d0345ef25 Add IN_LIKE_FLINT song 2016-07-30 01:52:33 -07:00
JeeBak Kim
f78a994355 Add "jeebak" keymap folder as a copy of the "default" folder 2016-07-30 00:16:04 -07:00
Jack Humbert
7775f3e4b3 Merge pull request #589 from algernon/h/ergodox_ez-vs-ergodox
Update some obsolete references
2016-07-30 02:53:29 -04:00
Gergely Nagy
8a9bf1f165 Update some obsolete references
Some links were still pointing to `/keyboards/ergodox_ez`, while the
directory is `/keyboards/erdogox` now.

Not all references have been updated, and some of the text here and
there may need updating to mention the ErgoDox Infinity too, but that's
out of the scope for this quick fix.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-30 08:37:30 +02:00
Stephen Christie
5f2d3f27de Moved CapsLk, ScrollLk, and NumLk to Adjust layer 2016-07-30 00:56:43 -04:00
Jack Humbert
0b7557b60f Merge pull request #587 from fredizzimo/documentation_quick_fix
Fix the quick aliases documentation section
2016-07-29 22:33:29 -04:00
Jack Humbert
063983639d Merge pull request #503 from fredizzimo/ergodox_subproject
Add both Ergodox EZ and Infinity Ergodox as sub-projects of Ergodox
2016-07-29 22:32:27 -04:00
Fred Sundvik
7d55951050 Fix the quick aliases documentation section
Also move all keyboard customization documentation under the
"Going Beyond the keycodes" heading.
2016-07-29 22:47:35 +03:00
Fred Sundvik
566c79554e Small fix for infinity include guard 2016-07-29 21:09:42 +03:00
Fred Sundvik
6e8a5aca9d Fix typo in the readme. 2016-07-29 21:09:41 +03:00
Fred Sundvik
401dd09077 A couple of more Ergodox readme fixes 2016-07-29 21:09:40 +03:00
Fred Sundvik
c65da1f208 Unify the ErgoDox EZ and Infinity documentation 2016-07-29 21:09:39 +03:00
Fred Sundvik
44cefcb40a Refer to the right path in the readme 2016-07-29 21:09:38 +03:00
Fred Sundvik
349f189e83 Move Ergodox readme from ez subfolder to parent 2016-07-29 21:09:37 +03:00
Fred Sundvik
ad416fb1a3 Include the main Makefile before including Ergodox infinity drivers 2016-07-29 21:09:37 +03:00
Fred Sundvik
592ef7c6f0 Move Infinity Ergodox drivers to subproject, and fix makefile 2016-07-29 21:09:36 +03:00
Fred Sundvik
37052a53f1 Remove the Infinity Ergodox default keymap 2016-07-29 21:09:35 +03:00
Fred Sundvik
650298cec3 Cleanup the townk_osx config.h and make files 2016-07-29 21:09:34 +03:00
Fred Sundvik
fd7f20b029 Rename supercoder config_user to config.h
Also fixup the include path of parent config
2016-07-29 21:09:33 +03:00
Fred Sundvik
426e9ecc6f Fix config.h include guards 2016-07-29 21:09:32 +03:00
Fred Sundvik
a6577b272e Define weak matrix user function for Infinity Ergodox
So that a few keyboards, which don't use them, links properly.
2016-07-29 21:09:31 +03:00
Fred Sundvik
bf1c865c7a Speed up ChibiOS keymap compilation
By sharing the external library object files between the whole
keyboard, instead of re-compiling them for each keymap.
2016-07-29 21:09:30 +03:00
Fred Sundvik
1641743b9d Change _delay_ms to wait_ms in algernon keymap 2016-07-29 21:09:21 +03:00
Fred Sundvik
e7670f6d19 Move some of the Ergodox config settings to shared 2016-07-29 20:48:22 +03:00
Fred Sundvik
e0f28c2b10 Add empty led control functions to Infinity Ergodox
So that most keymaps compiles and links
2016-07-29 20:48:21 +03:00
Fred Sundvik
e01b4c3fd9 Most ergodox keymaps compiles on Infinity
There are linker errors due to missing led funcitonality though
2016-07-29 20:48:20 +03:00
Fred Sundvik
b0376687f4 All Ez keymaps compiles 2016-07-29 20:48:19 +03:00
Fred Sundvik
9af995c59b Initial structure for Ergodox as subprojects
Only the EZ default keymaps compiles at the moment though.
2016-07-29 20:48:04 +03:00
Erez Zukerman
30003d48f9 Merge pull request #584 from algernon/ergodox-ez/algernon
ergodox_ez: Upgrade my keymap to v1.4
2016-07-29 08:11:37 -04:00
Erez Zukerman
64e76f6ed3 Merge pull request #583 from coderkun/coderkun_neo2
Ergodox EZ: update keymap “coderkun_neo2”
2016-07-29 08:10:46 -04:00
Erez Zukerman
3c235b4bf9 Merge pull request #580 from MatsLanGoH/patch-1
Fixed a typo
2016-07-29 08:09:05 -04:00
Gergely Nagy
f82437f08e ergodox_ez: Upgrade my keymap to v1.4
* When toggling the key logging on or off, the LEDs will do a little dance.
* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
* The `-`/`_` key was turned into a tap-dance key too.
* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-29 12:24:33 +02:00
coderkun
3ace37271b disable sleep LED 2016-07-29 11:28:37 +02:00
coderkun
70755d6614 complete labels for modifiers in keymap schema 2016-07-29 11:07:50 +02:00
coderkun
08239aadea use Ergodox EZ’s third LED for “scroll lock” 2016-07-29 11:07:50 +02:00
coderkun
61fbb47eb6 fix grave (GRV) and acute (ACUT) accents 2016-07-29 11:06:18 +02:00
Stephen Christie
c018743729 Connected all layers through Adjust layer 2016-07-29 00:08:48 -04:00
Matthias
e8f7038959 Fixed a typo
Fixed a typo in line 738 'void martix_init' to 'void matrix_init'
2016-07-29 10:02:59 +09:00
Jack Humbert
7559edc6e6 Merge pull request #578 from 0xdec/master
0xdec Preonic keymap
2016-07-28 16:34:34 -04:00
Jack Humbert
9b5edbdce9 Merge pull request #577 from hot-leaf-juice/master
Pull request to include my keymap if you want it!
2016-07-28 16:34:16 -04:00
Jack Humbert
16f8426fe2 Merge pull request #573 from algernon/f/make-all-stop-on-error
tmk_core/rules.mk: Make PRINT_ERROR* stop on error
2016-07-28 16:32:37 -04:00
Jordi Orlando
3b39910cb9 Create 0xdec Preonic keymap
An ergonomically optimized Colemak keymap for the grid-layout Preonic
2016-07-28 14:36:20 -05:00
Stephen Christie
6567fa1ebe Fixed Function keys (Impossible layout) 2016-07-28 14:57:45 -04:00
Stephen Christie
a4e5a4d566 Modified Qwerty, created Qwerty with numbers 2016-07-28 13:49:25 -04:00
Christopher Browne
2d59c97ec1 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-28 12:42:21 -04:00
Jack Humbert
80667e898a Merge pull request #572 from algernon/f/tap-dance-debug
tap-dance: Add some debugging support
2016-07-28 12:28:30 -04:00
Jack Humbert
e5ac0e8369 Merge pull request #570 from sethbc/fix_bone2planck_build
Fix bone2planck build
2016-07-28 12:27:46 -04:00
Jack Humbert
a6d279a343 Merge pull request #569 from sethbc/fix_stanleylai_warnings
kill warnings filling up travis buildlog
2016-07-28 12:27:11 -04:00
Jack Humbert
36df9fd3fd Merge pull request #568 from sethbc/fix-colemak-osx-pc-no
update NO_AMP to NO_AMPR
2016-07-28 12:26:43 -04:00
Jack Humbert
f96a2a74ea Merge pull request #566 from SmackleFunky/master
Allow toggling out of plover layer
2016-07-28 12:26:11 -04:00
Jack Humbert
9171ce1d17 Merge pull request #559 from Talljoe/fix-compiler-warning
Fix compiler warning when PREVENT_STUCK_MODIFIERS is enabled.
2016-07-28 12:24:42 -04:00
Jack Humbert
8d98f37fbb Merge pull request #564 from mazinbokhari/master
Move to keyboards
2016-07-28 12:24:03 -04:00
Callum Oakley
1eeceee355 Added readme.md for custom layout. 2016-07-28 12:15:55 +01:00
Toni
684d869fab added homerow-ish brackets 2016-07-28 11:58:53 +02:00
Callum Oakley
9822b9f743 Added custom keymap.
Added custom keymap.
2016-07-27 21:18:19 +01:00
Toni
6ff8a81520 first try ar adding the parenthesis mess for german iso 2016-07-27 21:11:55 +02:00
Toni
9f21c0aa06 Merge remote-tracking branch 'origin/master' into iso_split_rshift
merge with master
2016-07-27 20:35:13 +02:00
Christopher Browne
911d0a040e Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-27 12:57:54 -04:00
Gergely Nagy
b21e8b97ac tap-dance: Add some debugging support
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-27 14:49:19 +02:00
Gergely Nagy
dd77054790 tmk_core/rules.mk: Make PRINT_ERROR* stop on error
Instead of `&& false`, explicitly `exit 1` to make the rules using these macros
fail. This fixes #571, and likely breaks Travis badly.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-27 08:53:05 +02:00
Seth Chandler
180a3da44d remove unnecessary includes 2016-07-27 02:32:15 -04:00
Seth Chandler
95ef3f864e fix numerous errors in bone2planck keymap 2016-07-27 02:30:17 -04:00
Seth Chandler
368d0bdf68 kill warnings filling up travis buildlog 2016-07-27 02:21:09 -04:00
Seth Chandler
13bb3a7379 update NO_AMP to NO_AMPR 2016-07-27 02:06:19 -04:00
SmackleFunky
fdd07991de Allow toggling out of plover layer 2016-07-27 04:44:24 +00:00
Mazin Bokhari
3fd1c9d72b Move to keyboards 2016-07-26 22:43:04 -05:00
Stephen Christie
57952949fe General table cleanup. 2016-07-26 23:33:21 -04:00
Erez Zukerman
93f366fa7d Merge pull request #562 from michaelklos/doc
Added Tap Dance Example
2016-07-26 21:54:10 -04:00
Erez Zukerman
685c8ba64c Merge pull request #533 from mazinbokhari/master
Add my layout optimized for working in emacs, vim, command line, etc.
2016-07-26 21:52:39 -04:00
Michael Klos
7e69de061a Added Tap Dance Example
Added (simple) Tap Dance example implementation steps.
2016-07-26 18:41:35 -04:00
Stephen Christie
ff8136b883 Modified Plover layer for Impossible's home position. 2016-07-26 17:39:21 -04:00
Stephen Christie
465cf08c63 Removed unused layers (keeping QWERTY for later/reference) 2016-07-26 17:37:56 -04:00
Stephen Christie
fb2a7d787a Removed unused layers (left QWERTY for later use/reference) 2016-07-26 17:29:19 -04:00
Christopher Browne
2a349e96bb Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-26 16:35:44 -04:00
Jordi Orlando
ea2d2f5d58 Simplify HSV->RGB calculation
De-dupe repeated code
2016-07-26 15:31:22 -05:00
Jack Humbert
b66131eeb5 disable midi by default 2016-07-26 15:59:26 -04:00
Jordi Orlando
899c88cd8b Increament -> increment 2016-07-26 14:46:30 -05:00
Jordi Orlando
3a860c4bc2 Clean up rgblight.c
Fix formatting issues, clarify comments
2016-07-26 14:43:45 -05:00
Jason Janse van Rensburg
a41a7a9100 include base config.h instead of copying it 2016-07-26 16:19:34 +02:00
Jason Janse van Rensburg
8244fa40cc added config.h, and missing Ins of filpped navigation layer 2016-07-26 14:58:17 +02:00
Joshua T
5607b716ba Merge remote-tracking branch 'upstream/master' 2016-07-26 01:49:24 -05:00
Joshua T
876a6bdd4c Modified Atreus extend and Ergodox.
Atreus: Removed home row Shift. It's under the thumb anyway. Also replaced dual modifier keys with macro keys (cut, copy, paste, undo).

Ergodox: Made Colemak the default layer instead of Dvorak. Also began the process of bringing it in line with the Atreus layout I've been working on.
2016-07-26 01:44:57 -05:00
erlo muvman
26510e6de8 Delete default.png 2016-07-25 20:16:11 -05:00
erlo muvman
3779e1988e Delete default_highres.png 2016-07-25 20:16:07 -05:00
erlo muvman
97efac0f1c Update readme.md 2016-07-25 20:14:19 -05:00
erlo muvman
6e2d7ebd80 Update readme.md 2016-07-25 20:12:48 -05:00
erlo muvman
048e8b7849 Update readme.md 2016-07-25 20:06:58 -05:00
Jason Janse van Rensburg
27d27b179b Merged branch master into bone2planck 2016-07-25 22:55:28 +02:00
Jason Janse van Rensburg
3e462fac31 added missing F keys in flipped layer 2016-07-25 20:21:32 +02:00
Christopher Browne
17a7570e08 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-25 12:55:46 -04:00
Jack Humbert
f9aadd17e8 Merge pull request #558 from lindhe/master
Fix misspelled command in Norwegian helper
2016-07-25 11:16:54 -04:00
Andreas Lindhé
283ebbe142 Change Nordic ampersand code to match the English
Changed from "NO_AMP" to "NO_AMPR" since the KC one is "KC_AMPR"
2016-07-25 12:50:56 +02:00
Toni
5e2e8c89e8 Merge remote-tracking branch 'origin/master' into iso_split_rshift
whatever
2016-07-25 12:49:38 +02:00
Andreas Lindhé
b6fa762234 Fix misspelled command in Norwegian helper 2016-07-25 11:29:54 +02:00
Jack Humbert
8b94e26d7c Fixes midi functionality 2016-07-24 22:07:43 -04:00
Jack Humbert
4aa7d2e206 Merge pull request #554 from robertdale/music-recording-documentation
Added music recording/playing doc
2016-07-24 21:58:23 -04:00
Jack Humbert
24bd931962 Merge pull request #552 from robertdale/music-play-fix
Fixes issue #551 - ensure there's a recording to play before playing
2016-07-24 21:58:01 -04:00
Jack Humbert
41f15d8c34 Merge pull request #550 from Darthabel/fix_bepo
Fix some errors in bepo mapping
2016-07-24 21:57:38 -04:00
Jack Humbert
46f84157ce Merge pull request #549 from locksmithdon/patch-1
Added LEADER_EXTERNS() call to readme.
2016-07-24 21:57:15 -04:00
Jack Humbert
670327f1d0 Merge pull request #548 from CommandLineDesign/CMD-Preonic
CMD keymap for Preonic
2016-07-24 21:56:50 -04:00
Jack Humbert
384d9cd6bb Merge pull request #546 from sethbc/satan-cleanup
Satan cleanup
2016-07-24 21:56:23 -04:00
Erez Zukerman
4885225159 Merge pull request #534 from willwm/teckinesis
Teckinesis for ErgoDox EZ
2016-07-24 18:04:59 -07:00
Will Wolff-Myren
f4cb84c940 Remove images, per @ezuk request. =) 2016-07-24 14:33:17 -07:00
Joe Wasson
f9956c2aac Fix compiler warning when PREVENT_STUCK_MODIFIERS is enabled. 2016-07-24 12:56:28 -07:00
Erez Zukerman
1e944a4991 Merge pull request #542 from algernon/f/hold-the-dance
Tap-dance: support for holding keys
2016-07-24 11:36:05 -07:00
Erez Zukerman
36f2e22283 Merge pull request #535 from algernon/ergodox-ez/algernon
ergodox_ez: Update my keymap to v1.3
2016-07-24 11:34:33 -07:00
Robert Dale
812007a241 added music recording/playing doc 2016-07-24 10:23:33 -04:00
Robert Dale
3ea738e450 ensure there's a recording to play before playing; also enables the LGUI button to play a tone 2016-07-24 10:00:39 -04:00
Vivien Alger
7b4d30ee50 Fix some errors in bepo mapping 2016-07-24 10:57:49 +02:00
Don Smith
a4034b75c0 Added LEADER_EXTERNS() call.
This seems to be needed in most cases.
2016-07-24 19:18:22 +12:00
Jonathan Lucas
e6a41e43aa Updated Readme 2016-07-23 21:26:01 -07:00
commandlinedesign
c826bcfc39 Did a derp and forgot to set Trans on Arrow layer 2016-07-23 21:08:00 -07:00
commandlinedesign
4480a74a4b Arrow key fn layer shouldnt overwrite Ctrl key. Better Print Screen position 2016-07-23 21:02:23 -07:00
Jason Janse van Rensburg
4e0bf283f6 added readme 2016-07-24 05:11:07 +02:00
commandlinedesign
c1fb82623c Tested, resolved Mouse issue, resolved numpad issue 2016-07-23 20:02:45 -07:00
Jason Janse van Rensburg
1bfd57e234 moved insert 2016-07-24 05:02:06 +02:00
Jason Janse van Rensburg
58f092cf87 moved ctrl 2016-07-24 04:52:35 +02:00
commandlinedesign
fbafb9449e Resolved errors 2016-07-23 19:32:02 -07:00
Jason Janse van Rensburg
34bce6f206 fixed stupid errors 2016-07-24 04:08:40 +02:00
Jason Janse van Rensburg
62d4ce73ec Merged branch master into bone2planck 2016-07-24 04:08:01 +02:00
Jonathan Lucas
9b3708f830 Init Readme
This needs a better description.
2016-07-23 18:52:52 -07:00
Jonathan Lucas
3c7075011b Create Makefile
This is untested, use caution.
2016-07-23 18:50:41 -07:00
Jonathan Lucas
b5761df57b Create CMD-Preonic Keymap
This is very Alpha-Mode, and has not been tested or even Made yet.
2016-07-23 18:47:36 -07:00
Jonathan Lucas
4059a16118 Merge pull request #1 from jackhumbert/master
Update from parent
2016-07-23 18:44:01 -07:00
Seth Chandler
75f0922711 fix typo in readme and satan.h 2016-07-23 20:55:20 -04:00
Seth Chandler
ef533be2d6 cleanup default layout 2016-07-23 20:52:27 -04:00
Seth Chandler
81fe3d962c update sethbc keymap 2016-07-23 20:37:41 -04:00
Stephen Christie
723857bf8a Table for Fn
layer.
2016-07-22 18:19:07 -04:00
Stephen Christie
a39eaa7fb5 Switched to natural arrows, put ENTER on middle Fn, swapped Shift and CTRL. 2016-07-22 17:46:23 -04:00
Toni
5631f1436c converted funtions to QMK aliases 2016-07-22 11:17:57 +02:00
Gergely Nagy
13385f5691 readme.md: Update the tap dance docs
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-22 09:10:17 +02:00
Gergely Nagy
fca34e2ad6 readme.md: algernon is strictly lowercase
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-22 09:10:17 +02:00
Gergely Nagy
44e16ffc80 tap-dance: Code cleanup
Removes a number of duplicated code, by passing actions around instead
of keycodes, so the various dance action functions do not have to look
up the action, but the caller does that for them.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-22 09:10:17 +02:00
Gergely Nagy
ce8cc9219f tap-dance: Support user_data for the callbacks
Refactored the code a little, so all callbacks now receive a `user_data`
pointer, which can be anything. As an example, the key pairs from
`ACTION_TAP_DANCE_DOUBLE` now use this, and custom, built-in functions.

This makes it easier to extend the tap dance functionality, and also
simplifies the code a little.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-22 09:10:17 +02:00
Gergely Nagy
70e42489de tap-dance: Support for holding keys
With this change, tap dance will now store the pressed state of the
tap-dance key, and allow one to make an action sooner, while the key is
still held, and only unregister when the key is released.

The registration must happen in the `on_dance_finished` callback, while
unregistering goes to `on_reset`. The surrounding code makes sure not to
call either multiple times.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-22 09:10:17 +02:00
Toni
197244e47f more cosmetic changes (whitespace) 2016-07-22 08:14:08 +02:00
Toni
c1f014b1dd purely cosmetic changes 2016-07-22 08:13:06 +02:00
Jack Humbert
8e1d96983a Merge pull request #543 from VoodaGod/bone2planck
updated bone2planck
2016-07-21 21:29:54 -04:00
Jack Humbert
66fed12c98 Merge pull request #541 from milestogo/master
initial kinisis advantage build
2016-07-21 21:05:06 -04:00
Jack Humbert
5249b4451c Merge pull request #540 from replicaJunction/feature-atreus-keymapFunction
Adjusted Atreus KEYMAP() function.
2016-07-21 21:04:45 -04:00
Jack Humbert
fb0bba5981 Merge pull request #538 from robertdale/preonic-map-correction
Preonic: Corrected the ascii layout to match the coded layout
2016-07-21 21:03:56 -04:00
Jack Humbert
d5d2eb8b5a Merge pull request #536 from pvinis/debug-doc
add some debugging doc, after i found out how to print debug messages
2016-07-21 21:02:37 -04:00
Jack Humbert
6f9f9baff4 Merge pull request #530 from sethbc/master
Misc. fixes from sethbc
2016-07-21 21:01:35 -04:00
Jack Humbert
26546f995f Merge pull request #529 from CommandLineDesign/CMD60-newKeymap
Added CMD60 keymap
2016-07-21 20:59:02 -04:00
Jack Humbert
2bed835a33 Merge pull request #525 from edasque/master
Added Docker as a simple way to build firmwares
2016-07-21 20:58:39 -04:00
Jack Humbert
fc9f128648 Merge pull request #522 from exiva/extrakey-macfix
Fix OS X Recognizing keyboard as Mouse/Tablet
2016-07-21 20:57:54 -04:00
Jack Humbert
fc4ab870f5 Merge pull request #521 from exiva/makefile-wait
Make DFU wait for bootloader
2016-07-21 20:57:32 -04:00
Jack Humbert
940358ed4f Merge pull request #518 from jakllsch/upstream
keymap_extras changes
2016-07-21 20:56:54 -04:00
Jack Humbert
62a6d3a6f5 Merge pull request #516 from pvinis/tap-dance-anyway
Tap dance anyway
2016-07-21 20:56:24 -04:00
Stephen Christie
eeb100f87d First draft of the 'impossible' layout. 2016-07-21 18:19:08 -04:00
milestogo
24e4e6dd18 adding traveller keyboard 2016-07-20 21:12:00 -07:00
Jason Janse van Rensburg
b0e9dbecee fixed include paths 2016-07-20 17:05:23 +02:00
Jason Janse van Rensburg
32f5b34ad2 reformat 2016-07-20 16:58:10 +02:00
Jason Janse van Rensburg
3d7244e604 updated bone2planck 2016-07-20 16:42:09 +02:00
Joshua T
15ee180f0e Created readme and added screenshots 2016-07-20 00:38:56 -05:00
milestogo
1984861338 initial kinisis advantage build 2016-07-19 22:35:38 -07:00
Joshua T
8ee9c486fd Adjusted Atreus KEYMAP() function.
This change adjusts the KEYMAP() function to provide a more visual representation of the key positions on the keyboard. Previously, keymaps have been defined directly using arrays for the Atreus keyboard. While this works, it doesn't utilize the helpful KEYMAP() function at all to allow the user to visually position the key codes for ease of editing. See the Ergodox-EZ KEYMAP() function and layouts for a great example of how this can work.

This change should not break any existing Atreus layouts. At the time of this commit, there are two existing layouts for the Atreus board, and neither use the KEYMAP() function.
2016-07-19 17:46:03 -05:00
Joshua T
2a4947b28b Modified Atreus layout to account for keymap() function 2016-07-19 17:39:15 -05:00
Joshua T
8cb2cf375b Adjusted Atreus KEYMAP() function.
This change adjusts the KEYMAP() function to provide a more visual representation of the key positions on the keyboard. Previously, keymaps have been defined directly using arrays for the Atreus keyboard. While this works, it doesn't utilize the helpful KEYMAP() function at all to allow the user to visually position the key codes for ease of editing. See the Ergodox-EZ KEYMAP() function and layouts for a great example of how this can work.

This change should not break any existing Atreus layouts. At the time of this commit, there are two existing layouts for the Atreus board, and neither use the KEYMAP() function.
2016-07-19 17:33:10 -05:00
Joshua T
377bcb00fb Added Gaming layer and removed Dvorak
Also added tap/hold functions on central keys
2016-07-19 17:01:21 -05:00
Pavlos Vinieratos
4e6a8627d8 add a couple of comments 2016-07-19 18:18:57 +02:00
Pavlos Vinieratos
d5daec2a58 on_each_tap_fn is called on tap down and tap up 2016-07-19 18:18:57 +02:00
Pavlos Vinieratos
2e815ad9a2 add link to hid_listen 2016-07-19 17:34:23 +02:00
Robert Dale
9c26498f49 added Midi On/Off; Enter is actually transparent 2016-07-19 08:43:41 -04:00
Robert Dale
47223ebee4 Corrected the ascii layout to match the coded layout 2016-07-19 08:00:03 -04:00
Toni
5cd6d607fc changed ctrl back to enter. "j" interfered with my vimming 2016-07-19 09:17:31 +02:00
Toni
1988c180e3 small cosmetic change 2016-07-19 09:16:55 +02:00
Pavlos Vinieratos
6eb21d2680 add some debugging doc, after i found out how to print debug messages 2016-07-19 00:07:50 +02:00
Pavlos Vinieratos
d8a979b6d5 add a bit of documentation 2016-07-19 00:01:11 +02:00
Pavlos Vinieratos
dda2fd6ff3 in the default case, it should be called if there is actually a tap
dance happening, and in the normal case, it should be called when the
tap down is happening.
2016-07-18 23:34:02 +02:00
Christopher Browne
82f768e6c0 Notes about changes 2016-07-18 16:07:00 -04:00
Toni
4b32a161d0 renamed keymap 2016-07-18 10:50:45 +02:00
Toni
36242d5ac5 reduced makefile size. not so much needed due to "inheritance" 2016-07-18 10:50:19 +02:00
Gergely Nagy
53eb36c085 ergodox_ez: Update my keymap to v1.3
This updates my ErgoDox EZ layout to v1.3, which has the following
noteworthy changes:

* Added support for logging keys, by pressing `LEAD d`. Also included is
  a tool to generate a **heatmap** out of the logs.
* The arrow and navigation keys were rearranged again, and now require
  an additional key being held to activate. See the **base layer** for
  an image that shows where arrows are.
* The **experimental** layer has been redone, and is now
  called **ADORE**, and as such, can be enabled by `LEAD a` now.
* Switching between Dvorak and ADORE is now persisted into EEPROM, and
  survives a reboot.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-18 08:57:30 +02:00
Will Wolff-Myren
3c4620bf81 Update readme.md
* Markdown cleanup
2016-07-17 15:08:04 -07:00
Will Wolff-Myren
8fb4074578 Update readme.md
* Updated layout images, json from Keyboard Layout Designer
* Added links to Keyboard Layout Designer templates.
* Added images of TECK, Kinesis layouts.
2016-07-17 15:04:50 -07:00
Will Wolff-Myren
ea2b1670f6 Update description comment. 2016-07-17 14:56:37 -07:00
Will Wolff-Myren
5bf40bfb36 [MEDIA]: Remove Power, Sleep, Mail, MyComp
I kept hitting these on accident while attempting to move the cursor or
mouse. =P
2016-07-17 14:19:22 -07:00
Will Wolff-Myren
ecc0fce210 [BASE]: Meh, Hyper now have symbols on both sides
Left: MEH_T(KC_BSLS),ALL_T(KC_SLSH)
Right: ALL_T(KC_LBRC),MEH_T(KC_RBRC)
2016-07-17 14:16:31 -07:00
Toni
11bf8355cf new modifier "J" is crtl 2016-07-17 23:13:49 +02:00
Will Wolff-Myren
e9453b3fdc Update Base Layer comment to match new layout. 2016-07-17 14:08:22 -07:00
Will Wolff-Myren
11f8d167ec [BASE]: KC_MINS -> KC_GRV 2016-07-17 14:07:14 -07:00
Will Wolff-Myren
e900c39669 RSpec: KC_EQL -> KC_MINS 2016-07-17 14:01:41 -07:00
Will Wolff-Myren
973ea2f917 LSpec: KC_GRV -> KC_EQL 2016-07-17 13:58:43 -07:00
Mazin Bokhari
b9102b4bfa Update readme. My layout optimized for emacs & vim 2016-07-17 15:57:23 -05:00
Mazin Bokhari
964c064123 Update readme. My layout optimized for emacs & vim 2016-07-17 15:53:42 -05:00
Will Wolff-Myren
abe8bfa3a6 Update .gitignore to include VSCode setting. 2016-07-17 13:50:36 -07:00
Mazin Bokhari
6cd2b48fed Merge branch 'master' of https://github.com/mazinbokhari/qmk_firmware 2016-07-17 15:35:05 -05:00
Mazin Bokhari
1336b0198c Add caps lock; sucks that there is no light for it... 2016-07-17 15:32:53 -05:00
Mazin Bokhari
cb25f1ad93 Remove more keys 2016-07-17 14:56:32 -05:00
Mazin Bokhari
cfa5a475d0 Move dot in symbol layer 2016-07-17 14:44:37 -05:00
Mazin Bokhari
7a5b7233f2 Move modifier kyes around 2016-07-17 14:43:21 -05:00
Mazin Bokhari
266eacc9ec Remove more unnecessary buttons 2016-07-17 14:29:37 -05:00
Mazin Bokhari
76b5dc84af Add page up/down and home/end to arrow 2016-07-17 14:11:08 -05:00
Mazin Bokhari
f83591cff0 Change visual 2016-07-17 14:02:46 -05:00
Mazin Bokhari
742d6dbdc2 Reorganize media keys 2016-07-17 13:55:10 -05:00
Mazin Bokhari
ec505d07d2 Remove unnecessary modifiers 2016-07-17 13:35:47 -05:00
Mazin Bokhari
d7b1cee2df Edit visual keymap 2016-07-17 13:19:11 -05:00
Mazin Bokhari
f76f5af853 Add arrow keys to layer 2016-07-17 13:14:04 -05:00
Mazin Bokhari
6dc5aba315 Minor changes 2016-07-17 13:09:54 -05:00
Mazin Bokhari
8c8f2f898b Add empty arrow layer, reorder some keys in media, map layer keys 2016-07-17 13:02:54 -05:00
Seth Chandler
d40d18ab1a don't believe the hex files are posted to qmk.fm 2016-07-17 10:37:45 -04:00
Toni
db7aa91e76 helper file for me to stay up-to-date with master 2016-07-17 15:10:14 +02:00
Toni
de96513ff2 changes needed for a ISO satan PCB including a split right-shift key 2016-07-17 14:57:56 +02:00
Seth Chandler
f6aeaac5b5 update more non-existent readmes for QMK.fm 2016-07-17 03:53:34 -04:00
Seth Chandler
0a2653bac8 update broken link 2016-07-17 03:38:53 -04:00
Seth Chandler
68b1affbbd update audio links 2016-07-17 03:32:02 -04:00
Seth Chandler
45414fed7b update tmk link 2016-07-17 03:28:48 -04:00
Seth Chandler
a95ab37162 update link to Vagrant docfile 2016-07-17 03:24:36 -04:00
Seth Chandler
38508180c7 update readmes in certain directories to work with qmk.fm 2016-07-17 03:24:00 -04:00
Pavlos Vinieratos
d3091faf36 change naming, and remove extraneous definition 2016-07-17 08:28:03 +02:00
Seth Chandler
6289332759 add custom makefile for sethbc keymap 2016-07-16 23:52:02 -04:00
Seth Chandler
f954223749 update makefile to default to no virtual dip switches 2016-07-16 23:51:27 -04:00
Seth Chandler
dddaebfa98 update readme images 2016-07-16 23:41:20 -04:00
Jonathan Lucas
2877b858d3 Fix erroneous character
Must have been keeb testing :)
2016-07-16 20:38:55 -07:00
Jonathan Lucas
f13f48a35e Added CMD60 keymap 2016-07-16 20:24:14 -07:00
Joshua T
0642126720 Merge branch 'master' of https://github.com/replicaJunction/qmk_firmware 2016-07-15 18:02:38 -05:00
Joshua T
243ae75256 Added default layer switch QWERTY to Colemak 2016-07-15 18:02:23 -05:00
Joshua T
c5768a5f32 Added default layer switch QWERTY to Colemak 2016-07-15 17:49:14 -05:00
Joshua T
77377e2784 Fixed a merge conflict 2016-07-15 17:44:39 -05:00
Pavlos Vinieratos
f3b56701ed add an anyway and a reset callback
when using tap dance, we have the `regular` callback that is called on
the last tap. this commit adds an `anyway` callback that is called on
every tap, and a `reset` callback that is called on reset of the tap
dance taps.
2016-07-16 00:04:12 +02:00
Pavlos Vinieratos
1a7e954f9f in case its NULL 2016-07-16 00:04:12 +02:00
Erik Dasque
aa2a79bbfa Further simplyfying the docker usage
We'll be able to change the image user name if we set up the initial repo to trigger Docker images rebuilds on hub.docker.com
2016-07-15 13:26:34 -04:00
Erik Dasque
0446263935 Adding Docker build system & documentation 2016-07-15 12:55:40 -04:00
Christopher Browne
ba0d81f270 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-15 11:19:52 -04:00
Travis La Marr
d48a4cf1eb Fix OS X Recognizing keyboard as Mouse/Tablet
Modified the LUFA USB HID Descriptor to change the logical/usage
minimums for System Control from 0x01 (Mouse) to 0x81 (System Power
Down), this fixes OS X recognizing the Planck as having a mouse and
tablet, even with mousekeys off.
2016-07-15 10:41:32 -04:00
Travis La Marr
0b8c448b30 Make DFU wait for bootloader
Added a loop for waiting for the keyboard to be put in bootloader mode,
rather than failing out. Makes building keymaps easier.
2016-07-15 10:28:23 -04:00
Joshua T
42843d9b62 Merge remote-tracking branch 'upstream/master' 2016-07-15 01:01:19 -05:00
Jonathan A. Kollasch
4278d88615 keymap_dvorak.h: add missing shifted keys, fix whitespace 2016-07-14 11:32:43 -05:00
Jonathan A. Kollasch
25938a09a6 extra_keymaps: use RALT() instead of 0x1400 for AltGr 2016-07-14 11:13:35 -05:00
Jonathan A. Kollasch
010dd13084 keymap_extras: add newline at end of files 2016-07-14 11:10:05 -05:00
Jack Humbert
9ecf9073b9 Merge pull request #489 from Skrymir/master
New ergodox-ez layout
2016-07-14 10:59:23 -04:00
Jack Humbert
8bbbbcddf9 Merge pull request #515 from pvinis/reset-function
extract reset keyboard into a function
2016-07-14 10:53:51 -04:00
Will Wolff-Myren
76469ebbcf Replaced ordinary-media.{png|json} with new media layout 2016-07-14 01:22:15 -07:00
Will Wolff-Myren
1b776f0f33 Replaced ordinary-symbol.{png|json} with new base layout. 2016-07-14 01:03:45 -07:00
Will Wolff-Myren
b587245430 Replaced ordinary-base.{png|json} with new base layout. 2016-07-14 00:39:01 -07:00
Will Wolff-Myren
825aead3bd Replaced readme.md with stub
(incl. reference to original layout)
2016-07-14 00:38:00 -07:00
Joshua T
92e7291ad7 Corrected merge conflict 2016-07-13 22:41:02 -05:00
Joshua T
f90d89458c Created replicaJunction keymaps. 2016-07-13 22:37:34 -05:00
Will Wolff-Myren
8f3cdea357 Created "teckinesis" keymap folder
(Based on "ordinary" keymap by Nicholas Keene)
2016-07-13 13:17:55 -07:00
Pavlos Vinieratos
a28a6e5b79 extract reset keyboard into a function
that makes it easy to call reset_keyboard() from a function in a keymap
2016-07-13 16:38:02 +02:00
Joshua Colbeck
68ceffe53e Merge pull request #2 from jackhumbert/master
Pull from upstream
2016-07-12 23:14:30 -05:00
Christopher Browne
f4fbfe6e54 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-12 11:57:15 -04:00
Christopher Browne
477ed703c8 I did not like Space Cadet paren; it jumps in in way too many extra cases 2016-07-12 11:57:05 -04:00
Joshua T
32725dae5b Created replicaJunction keymaps. 2016-07-11 17:49:12 -05:00
Jack Humbert
a998a48673 Merge pull request #477 from Smilliam/master
Canceling Space Cadet state with opposite shift key
2016-07-11 09:14:43 -04:00
Jack Humbert
076de6fa75 Merge pull request #506 from stanleylai/master
Added my custom keymap for Satan
2016-07-11 09:14:11 -04:00
skullydazed
d5102c7715 Merge pull request #507 from ruiqimao/master
fixed clueboard LED pin assignments and matrix documentation
2016-07-11 02:01:17 -07:00
Ruiqi Mao
cb0e102adb fixed clueboard LED pin assignments and matrix documentation 2016-07-11 01:18:35 -07:00
Smilliam
5e58e2281a amended extraneous file edits 2016-07-10 19:10:00 -07:00
Smilliam
b12fe6abb2 Made rollover behavior for space cadet optional 2016-07-10 19:04:01 -07:00
Stanley Lai
753cbee5c0 Added my custom keymap for Satan 2016-07-10 12:07:56 -07:00
Jack Humbert
4081fc4d8f Merge pull request #505 from fredizzimo/documentation_fix
Remove out of place documentation, caused by ChibiOS merge
2016-07-10 14:02:10 -04:00
Fred Sundvik
c7728780de Remove out of place documentation, caused by ChibiOS merge 2016-07-10 20:00:04 +03:00
Jack Humbert
b0300d8d8f Merge pull request #502 from robotmaxtron/master
Adding robotmaxtron's GH60 Keymap
2016-07-09 20:55:58 -04:00
Max Whittingham
df958a2dbc Update keymap.c 2016-07-09 18:58:16 -05:00
Jack Humbert
9dc6dfbf96 Merge pull request #500 from TerryMathews/master
Establish Poker clone keymap for Satan
2016-07-09 19:19:05 -04:00
TerryMathews
4decdd2b18 Merge pull request #1 from jackhumbert/master
Catch up with jack's master
2016-07-09 16:46:00 -04:00
TerryMathews
979a0d25f0 Establish Poker clone keymap for Satan
Maps all of the side-print legends on the stock Poker II keycaps that
are feasible (doesn't support repeat rate toggling, Pmode recording).
2016-07-09 16:42:26 -04:00
Max Whittingham
1ab527a4db Cleaning up repo 2016-07-09 03:20:58 -05:00
Erez Zukerman
c444f4f702 Documents tap dance 2016-07-08 21:40:57 -04:00
Jack Humbert
4139841e9d Merge pull request #498 from fredizzimo/fix_make_dependencies
Fix make dependencies
2016-07-08 16:44:18 -04:00
Fred Sundvik
6911ead027 Use order only prerequisites to avoid re-linking
The prerequisites at the start of the build process are order-only
so that the trget don't link again. Also added as a dependency to
the compilation to force the messages to be printed at the start
2016-07-08 23:19:48 +03:00
Fred Sundvik
e8e300d5c4 Fix name of makefile dep files
The files can't start with a .dot, as the wildcard function wont
find them. So this is fixed by removing the BUILD_DIR from the
name.
2016-07-08 22:59:09 +03:00
Jack Humbert
8610481c37 Merge pull request #496 from fredizzimo/makefile_optimization
Makefile optimization
2016-07-08 12:01:32 -04:00
Fred Sundvik
1e3db59097 Fix the link target 2016-07-08 18:18:33 +03:00
Fred Sundvik
ccebceeb6f Don't run git describe for ever file that is built 2016-07-08 17:44:41 +03:00
Fred Sundvik
b86b0480d5 Speed up compilation by not using recusive make
The cleaning is done outside the targets, by checking the
requested target name.
2016-07-08 17:20:37 +03:00
Jack Humbert
b6e47f7a5f Merge pull request #494 from robbiegill/master
Port support for hhkb-jp from tmk
2016-07-08 08:35:24 -04:00
Jack Humbert
a9979c6f42 Merge pull request #493 from TerryMathews/master
Create keycodes for RGB control functions
2016-07-08 08:34:27 -04:00
TerryMathews
564c743aa0 Fix a function mismatch that was causing LEDs to not properly initialize
See #430. Name of function being called at init was updated to
led_init_ports(), but the call itself wasn't renamed.
2016-07-08 03:40:05 -04:00
TerryMathews
f7a8682226 Move return out of event if block
According to Jack, this makes the return case not be processed. Doesn't
break anything in the firmware.
2016-07-08 03:32:28 -04:00
Robbie Gill
66ffb1cb3a port missing support for hhkb-jp from tmk 2016-07-07 21:03:20 -07:00
TerryMathews
e2ec45a755 Fix cluepad and planck 2016-07-07 23:57:11 -04:00
TerryMathews
ccfa7351ad Fix compile error on Clueboard 2016-07-07 23:50:04 -04:00
TerryMathews
50c686587e Create keycodes for RGB control functions
Moves RGB controls out of the macro function and assigns them their own
keycodes:
RGB_TOG (toggle on/off)
RGB_MOD (mode step)
RGB_HUI (increase hue)
RGB_HUD (decrease hue)
RGB_SAI (increase saturation)
RGB_SAD (decrease saturation)
RGB_VAI (increase brightness)
RGB_VAD (decrease brightness)
2016-07-07 23:34:33 -04:00
Jack Humbert
e8719e10c4 Merge pull request #491 from fredizzimo/keycode_fixes
Some fixes for keycode processing
2016-07-07 13:57:39 -04:00
Fred Sundvik
a2eae81927 Fix IS_CONSUMER macro 2016-07-07 20:04:27 +03:00
Fred Sundvik
0bfb608615 Remove unhandled KC_BTLD, RESET should be used instead 2016-07-07 19:56:55 +03:00
Fred Sundvik
9870082a06 Fix the range for consumer keys 2016-07-07 19:48:39 +03:00
Jack Humbert
c1dfb636ef fixes quantum template (actually) 2016-07-07 12:22:10 -04:00
Jack Humbert
57e08eb8ba updates rgblight implementation, makes non-timer stuff compatible with audio 2016-07-07 11:33:34 -04:00
Christopher Browne
97dfbd1afc Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-07 11:13:22 -04:00
Jack Humbert
ad43d450ca Merge pull request #490 from fredizzimo/integrate_visualizer
Integrate visualizer for ChibiOS and Infinity Ergodox
2016-07-07 09:59:33 -04:00
Jack Humbert
589df84d6c corrects quantum template 2016-07-07 09:58:44 -04:00
Fred Sundvik
caedec92d2 Move the visualizer_user file to keymap folder
Also rename it to visualizer.c
2016-07-07 14:42:16 +03:00
Fred Sundvik
aaac254ebc Delete lcd_backlight_hal.c
The functionality can now be found in the infinity_erogodox.c file
instead.
2016-07-07 14:29:53 +03:00
Fred Sundvik
bcbd8f1c50 Add suspend support to the ChibiOS visualizer 2016-07-07 14:22:45 +03:00
Fred Sundvik
dae7c9bfb3 Fix the SERIAL_LINK_ENABLE macro in Visualizer
Rename from USE_SERIAL_LINK -> SERIAL_LINK_ENABLE
2016-07-07 14:12:56 +03:00
Fred Sundvik
7229751ba9 Fix visualizer crash at startup
Visualizer and serial link initialized in the wrong order.
The LED_ENABLED define wasn't set properly
uGfx is always initialized
2016-07-07 14:01:20 +03:00
Fred Sundvik
07d0d5cbe4 Makefile fixes and update of Visualizer 2016-07-07 12:46:10 +03:00
Fred Sundvik
9772e697a0 Add Infinity Ergodox display drivers 2016-07-07 12:45:34 +03:00
Josh Colbeck
ac978a50a2 Merge branch 'master' of https://github.com/Skrymir/qmk_firmware 2016-07-06 23:38:58 -05:00
Jack Humbert
21e443101f Merge pull request #484 from jackhumbert/lets-split-support
Add Let's Split support
2016-07-06 23:44:22 -04:00
Jack Humbert
a4bf46f9b1 default keymap, reset sorted out for now, added serial to makefile 2016-07-06 22:48:19 -04:00
Joshua Colbeck
e0e1c119f0 Merge pull request #1 from Skrymir/patch-1
add ergodox layout
2016-07-06 20:29:29 -05:00
Josh Colbeck
5ed673d82d Changed layer switching to momentary
corrected macro
2016-07-06 20:24:57 -05:00
Jack Humbert
c88207884b Merge branch 'master' into lets-split-support 2016-07-06 18:05:50 -04:00
Fred Sundvik
70797bb8f2 Makefile changes and files to compile Visualizer 2016-07-07 00:20:20 +03:00
Fred Sundvik
10f3a1b621 Add ugfx submodule 2016-07-07 00:17:32 +03:00
Jack Humbert
5baaf871bb Merge pull request #488 from fredizzimo/add_visualizer
Add visualizer library
2016-07-06 15:02:51 -04:00
Fred Sundvik
6c29655790 Merge commit '73d890a2c9c34b905cd5e74e7146fdd4578dcb96' into add_visualizer 2016-07-06 20:30:58 +03:00
Fred Sundvik
f727801bc6 Delete .gitmodules from visualizer 2016-07-06 20:17:16 +03:00
Fred Sundvik
9f33a5593c Add 'quantum/visualizer/' from commit 'bde869aa7ec8601459bc63b9636081d21108d1be'
git-subtree-dir: quantum/visualizer
git-subtree-mainline: 19f480992c
git-subtree-split: bde869aa7e
2016-07-06 20:15:45 +03:00
Jack Humbert
19f480992c Merge pull request #487 from fredizzimo/serial_link_ergodox
Integrate serial link support for ChibiOS and Infinity Ergodox
2016-07-06 09:48:58 -04:00
Fred Sundvik
e5726b017a Add setting of the master side to the makefile 2016-07-06 16:06:53 +03:00
Fred Sundvik
4b45deb652 Enable serial_link support for ChibiOS 2016-07-06 16:06:53 +03:00
Fred Sundvik
a7e3e4e652 Add serial_link compilation to Infinity Ergodox 2016-07-06 16:06:53 +03:00
Jack Humbert
eb6e17be6f adds eep, removes usbconfig.h 2016-07-06 09:04:04 -04:00
Jack Humbert
c6d671e54c Merge pull request #482 from fredizzimo/serial_link
Add serial link library
2016-07-06 08:56:57 -04:00
Fred Sundvik
d5e7603d55 Remove extra serial_link subdirectory 2016-07-06 13:26:20 +03:00
Fred Sundvik
c5bf090d16 Remove CGreen make files 2016-07-06 13:10:30 +03:00
Fred Sundvik
3ac52b2e76 Remove serial_link .gitignore and .gitmodules 2016-07-06 13:09:51 +03:00
Jack Humbert
3577e26fd9 fix/annotate wait_us lines 2016-07-06 00:24:31 -04:00
Jack Humbert
cb410729e6 remove uno_slave for now, even though it's freakin cool 2016-07-05 23:56:42 -04:00
Jack Humbert
dd2522ba8b add options to config.h 2016-07-05 23:52:18 -04:00
Jack Humbert
22ad6459b1 Merge branch 'master' into lets-split-support 2016-07-05 23:40:58 -04:00
Jack Humbert
ce01f88c43 images, docks, clean-up [skip ci] 2016-07-05 23:40:54 -04:00
Jack Humbert
d707738616 i2c working 2016-07-05 23:27:10 -04:00
Jack Humbert
96f44e1202 one half working 2016-07-05 18:36:02 -04:00
Fred Sundvik
639cdd363e Add 'quantum/serial_link/' from commit 'a20d513e3cdacbf6e0e70a80402497ad10166434'
git-subtree-dir: quantum/serial_link
git-subtree-mainline: 7d28d6a7bc
git-subtree-split: a20d513e3c
2016-07-05 23:27:47 +03:00
Jack Humbert
7d28d6a7bc Merge pull request #480 from fredizzimo/add_infinity_ergodox
Add infinity ergodox
2016-07-05 13:12:01 -04:00
Fred Sundvik
f9a6e34c28 Add dfu-util command for programming
Also add .bin generation, which is needed for dfu-util.
2016-07-05 19:28:17 +03:00
Jack Humbert
421ff74e0c Merge pull request #471 from Chipairon/patch-1
Fix for '~' in spanish layout
2016-07-05 11:05:14 -04:00
Jack Humbert
99846b10e8 Merge pull request #478 from fredizzimo/chibios_subprojects
Suprojects for ChibiOS testing
2016-07-05 11:04:54 -04:00
Fred Sundvik
b4cd0cfd15 Infinity Ergodox - Add matrix.c and led.c 2016-07-05 16:50:30 +03:00
Fred Sundvik
74847a84f8 First version of Infinity Ergodox
Mostly just adding the files from the fredizzimo repository. Still
needs some fixing until it works
2016-07-05 16:45:29 +03:00
Fred Sundvik
cf6cd15920 Fix typo in teensy_lc_onkey.h 2016-07-05 15:54:59 +03:00
Fred Sundvik
6e4f2e18e6 Don't include common_config.h for ChibiOS test 2016-07-05 15:53:40 +03:00
Fred Sundvik
0a040a89e8 Move ChibiOS test board and ld
Move the ChibiOS test subproject board and ld files to the kebyoard
folder, so that the build system can find them
2016-07-05 15:34:35 +03:00
Fred Sundvik
b11657d1c8 Suprojects for ChibiOS testing 2016-07-05 14:56:34 +03:00
Josh Colbeck
74d848c942 Merge remote-tracking branch 'jackhumbert/master' into patch-1 2016-07-04 22:44:26 -05:00
Smilliam
6b0c9cc905 fixed indentation. 2016-07-04 19:58:26 -07:00
Smilliam
1412076df6 Allow Space Cadet state to be canceled by alternate Shift key
Allows you to press RSHIFT to cancel the insertion of a "(" when holding down LSHIFT. Alternatively, allows you to press LSHIFT to cancel the insertion of a ")" when holding down RSHIFT. This change enables you to renege from outputting a character should you press a shift key erroneously.
2016-07-04 19:56:08 -07:00
Jack Humbert
94d3159d9d correct break/return order for planck and preonic defaults 2016-07-04 22:06:22 -04:00
Josh Colbeck
a5fb2b58a5 Merge remote-tracking branch 'jackhumbert/master' into patch-1 2016-07-04 15:41:58 -05:00
Josh Colbeck
497b92c3bd Added macro and readme
macros to for often used eclipse shortcuts
2016-07-04 15:22:13 -05:00
Josh Colbeck
1650adf29a Added new keymap 2016-07-04 12:00:06 -05:00
Christopher Browne
2e1cfaf73f Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-07-04 12:32:08 -04:00
Jack Humbert
9e01b219f3 Fixes typos in keycode.txt 2016-07-04 12:19:01 -04:00
Jack Humbert
86a7b060ef Adds wait to i2c (debounce) 2016-07-04 12:13:41 -04:00
Jack Humbert
eafaba6b53 Improves debounce 2016-07-04 12:01:10 -04:00
Pavlos Vinieratos
df25033fc6 fix typos 2016-07-04 17:55:32 +02:00
Jack Humbert
8e88d55bfd reverts #343 for the most part (#474) 2016-07-04 11:45:58 -04:00
Josh Colbeck
62a92a71d0 Revert "Changed layout of left hand main layer"
This reverts commit 8149924399.
2016-07-03 21:50:04 -05:00
Olivier
4cfb262faa Spellchecking. 2016-07-04 01:10:40 +02:00
Joshua Colbeck
8149924399 Changed layout of left hand main layer 2016-07-03 12:24:44 -05:00
Olivier
703dc26853 Merge https://github.com/jackhumbert/qmk_firmware 2016-07-03 16:58:09 +02:00
Olivier
82edc37238 Move Escape and Insert keys, Escape is now easier to reach (useful for vi). Change the layer switching used to keep a bepo layout on US keyboards. 2016-07-03 16:44:57 +02:00
Olivier
6d195dc60c Add a Makefile for the keymap to disable command mode (to keep the keyboard from going into command mode when both Shift keys are hold at the same time) and to allow issuing a simple "make" in the keymap folder to compile it. 2016-07-03 16:27:08 +02:00
Olivier
9aceaaed4c Replace the "Ctrl+Alt+Fx" macro I was using to switch terminals without moving hands by a numeric layer switch key like on the left half, for consistency. 2016-07-03 15:51:55 +02:00
Olivier
17a3dbc159 Integrate mouse keys into function layer, delete mouse layer. 2016-07-03 14:38:03 +02:00
Jack Humbert
21ee3eb569 Merge pull request #472 from Wigguno/master 2016-07-02 22:19:33 -04:00
Richard
f4febd2cf7 Fix other KC60 Keymap Makefiles so they compile properly 2016-07-03 13:49:10 +12:00
Richard
54209dc672 Add my keymap to KC60 2016-07-03 13:44:24 +12:00
Rubén Díaz-Jorge
132c047469 Fix for '~' in spanish layout 2016-07-02 10:26:04 +02:00
Seth Chandler
27354ae877 add HHKB support to satan (#470)
* add HHKB support

* fix indentation
2016-07-01 23:50:51 -04:00
fredizzimo
1b319151aa Add warning when submodules are not updated (#469)
* Add warning when submodules are not updated

* Sh compatible syntax for dirty submodule check
2016-07-01 21:57:59 -04:00
fredizzimo
c30aba0bce Add ChibiOS packages to the avr_setup script (#468)
* Add ChibiOS packages to the avr_setup script

* Add git as a dependency

* Rename avr_setup.sh -> install_dependencies.sh

Also fix the Vagrant welcome message to reflect the new directory
structure.
2016-07-01 17:22:09 -04:00
fredizzimo
4d4f7684e6 Add ChibiOS support for QMK (#465)
* Modularity and gcc warnings fixes.

* Add ChibiOS support (USB stack + support files).

* Make usb_main more USB_DRIVER #define independent.

* Move chibios to tool.

* Implement jump-to-bootloader.

* Small updates.

* Fix bootloader-jump compiling.

* Move AVR specific sleep_led.c into avr.

* Add basic sleep_led for chibios.

* Update chibios README.

* NKRO fixes.

* Rename some Makefile defines.

* Move STM32 bootloader address config to separate .h file.

* Add ARM Teensies bootloader code.

* Fix chibios/usb_main GET_REPORT handing.

* Add missing #include to keymap.c.

* Make bootmagic.c code portable (_delay_ms -> wait_ms).

* Move declaration of keymap_config.

Should really not declare variables in .h files - since it's included
in different .c files, a proper linker then complains that the same
variable is declared more than once (once for each .c file that the
offending .h is included in).

* Add eeprom support for chibios/kinetis.

* Rename chibios example keyboard.

* Move chibios/cortex selection to local Makefiles.

* Chibios: use WFI in idle. WIP suspend stuff.

* ChibiOS/kinetis: sending remote wakeup.

* ChibiOS/STM32: send remote wakeup.

* Fix report size of boot protocol.

* Fix drop key stroke

Keyboard report should be checked if its transfer finishs successfully.
Otherwise key stroke can be missing when other key event occurs
before the last report transfer is done.

Boot protocol 10ms interval probably causes this problem in case
it receives key events in a row within the period. NKRO protocol
suffers less or nothing due to its interval 1ms.

* Chibios/usb_main: rename a variable for clarity.

* Add correct chibios/bootloader_jump for infinity KB.

* ChibiOS: make reset request more CMSISy.

* Chibios: Add breathing sleep LED on Kinetis MCUs.

* ChibiOS: Update infinity bootloader code to match updated ChibiOS.

* ChibiOS: prettify/document sleep_led code.

* Chibios: Remove the wait in the main loop.

* Add maple mini code.

* Do timeout when writing to CONSOLE EP queue.

Fixes TMK bug #266.

* Chibios: add 'core/protocol' to the makefiles' search path.

* Chibios: Update to new USB API.

* Chibios: add more guards for transmitting (fix a deadlock bug).

* Add update for chibios in README

* Chibios: Fix a HardFault bug (wait after start).

* Chibios: cleanup usb_main code.

* Chibios: Revert common.mk change (fix AVR linking problem).

* core: Fix chibios user compile options

Compile options can be defined in project Makefile such as UDEFS, UADEFS, UINCDIR, ULIBDIR and ULIBS.

* Sysv format for ChibiOS arm-none-eabi-size

Some new patches to ChibiOS puts heap as it's own section. So the
berkeley format is now useless, as the heap will be included in the
BSS report. The sysv format displays the bss size correctly.

* Fix hard-coded path of CHIBIOS

* Add support for new version of ChibiOS and Contrib

The Kinetis support has moved to a separate Contrib repository in
the newest version of Chibios. There has also been some structure
changes. So this adds support for those, while maintaining back-
wards compability.

* Update ChibiOS instructions

* Chibios: implement sleep LED for STM32.

* Chibios: Update the main chibios README.

* Chibios: fix STM32_BOOTLOADER_ADDRESS name.

* Chibios: make the default bootloader_jump redefinable (weak).

* Chibios: disable LTO (link-time optimisation).

With LTO enabled, sometimes things fail for mysterious reasons
(e.g. bootloader jump on WF with LEDs enabled), just because the
linker optimisation is too aggressive.

* Chibios: add default location for chibios-contrib.

* ChibiOS: update mk to match chibios/master.

* ChibiOS: update instructions.md.

* Add chibi_onekey example.

* Add comments to chibi_onekey Makefile.

* Rename some Makefile defines.

* Move STM32 bootloader address config to separate .h file.

* Rename chibios example keyboard.

* Move chibios/cortex selection to local Makefiles.

* Add Teensy LC onekey example.

* Chibios: use WFI in idle. WIP suspend stuff.

* Update chibi/teensy instructions.

* Update chibios/Teensy instructions.

* Add infinity_chibios

* Add keymap_hasu.c

* Infinity_chibios: select correct bootloader_jump.

* Infinity_chibios: improve comments.

* Add generic STM32F103C8T6 example.

* Add maple mini code.

* STM32F103x fixes.

* Add maple mini pinout pic.

* Chibios: updates for 3.0.4 git.

* Chibios: rename example stm32_onekey -> stm32_f072_onekey.

* Chibios: add makefiles for Teensy 3.x examples.

* Chibios: update Teensy 3.x instructions.

* Chibios: Tsy LC is cortex-m0plus.

* Chibios: add more guards for transmitting (fix a deadlock bug).

* Change README for chibios

* Chibios: update examples to current chibios git.

Match the changes in mainline chibios:
 - update chconf.h
 - update supplied ld scripts structure
 - update Teensy instructions (switch to official
    chibios and introduce contrib)

* Add ChibiOS and ChibiOS-Contrib submodules

Also fix the makefile path for them.

* Moves chibios keyboards to keyboards folder

* First version of ChibiOS compilation

Only the stm32_f072_onkey keyboard is ported at the moment. It
compiles, but still doesn't link.

* More chibios fixes

It now compiles without warnings and links

* Move the teensy_lc_onekey to the keyboards folder

* Clean up the make file rule structure

* Remove keymap_fn_to_action

* Update more ChibiOS keyboards to QMK

Most of them does not compile at the moment though.

* Use older version of Chibios libraries

The newest ones have problems with compilation

* Remove USB_UNCONFIGURED event

It isn't present in the older version of ChibiOS

* Fix the infinity_chibios compilation

* Fix potentially uninitialized variable

* Add missing include

* Fix the ChibiOS makefile

* Fix some Chibios keyboard compilation

* Revert the rules.mk file back to master version

* Combine the chibios and AVR makefiles

With just the required overrides in the respective platform
specific one.

* Slight makefile restrucuring

Platform specific compiler options

* Move avr specific targets out of the main rules

* Fix ChibiOS objcopy

The ChibiOS objcopy needs different parameters, so the parameters
are moved to the corresponding platform rule file

* Fix the objcopy for real this time

The comands were moved around, so chibios used avr and the ohter
way around.

Also change the objsize output format

* Fix the thumb flags

* Fix the infinity hasu keymap

* Per platform cpp flags

* Add gcc-arm-none-eabi package to travis

* Add arm-none-eabi-newlib to travis

* Fix the name of the libnewlib-arm-none-eabi lib

* Fix the ChibiOS paths

So that they are properly relative, and builds don't generate
extra folders

* Fix the board path of stm32_f103_onekey

* Only consider folders with Makefiles as subproject
2016-07-01 10:04:53 -04:00
Christopher Browne
44a5f7630f Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-30 12:38:48 -04:00
Jack Humbert
a8b55f8c85 Test all subprojects with travis (#464)
* tests all subprojects

* too many paren
2016-06-30 09:51:45 -04:00
Robbie Gill
bfd673fbae initial version of handwired/fivethirteen (#462) 2016-06-30 09:13:08 -04:00
TerryMathews
fbf697b9ff Fix CAPS_LED logic in Satan (#461)
Needed to invert for proper operation. Previous code had LED on when off
and vice versa.
2016-06-29 22:33:09 -04:00
Jack Humbert
2d80eee6b8 test handwired boards 2016-06-29 21:21:02 -04:00
Jack Humbert
ba6fb23f07 adds handwire and onekey example 2016-06-29 20:21:05 -04:00
Jack Humbert
7db2ec1509 updates planck experimental, width of color output 2016-06-29 18:47:53 -04:00
Jack Humbert
8125cdb88c gets rid of rand warning [skip ci] 2016-06-29 18:36:52 -04:00
Jack Humbert
60fd885a6e rand supports other chips 2016-06-29 18:35:29 -04:00
Jack Humbert
197f152dee adds random base64 character generator 2016-06-29 18:29:20 -04:00
Jack Humbert
65faab3b89 Moves features to their own files (process_*), adds tap dance feature (#460)
* non-working commit

* working

* subprojects implemented for planck

* pass a subproject variable through to c

* consolidates clueboard revisions

* thanks for letting me know about conflicts..

* turn off audio for yang's

* corrects starting paths for subprojects

* messing around with travis

* semicolon

* travis script

* travis script

* script for travis

* correct directory (probably), amend files to commit

* remove origin before adding

* git pull, correct syntax

* git checkout

* git pull origin branch

* where are we?

* where are we?

* merging

* force things to happen

* adds commit message, adds add

* rebase, no commit message

* rebase branch

* idk!

* try just pull

* fetch - merge

* specify repo branch

* checkout

* goddammit

* merge? idk

* pls

* after all

* don't split up keyboards

* syntax

* adds quick for all-keyboards

* trying out new script

* script update

* lowercase

* all keyboards

* stop replacing compiled.hex automatically

* adds if statement

* skip automated build branches

* forces push to automated build branch

* throw an add in there

* upstream?

* adds AUTOGEN

* ignore all .hex files again

* testing out new repo

* global ident

* generate script, keyboard_keymap.hex

* skip generation for now, print pandoc info, submodule update

* try trusty

* and sudo

* try generate

* updates subprojects to keyboards

* no idea

* updates to keyboards

* cleans up clueboard stuff

* setup to use local readme

* updates cluepad, planck experimental

* remove extra led.c [ci skip]

* audio and midi moved over to separate files

* chording, leader, unicode separated

* consolidate each [skip ci]

* correct include

* quantum: Add a tap dance feature (#451)

* quantum: Add a tap dance feature

With this feature one can specify keys that behave differently, based on
the amount of times they have been tapped, and when interrupted, they
get handled before the interrupter.

To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets
explore a certain setup! We want one key to send `Space` on single tap,
but `Enter` on double-tap.

With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and
has the problem that when the sequence is interrupted, the interrupting
key will be send first. Thus, `SPC a` will result in `a SPC` being sent,
if they are typed within `TAPPING_TERM`. With the tap dance feature,
that'll come out as `SPC a`, correctly.

The implementation hooks into two parts of the system, to achieve this:
into `process_record_quantum()`, and the matrix scan. We need the latter
to be able to time out a tap sequence even when a key is not being
pressed, so `SPC` alone will time out and register after `TAPPING_TERM`
time.

But lets start with how to use it, first!

First, you will need `TAP_DANCE_ENABLE=yes` in your `Makefile`, because
the feature is disabled by default. This adds a little less than 1k to
the firmware size. Next, you will want to define some tap-dance keys,
which is easiest to do with the `TD()` macro, that - similar to `F()`,
takes a number, which will later be used as an index into the
`tap_dance_actions` array.

This array specifies what actions shall be taken when a tap-dance key is
in action. Currently, there are two possible options:

* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when
  tapped once, `kc2` otherwise.
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in
  the user keymap - with the current state of the tap-dance action.

The first option is enough for a lot of cases, that just want dual
roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in
`Space` being sent on single-tap, `Enter` otherwise.

And that's the bulk of it!

Do note, however, that this implementation does have some consequences:
keys do not register until either they reach the tapping ceiling, or
they time out. This means that if you hold the key, nothing happens, no
repeat, no nothing. It is possible to detect held state, and register an
action then too, but that's not implemented yet. Keys also unregister
immediately after being registered, so you can't even hold the second
tap. This is intentional, to be consistent.

And now, on to the explanation of how it works!

The main entry point is `process_tap_dance()`, called from
`process_record_quantum()`, which is run for every keypress, and our
handler gets to run early. This function checks whether the key pressed
is a tap-dance key. If it is not, and a tap-dance was in action, we
handle that first, and enqueue the newly pressed key. If it is a
tap-dance key, then we check if it is the same as the already active
one (if there's one active, that is). If it is not, we fire off the old
one first, then register the new one. If it was the same, we increment
the counter and the timer.

This means that you have `TAPPING_TERM` time to tap the key again, you
do not have to input all the taps within that timeframe. This allows for
longer tap counts, with minimal impact on responsiveness.

Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of
tap-dance keys.

For the sake of flexibility, tap-dance actions can be either a pair of
keycodes, or a user function. The latter allows one to handle higher tap
counts, or do extra things, like blink the LEDs, fiddle with the
backlighting, and so on. This is accomplished by using an union, and
some clever macros.

In the end, lets see a full example!

```c
enum {
 CT_SE = 0,
 CT_CLN,
 CT_EGG
};

/* Have the above three on the keymap, TD(CT_SE), etc... */

void dance_cln (qk_tap_dance_state_t *state) {
  if (state->count == 1) {
    register_code (KC_RSFT);
    register_code (KC_SCLN);
    unregister_code (KC_SCLN);
    unregister_code (KC_RSFT);
  } else {
    register_code (KC_SCLN);
    unregister_code (KC_SCLN);
    reset_tap_dance (state);
  }
}

void dance_egg (qk_tap_dance_state_t *state) {
  if (state->count >= 100) {
    SEND_STRING ("Safety dance!");
    reset_tap_dance (state);
  }
}

const qk_tap_dance_action_t tap_dance_actions[] = {
  [CT_SE]  = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT)
 ,[CT_CLN] = ACTION_TAP_DANCE_FN (dance_cln)
 ,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg)
};
```

This addresses #426.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>

* hhkb: Fix the build with the new tap-dance feature

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>

* tap_dance: Move process_tap_dance further down

Process the tap dance stuff after midi and audio, because those don't
process keycodes, but row/col positions.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>

* tap_dance: Use conditionals instead of dummy functions

To be consistent with how the rest of the quantum features are
implemented, use ifdefs instead of dummy functions.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>

* Merge branch 'master' into quantum-keypress-process

# Conflicts:
#	Makefile
#	keyboards/planck/rev3/config.h
#	keyboards/planck/rev4/config.h

* update build script
2016-06-29 17:49:41 -04:00
Jack Humbert
215c2119af Implements subprojects and updates projects for this (#459)
* non-working commit

* working

* subprojects implemented for planck

* pass a subproject variable through to c

* consolidates clueboard revisions

* thanks for letting me know about conflicts..

* turn off audio for yang's

* corrects starting paths for subprojects

* messing around with travis

* semicolon

* travis script

* travis script

* script for travis

* correct directory (probably), amend files to commit

* remove origin before adding

* git pull, correct syntax

* git checkout

* git pull origin branch

* where are we?

* where are we?

* merging

* force things to happen

* adds commit message, adds add

* rebase, no commit message

* rebase branch

* idk!

* try just pull

* fetch - merge

* specify repo branch

* checkout

* goddammit

* merge? idk

* pls

* after all

* don't split up keyboards

* syntax

* adds quick for all-keyboards

* trying out new script

* script update

* lowercase

* all keyboards

* stop replacing compiled.hex automatically

* adds if statement

* skip automated build branches

* forces push to automated build branch

* throw an add in there

* upstream?

* adds AUTOGEN

* ignore all .hex files again

* testing out new repo

* global ident

* generate script, keyboard_keymap.hex

* skip generation for now, print pandoc info, submodule update

* try trusty

* and sudo

* try generate

* updates subprojects to keyboards

* no idea

* updates to keyboards

* cleans up clueboard stuff

* setup to use local readme

* updates cluepad, planck experimental

* remove extra led.c [ci skip]

* disable power up for now

* config files updates

* makefile updates

* .h file updates, config tuning

* disable audio for yang
2016-06-29 16:21:41 -04:00
Christopher Browne
c9f509f016 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-28 14:46:50 -04:00
Jack Humbert
755b17f8fc Merge pull request #453 from NoahAndrews/update-docs 2016-06-27 14:32:55 -04:00
Noah Andrews
b2d1ff7570 Update readme to direct people to using the MHV AVR Shell 2016-06-27 14:00:48 -04:00
Noah Andrews
1b04e9d01e Long overdue fixes and improvements to environment setup scripts (#448)
* Update setup script 1 for new folder structure

* Improve script 1 output

* Launch elevate if run without admin privileges

* Improve MinGW error message

* Improvements and fixes to second script

* Log elevate output in first script
2016-06-27 09:52:01 -04:00
Anand Babu (AB) Periasamy
57066b1246 zoom and undo keys for ab's planck keymap (#446) 2016-06-27 09:51:12 -04:00
Erez Zukerman
e9f5c87207 Merge pull request #447 from abperiasamy/ergo-browser-zoom
zoom and undo keys for ab's beginners ergodox-ez keymap
2016-06-27 09:01:51 -04:00
Anand Babu (AB) Periasamy
7712d55215 zoom and undo keys 2016-06-26 20:24:43 -07:00
Jack Humbert
e5d1e4b8ce Preonic keymap update 2016-06-26 16:16:21 -04:00
Jack Humbert
0058c33815 updates preonic default layout 2016-06-26 14:20:57 -04:00
Jack Humbert
00dcac7270 updates planck macros to keycodes, prototype fn_actions 2016-06-26 14:08:11 -04:00
Anand Babu (AB) Periasamy
0314620d26 Swap up and down on ab's layout to match default (#441) 2016-06-24 13:43:12 -04:00
Christopher Browne
4d79e22438 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-24 12:19:34 -04:00
Erez Zukerman
40bfc7231e Merge pull request #440 from abperiasamy/ergo-ab-swap-up-down
Swap up and down keys to match default layout
2016-06-24 08:57:06 -04:00
Erez Zukerman
d2fc24d2a0 Merge pull request #438 from tkuichooseyou/master
Added tkuichooseyou keymap; for vim and macOS users
2016-06-24 08:56:01 -04:00
Anand Babu (AB) Periasamy
512a68c0ec Swap up and down to match default layout 2016-06-23 20:17:04 -07:00
Jack Humbert
b68b722325 updates ez's matrix to spec 2016-06-23 23:14:21 -04:00
Jack Humbert
13bb6b4b7f Backlight abstraction and other changes (#439)
* redoes matrix pins, abstracts backlight code for B5,6,7

* slimming down keyboard stuff, backlight breathing implemented

* don't call backlight init when no pin

* cleans up user/kb/quantum calls, keyboard files

* fix pvc atomic

* replaces CHANNEL with correct var in breathing

* removes .hexs, updates readmes, updates template

* cleans-up clueboards, readmes to lowercase

* updates readme
2016-06-23 22:18:20 -04:00
Peter
ba116ceb49 Add OS specific layers that can be switched with macros (#436) 2016-06-23 20:06:13 -04:00
Teddy Ku
b9d29cc355 Added tkuichooseyou keymap; for vim and OSX users 2016-06-23 15:09:04 -04:00
Christopher Browne
a4bdb0ac0e Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-23 11:34:50 -04:00
Anand Babu (AB) Periasamy
bab6a8fde5 AB's practical planck keymap (#435) 2016-06-22 23:36:30 -04:00
Jack & Erez
7e584439ee Updates overall readme 2016-06-22 23:24:47 -04:00
Jack & Erez
2443234555 Adds a Readme for the keyboards subdirectory 2016-06-22 23:17:15 -04:00
Mazin Bokhari
aea8d43716 Update readme.md 2016-06-22 21:32:51 -05:00
Mazin Bokhari
ce5e41d362 Update readme.md 2016-06-22 21:31:37 -05:00
Mazin Bokhari
c72c9a7375 Update readme.md 2016-06-22 21:21:27 -05:00
Mazin Bokhari
b43b8bdd17 Update readme.md 2016-06-22 21:20:19 -05:00
Mazin Bokhari
521a56f5eb Update readme.md 2016-06-22 21:05:59 -05:00
Mazin Bokhari
5988820c99 Update readme.md 2016-06-22 21:03:01 -05:00
Christopher Browne
0cd017d485 Use Space Cadet parens on LSFT 2016-06-22 16:51:25 -04:00
Christopher Browne
7eee1526bd Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-22 16:42:58 -04:00
Jack Humbert
935f0de55d well that didn't work 2016-06-22 14:33:59 -04:00
Jack Humbert
56bb5b51bc adds author block to readme 2016-06-22 14:30:47 -04:00
Christopher Browne
b0caf32741 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-22 11:26:26 -04:00
Erez Zukerman
8c1bfdf0bd Merge pull request #433 from algernon/ergodox-ez/algernon
ergodox_ez: Update the algernon keymap to v1.2
2016-06-22 09:01:51 -04:00
Gergely Nagy
2278956412 ergodox_ez: Update the algernon keymap to v1.2
Noticeable changes since the last pull request:

* The forced NKRO mode can be easily toggled off at compile-time, to
  make the firmware compatible with certain operating systems.
* The `:;` key has changed behaviour: to access the `;` symbol, the key
  needs to be double-tapped, instead of shifted.
* The `=` and `\` keys were swapped, `=` moved to the home row, on both
  the **base** and the **experimental** layers.
* The arrow and navigation keys were redone, they are now more
  accessible, but the navigation keys require an extra tap to access.
* The **Emacs** layer is gone, replaced by a simplified
  **navigation and media** layer.
* `LEAD v` types the firmware version, and the keymap version.
* On the **experimental** layer, the `L` and `Q`, and the `K` and `G`
  keys were swapped.
* The **Steno** layer gained a few more `#` and `*` keys, to make it
  easier on my fingers.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-06-22 08:41:38 +02:00
Jack Humbert
98f0807359 increase leader seq size to 5 2016-06-21 22:55:54 -04:00
Jack Humbert
649b33d778 Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432)
* fixes from tmk's repo

* rename keyboard to keyboards
2016-06-21 22:39:54 -04:00
Jack Humbert
464c8e274f adds backlight levels to the satan keyboard (#431)
* enable 4 levels

* remove breathing stuff

* update channels, comments, hex
2016-06-21 22:09:41 -04:00
Jack Humbert
e329729d3a adds fuse settings for atmega32u4, fixes keymap_extras includes 2016-06-21 18:32:28 -04:00
Christopher Browne
ee3c7892ad Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-21 17:54:12 -04:00
Jack Humbert
1a0bac8bcc Warning reductions (#430)
Warning reductions
2016-06-21 17:42:29 -04:00
dragon788
758a8c64e9 Change base box to avoid breakage in Arch box (#429)
I haven't had a chance to update the Arch base box in a while so using the Ubuntu one is far more likely to succeed for a new user (I did test that box recently as I traded my ErgoDox EZ to a friend and needed to reprogram it for him).
2016-06-21 15:29:54 -04:00
fredizzimo
a69d002506 Fix the make all-keyboards command (#422)
Unfortunately the supported targets, like "quick", "all", "clean",
and so on has to be repeated two extra times, but this is the best
I can do with my makefile skills.
2016-06-21 13:31:26 -04:00
Christopher Browne
2d31481008 More notes 2016-06-21 12:55:24 -04:00
Jack Humbert
80c8705419 reduces rgblight warnings, integrates completely (#428) 2016-06-21 12:53:21 -04:00
Christopher Browne
28942b3ba7 Improve docs a bit 2016-06-21 12:45:38 -04:00
Christopher Browne
f404124c26 Add filler to make layering clearer;
KC_TRNS gets used a lot; have the blank _______ mnemonic for it
2016-06-21 12:36:26 -04:00
Christopher Browne
a6e109caa1 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-21 12:30:17 -04:00
Jack Humbert
a8375fa15a updates all config.h and Makefiles to correct references, text 2016-06-21 10:21:43 -04:00
Stanley Lai
c976c03547 Added stanleylai's personal keymap (#420)
* Added WS2812 support for KC60

* Reorganized WS2812 support into its own keymap

* Fixed relative link in README

* Moved WS2812 mention in README to the bottom

* Fixed titling in WS2812 README

* Reverted KC60 Makefile and default keymap back

* Moved RGB specific config.h to ws2812 keymap folder

* Added my personal keymap

* Updated compiled hex

* Reverted KC60 files to 3f6fac47 before pull request #419
2016-06-21 00:49:54 -04:00
Jack & Erez
650e77c657 Fresh hes for experimental layout 2016-06-20 22:37:31 -04:00
Jack & Erez
76076db725 [Jack & Erez] Fixes Space Cadet right shift 2016-06-20 22:36:36 -04:00
Erez Zukerman
f77df7e356 Adapts experimental layout file format 2016-06-20 22:27:17 -04:00
Erez Zukerman
eda5e84164 Adds compiled default firmware 2016-06-20 22:00:51 -04:00
Erez Zukerman
b85d2f2988 [Jack & Erez] Adds dedicated Version key 2016-06-20 21:59:20 -04:00
Erez Zukerman
881eb8d5f3 [Jack & Erez] Tweaks makefile for sanity 2016-06-20 21:58:58 -04:00
Erez Zukerman
5961de0ce2 Removes .gitattributes 2016-06-20 21:47:04 -04:00
Erez Zukerman
cebe08fcd3 [Erez & Jack] Updates build guide 2016-06-20 21:44:37 -04:00
Christopher Browne
f6d1ce7863 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-20 12:20:52 -04:00
Jack Humbert
44e098ef2d endline normalisation, treat .hex as bin, updates kc60 hex files 2016-06-19 23:41:10 -04:00
Stanley Lai
3302258abd Added WS2812 support for KC60 (#419)
* Added WS2812 support for KC60

* Reorganized WS2812 support into its own keymap

* Fixed relative link in README

* Moved WS2812 mention in README to the bottom

* Fixed titling in WS2812 README

* Reverted KC60 Makefile and default keymap back

* Moved RGB specific config.h to ws2812 keymap folder
2016-06-19 23:29:42 -04:00
fredizzimo
3f6fac4721 Add quick version of the all-* makefile targets (#417) 2016-06-18 18:09:21 -04:00
Jack Humbert
db32864ce7 Cleans up quantum/keymap situation, removes extra lufa folders (#416)
* sorts out keycodes

* move midi around

* remove mbed

* replaces keymap with qmk/keymap_common

* fixes keymap.h

* keymap, config, quantum rearrange

* removes unneeded lufa stuff
2016-06-18 14:30:24 -04:00
Jack Humbert
1923cffd41 allow overriding of TARGET 2016-06-17 22:50:41 -04:00
Jack Humbert
008c8d54a0 adds power_up to quantum's matrix file 2016-06-17 22:09:59 -04:00
Jack Humbert
de326d078d prevents ergodox_ez from waking up machine (#375) 2016-06-17 22:06:58 -04:00
Jack Humbert
b70248fa21 addresses #369 2016-06-17 21:42:59 -04:00
Jack Humbert
c4ea06d255 fix for parent folders with spaces (#403) 2016-06-17 21:10:17 -04:00
Eric Tang
e175b8d56f removes extra dfu erase (#415) 2016-06-17 20:25:58 -04:00
Christopher Browne
2cf26915e3 Sample of using build info to generate keystrokes (#412)
* More documentation

* Saving crontab for user  on host

* Restructuring in keeping with recent changes to conventions

* Simplify submitting my fave cbbrowne keystroke by using SEND_STRING()

* Local change, not apropos to have in this repo

* Simplify logic; no need to return so much

* Add in a version key

* Add docs

* Split build date into a separate DEFINE

* Ensure there is a value even if not working within a git repo

* Should not include the compiled code in the repo

* compiled.hex files should not be included in the repo; they represent generated compiled code

* Fix spelling in comment

* Remove more generated files

* Add rule to ignore contents of .build directories; their contents are generated

* Revert removals of compiled files
2016-06-16 17:16:51 -04:00
Christopher Browne
f566125c6e Revert removals of compiled files 2016-06-16 16:51:19 -04:00
Christopher Browne
b2cc1ff0de Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-16 16:43:27 -04:00
Jack Humbert
91b469d88f correctly test to see if awk exists 2016-06-16 15:48:54 -04:00
Jack Humbert
33e83aaaca make awk optional (uses cat) 2016-06-16 10:42:00 -04:00
Christopher Browne
ce1742a31f Add rule to ignore contents of .build directories; their contents are generated 2016-06-15 18:42:30 -04:00
Christopher Browne
e7b50feee4 Remove more generated files 2016-06-15 18:42:05 -04:00
Christopher Browne
39cde91475 Fix spelling in comment 2016-06-15 18:39:57 -04:00
Christopher Browne
10fe3f001b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-15 18:38:30 -04:00
Christopher Browne
6d485b0ecd compiled.hex files should not be included in the repo; they represent generated compiled code 2016-06-15 18:35:38 -04:00
Christopher Browne
6e0270b52f Should not include the compiled code in the repo 2016-06-15 18:34:47 -04:00
Christopher Browne
90d0576355 Ensure there is a value even if not working within a git repo 2016-06-15 18:29:27 -04:00
Jack Humbert
77d083ed98 updates experimental planck keymap, adds basic layout 2016-06-15 15:43:40 -04:00
Christopher Browne
bb0e0c7eba Split build date into a separate DEFINE 2016-06-15 11:36:27 -04:00
Christopher Browne
4e1bc2d298 Add docs 2016-06-15 11:25:08 -04:00
Christopher Browne
211ebe8734 Add in a version key 2016-06-15 11:19:51 -04:00
Christopher Browne
e32b0960af Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-15 11:13:29 -04:00
Gergely Nagy
1d1ced53c7 Update the ergodox-ez/algernon keymap (#409)
Compared to the previous version, the following noteworthy changes have
been made to the keymap:

* The keyboard starts in NKRO mode, bootmagic and other things are
  disabled.
* A STENO layer was added, to be used with Plover.
* An experimental layout was added, something halfway between Dvorak and
  Capewell-Dvorak. A work in progress.
* `LEAD y` types \o/.
* Some keys on the BASE layer have been moved around:
  - `?` moved to the left pinky, left of `Q`.
  - `=` shifted one row down, but `F11` stayed where it was.
  - `-` on the left half was replaced by `Tab`.
  - `Tab`'s original position is taken by a `Media Next`/`Media Prev`
     key.
  - `:` now inputs `;` when shifted.
* `ESC` cancels the **HUN** layer too, not just modifiers.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-06-14 11:28:54 -04:00
Gergely Nagy
4815b97add Makefile: Add QMK_VERSION & co to OPT_DEFS (#408)
This adds the keyboard and keymap built, along with the QMK firmware's
git hash (or a timestamp), to OPT_DEFS. That, in turn, allows keymaps to
make use of these information, and do whatever they want with it. For
example, one could print them on `LEADER v` like this:

```c
SEQ_ONE_KEY (KC_V) {
  SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
```

This addresses #366.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-06-14 11:26:42 -04:00
Samuel Goodwin
fad5a57156 Add sgoodwin keymap for the KC60 (#410)
* Don't save the ctags file in the repo.

* Initial support for the KC60 board. Only 5x5 working so far.

* Rename because this isn't the same KC60 as others.

* Add in some generic layout.
Pins seem to be in the right order except the 6th column spews
gibberish.

* Don't need this for now.

* Move this to some other folder.

* Trying again to start over.

* Don't need to start over because I figured out why the 'broken' stuff wasn't working.

* Attempt to enable backlighting. It's on on pin B7 like other boards.

* Fix last port changes and fix LED control in keymap.

* Trying some other LED code.

* Bootloader needs to be bigger. Disabling backlight for now.

* Simplify LED code while I try to figure it out.

* Turn back on backlighting.

* Backlighting works now. Just need to get levels or breathing working.

* Trying to allow for turning off the LEDs before I get to brightness levels.

* The missing link: need to run the init_ports function for LEDs to work properly.

* Removing breathing stuff since it bricks the board.

* Clean up default layer.

* Cleanup keymap, KC60 doesn't support a 5th right bottom-row button.

* Add in the keymap I want for now.

* Back to escape by default.

* Move my personal keymap to the new place for keymaps.

* Add the version number for clarity.
2016-06-14 11:21:55 -04:00
TerryMathews
1c5a6733ff adds support for GH60 Satan keyboard (#407)
* adds support for GH60 Satan keyboard

ANSI 125 layout, capslock and backlight implemented, support for
WS2812LED strip included

* added Phantom and GH60 Satan to travis
2016-06-13 21:59:22 -04:00
Christopher Browne
498455403e Renaming planck/cbbrowne in keeping with recent naming conventions (#405)
* More documentation

* Saving crontab for user  on host

* Restructuring in keeping with recent changes to conventions

* Simplify submitting my fave cbbrowne keystroke by using SEND_STRING()

* Local change, not apropos to have in this repo

* Simplify logic; no need to return so much
2016-06-13 19:06:32 -04:00
Christopher Browne
c5a034f984 Simplify logic; no need to return so much 2016-06-13 17:59:26 -04:00
Christopher Browne
de2f95bc6f Local change, not apropos to have in this repo 2016-06-13 17:33:26 -04:00
Christopher Browne
2fe06e4ef5 Simplify submitting my fave cbbrowne keystroke by using SEND_STRING() 2016-06-13 17:22:45 -04:00
Christopher Browne
3fe26d47a6 Restructuring in keeping with recent changes to conventions 2016-06-13 16:27:33 -04:00
Christopher Browne
dc9bf78f2b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-06-13 16:06:03 -04:00
TerryMathews
25d4772754 adds support for Phantom TKL keyboard (#399)
ANSI 125 layout, capslock and scrolllock implemented, support for
WS2812LED strip included.
2016-06-12 22:26:47 -04:00
Eric Tang
6955719075 Move LED strip initialization (#397) 2016-06-12 18:01:55 -04:00
Jack Humbert
92759be322 change to relative paths instead of absolute 2016-06-12 15:55:05 -04:00
Jack Humbert
42b40e6fde no more cc error on windows 2016-06-11 22:54:34 -04:00
IBNobody
1c2705eea5 fixed color detection routine in makefile 2016-06-11 17:24:28 -05:00
IBNobody
50621a2e6a Merge remote-tracking branch 'remotes/jackhumbert/master' 2016-06-11 13:28:27 -05:00
Jack Humbert
d9e4dad0a8 Makefile redo & other features (#395)
* .build containment implemented

* no destructive variable setting - builds in either folder

* make from 3 places

* cleans before each build
* make from root with keyboard=keyboard, keymap=keymap
* make from keyboard/keyboard with keymap=keymap
* make from keymaps/keymap
* only implemented on planck

* adds color diag to avr-gcc

* makefiles for all plancks, clean-up

* quick build-all makefile for plancks

* reformatting of make output (colors)

* color toggle, tmk path corrections

* correct if statement for color

* move config.h to main makefile, updates preonic, atomic

* format update, all keyboards targets

* makefile optional for build all target, alps and arrow_pad updated

* alps updated

* make planck default, trying out travis recipe for all-keyboards

* all-keymaps target, different travis recipe

* updates alps64

* updates keyboards to new format

* updates clue* projects

* all projects updated, specialise EZ .hex, let .hex through

* updates travis

* automatically find root, keyboard, keymap

* silent echo, cleaned-up mass make output

* updates all keyboards' .hex files except EZ

* Rename Bantam44.c to bantam44.c

* Rename Bantam44.h to bantam44.h

* nananana

* adds six key keyboard

* does same to ez as rest

* updates send_string example

* brings ergodox_ez up to date

* updates template/new project script

* adds sixkeyboard

* adds readme for sixkeyboard

* adds sixkeyboard to travis

* filenames, gitignore mess

* define clock prescaler stuff manually

* make quick, size test example

* documentation and dfu-no-build
2016-06-11 13:31:31 -04:00
Erez Zukerman
a5d638ad30 Merge pull request #364 from techtomas/techtomas
Rearranged the layer toggles and keys.
2016-06-07 21:18:32 -04:00
Thomas Anderson
623466e340 Updated readme to fix a typo and list out hotkey shortcuts 2016-06-07 13:38:37 -07:00
Aron Griffis
fd454e5b74 Add support for vagrant-docker (#389)
* clean trailing ws in Vagrantfile and util/avr_setup.sh

* replace triple quotes with heredoc.

Ruby doesn't have triple quotes; that's a Python thing. This was just being
parsed as multiple strings concatenated.

* add docker support to Vagrantfile

* make wants to find dfu-programmer in vagrant guest
2016-06-07 12:41:55 -04:00
Masahiro Wakame
6b8b332f77 fix HID_RI_LOGICAL_MAXIMUM value (#388) 2016-06-07 11:30:15 -04:00
Erez Zukerman
2fda55ba54 Merge pull request #384 from gid0/master
Merge ErgoDox bepo layout changes.
2016-06-06 23:22:52 -04:00
Jack Humbert
2222621b55 Update HAND_WIRE.md 2016-06-06 21:54:21 -04:00
Eric Tang
219e4a3012 Fix hand wiring guide (#387)
* Fix broken link

* Fix incoherent sentence
2016-06-06 21:53:37 -04:00
Erez Zukerman
408c9e159b Adds Python script to util directory for easier discoverability 2016-06-06 21:47:57 -04:00
TuxForLife
ea63714950 Tiny typo (#386) 2016-06-06 10:42:41 -04:00
Olivier
cd906f24b1 Spellchecking. 2016-06-06 15:23:40 +02:00
Olivier
a62a0480d0 Add some more function keys (vol up / down, mute, undo, cut, copy, paste). 2016-06-06 15:18:42 +02:00
Olivier
edf4266839 Add basic README file. 2016-06-05 21:42:25 +02:00
Jack Humbert
3e3a07fc97 adds planck keymap readme 2016-06-05 11:21:37 -04:00
Jack Humbert
bdf94c0621 updates the hand-wiring guide 2016-06-05 11:19:17 -04:00
Olivier
4d59d57e64 Move keys and especially TAB more like on a TypeMatrix 2020 keyboard. Add a left SHIFT key. 2016-06-04 20:14:34 +02:00
Jack Humbert
83c52c6009 corrects vagrant script path from @b46f343 2016-06-04 13:30:11 -04:00
Jack Humbert
b46f343de7 updates vagrant script path 2016-06-04 13:24:25 -04:00
Jack Humbert
8ca1831daa makes vagrant usable again 2016-06-04 13:18:15 -04:00
Olivier
e0762e0ad9 Merged the function and navigation layers. Give access to it with both thumbs. Now you can up / down / page up / page down with only one hand ! 2016-06-04 18:52:22 +02:00
Jack Humbert
b36e532b5e cleans up folder structure
* consolidates docs
* deletes converter/
* updates .md references (most)
2016-06-04 00:10:47 -04:00
Noah Andrews
189a3b02fb Add missing elevate.exe file (#377)
* Stops explorer.exe from being started with admin privilieges

* added missing elevate.exe file
2016-06-03 22:42:51 -04:00
Eric Tang
794aed37a0 Improve string sending (#376) 2016-06-03 15:48:40 -04:00
Olivier
a4796ba36a Update prebuilt firmware with code from latest pull. 2016-06-02 23:51:06 +02:00
Jack Humbert
cc3972e7d6 adds travis badge 2016-06-02 14:23:01 -04:00
Daniel Svensson
fd3afbd2f3 Add a Travis recipe. (#374) 2016-06-02 14:17:19 -04:00
Noah Andrews
c7005cdfcf Stops explorer.exe from being started with admin privilieges (#373) 2016-06-02 13:00:44 -04:00
Jack Humbert
4635b44533 new line/tab in send_string 2016-06-01 23:00:55 -04:00
Jack Humbert
1c9f33c06a adds send_string functionality (string macros) 2016-06-01 22:50:01 -04:00
IBNobody
f3086b57e6 Submitting ArrowPad, A QMK-based 21/24 key keypad (#372)
* Created arrow pad, a QMK based numpad designed for heavy text editing

* Enabled backlighting, numlock indicator, and forced nkro for arrowpad

* WIP Arrowpad 21

* WIP Arrowpad 21

* Combined Arrow Pad 21 and 24

* Combined Arrow Pad 21 and 24

* Removed 21 folder
2016-06-01 21:41:51 -04:00
Jack Humbert
84276ee561 removes stray paren 2016-06-01 16:57:12 -04:00
Erez Zukerman
0457ed4880 Merge pull request #297 from gid0/master
Add an ErgoDox bépo layout.
2016-06-01 08:21:04 -04:00
Fred Sundvik
73d890a2c9 Fix visualizer sleeping too long
The documentation for ugfx gEventWait wait is wrong and the
function takes the time in milliseconds, instead of system ticks.
This caused the the thread to sleep way too long. It also caused
somewhat random sleeping behaviour as the MS2ST function overflows
at around 43 seconds sleep.

The event source is also now initialized correctly, so that the
thread actually can be woken up by events.
2016-06-01 09:22:47 +03:00
Erez Zukerman
56939b1518 Merge pull request #367 from waveform80/fix-unselect-rows-prototype
Squash the prototype compiler warning
2016-05-31 23:42:54 -04:00
Erez Zukerman
0c4085dd53 Merge pull request #368 from waveform80/daves-layout-readme
Added a README and minor tweaks for "dave" KEYMAP
2016-05-31 23:42:11 -04:00
Erez Zukerman
bae92b2a10 Merge pull request #356 from johgh/master
ergodox_ez: added dvorak_spanish layout
2016-05-31 23:18:16 -04:00
Nathan Sharfi
6428069eb7 zweihander-osx: Use power instead of eject
KC_EJCT isn't the OS X Eject key and won't restart your computer.
2016-05-31 16:45:22 -07:00
Nathan Sharfi
7b8857a368 zweihander-osx: use eject instead of power
https://support.apple.com/en-us/HT201236 says that ⌃⌘⏏ will quit all apps and then restart your Mac; ⌃⌘-power will shut things down in an…ungraceful fashion.

I reboot into Windows fairly frequently; I'd rather have the nice behavior at my fingertips, not the rude one.
2016-05-31 16:15:35 -07:00
Nathan Sharfi
a226255c0b Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-05-31 15:22:45 -07:00
Hartmut Goebel
cea4b9a4bb Update to Makefile an ergodox readme (#365)
* Autodetect teensy-loader-cli over teensy_loader_cli.

Some distributions (e.g. Arch Linux, Guix) install teensy_loader_cli
as teensy-loader-cli. Use this one if it is installed.

* Update ergodox_ez/readme.md

- Mention Linux distris providing teensy-loader-cli
- Mention `make teensy ...`
2016-05-31 10:03:04 -04:00
Dave Jones
5e926d7b07 Added a README and minor tweaks 2016-05-31 14:30:36 +01:00
Dave Jones
4ae86e6ff7 Squash the prototype compiler warning
unselect_rows declared with no parameter list; requires (void) to
prevent compiler warning
2016-05-31 14:18:40 +01:00
Thomas Anderson
0755322a90 Rearranged the layer toggles and keys.
Moved the layer toggles to be in more comfortable locations for my typing. Also expanded the use of the media layer (now called APP) and enhanced the text navigation on the control layer
2016-05-30 23:45:55 -07:00
Nathan Sharfi
222e8f031c Merge branch 'master' of github.com:jackhumbert/qmk_firmware 2016-05-30 15:45:17 -07:00
Nathan Sharfi
13810e4822 zweihander: Add :, disable sleep LED waves 2016-05-30 15:44:59 -07:00
jorge
b32731b698 Merge branch 'master' of https://github.com/johgh/qmk_firmware 2016-05-30 19:41:29 +02:00
jorge
314d21c746 ergodox_ez: added dvorak_spanish layout 2016-05-30 19:40:16 +02:00
Fred Sundvik
489288f674 Add a nicer sine based gradient for the LEDs 2016-05-29 21:59:27 +03:00
Erez Zukerman
8ee9be11de Merge pull request #353 from algernon/ergodox-ez/algernon
My layout for the ErgoDox EZ
2016-05-29 13:53:29 -04:00
Samuel Goodwin
478a18d237 Add support for the KC60 v2.0 2015-09-12 (#360)
* Don't save the ctags file in the repo.

* Initial support for the KC60 board. Only 5x5 working so far.

* Rename because this isn't the same KC60 as others.

* Add in some generic layout.
Pins seem to be in the right order except the 6th column spews
gibberish.

* Don't need this for now.

* Move this to some other folder.

* Trying again to start over.

* Don't need to start over because I figured out why the 'broken' stuff wasn't working.

* Attempt to enable backlighting. It's on on pin B7 like other boards.

* Fix last port changes and fix LED control in keymap.

* Trying some other LED code.

* Bootloader needs to be bigger. Disabling backlight for now.

* Simplify LED code while I try to figure it out.

* Turn back on backlighting.

* Backlighting works now. Just need to get levels or breathing working.

* Trying to allow for turning off the LEDs before I get to brightness levels.

* The missing link: need to run the init_ports function for LEDs to work properly.

* Removing breathing stuff since it bricks the board.

* Clean up default layer.

* Cleanup keymap, KC60 doesn't support a 5th right bottom-row button.
2016-05-29 13:18:01 -04:00
Fred Sundvik
0c3189055f Make LED visualization times configurable 2016-05-29 17:42:32 +03:00
Daniel Svensson
b85dd60397 Fix build errors (#359)
* brings gh60 up-to-date (needs testing)

* brings hhkb up-to-date (needs testing)

* brings jd45 up-to-date (needs testing)
2016-05-29 10:39:27 -04:00
Erez Zukerman
536ad6813a Corrects a backtick 2016-05-28 20:51:25 -04:00
Erez Zukerman
d7ed882d2a Corrects links 2016-05-28 20:50:24 -04:00
Erez Zukerman
8497a45134 Adds a roadmap to the intro section of the docs 2016-05-28 20:48:20 -04:00
Fred Sundvik
9c955145f5 Fix emulator #ifdef check 2016-05-29 02:08:46 +03:00
Jack Humbert
a53bc24c4d makes .SILENT (less verbose) by default - override with VERBOSE=1
also took out some @echo newlines to make things a bit cleaner
2016-05-28 15:33:08 -04:00
Jack Humbert
17977a7e24 process_record implementation (non-breaking for process_action ATM) 2016-05-28 15:22:30 -04:00
Jack Humbert
38987d4c15 updates quantum template to prevent backlight conflicts 2016-05-28 12:05:17 -04:00
Jack Humbert
de57799530 brings alps64 up-to-date (needs testing) 2016-05-28 11:56:06 -04:00
Fred Sundvik
4d7e4a4780 Don't include lcd_backlight_hal for emulator 2016-05-28 11:13:08 +03:00
jorge
f20e17a19e ergodox_ez: added dvorak_spanish layout 2016-05-28 09:57:25 +02:00
Nathan Sharfi
e7e83b1f18 zweihander-osx: Add =, :, juggle Home/End 2016-05-27 18:41:16 -07:00
Nathan Sharfi
861f0f78e1 zweihander-osx: Bump ALFRED_LEAD_TIME to 250ms 2016-05-26 15:08:01 -07:00
Jack Humbert
209ee3cd05 removes duplicate double quote and odd whitespace 2016-05-26 17:14:01 -04:00
Christopher Browne
d649ab3433 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-26 15:17:00 -04:00
Gergely Nagy
9ff10ab1db ergodox_ez/algernon: Add a HEX file
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-05-26 15:31:25 +02:00
Gergely Nagy
c764480b95 ergodox_ez/algernon: New layout.
This is a squashed up version of the layout I have been working on for
the past month or so. Based on Dvorak, with a lot of unconventional
stuff thrown in for good measures.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-05-26 15:27:11 +02:00
Erez Zukerman
89f0472b9e Merge pull request #352 from algernon/ergodox-ez/supercoder
ergodox_ez: Add a SuperCoder keymap
2016-05-26 08:40:20 -04:00
Gergely Nagy
037b3f0ddf ergodox_ez: Add a SuperCoder keymap
Inspired by @faxm0dem, and the SuperCoder 2000 "keyboard".

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-05-26 14:13:20 +02:00
Mazin Bokhari
ac02b0f397 Fix formatting 2016-05-26 02:17:07 -05:00
Mazin Bokhari
733596d800 Fix formatting 2016-05-26 02:12:57 -05:00
Erez Zukerman
5501f231d4 Merge pull request #351 from adiabatic/master
Add KC_DQUO ("); update Zweihander
2016-05-25 21:41:18 -04:00
Nathan Sharfi
376403276b Add single and double quotes to numpad layer
…as well as recover from a bunch of Git user errors.
2016-05-25 18:13:00 -07:00
Nathan Sharfi
9d6debd9b2 Add double quote for everyone; update Zweihander 2016-05-25 17:25:04 -07:00
Mazin Bokhari
66f9cdd041 Change bottom keycluster keys to be alt temporarily until a more permanent solution is though up... although you just now lost your arrow keys, so idk what to do about that tomorrow lol 2016-05-25 01:43:06 -05:00
Mazin Bokhari
59dc19940a Add notes 2016-05-25 01:31:57 -05:00
Mazin Bokhari
fbbd32376b Add gui macro to bksp and tab (second outter-most keys) on both thumb clusters 2016-05-25 01:25:09 -05:00
Mazin Bokhari
09e172f56a Tap then hold built-in functionality actually overrides the ctrl/alt/etc. macros 2016-05-25 01:21:29 -05:00
Mazin Bokhari
03aeb40516 Change mouse clicks to j and k 2016-05-25 01:19:30 -05:00
Mazin Bokhari
fd44d1cb39 Update layout viz 2016-05-25 01:09:18 -05:00
Mazin Bokhari
5486b9e80e Add todo: windows and nix layers 2016-05-25 00:58:08 -05:00
Mazin Bokhari
fbbfb3cbad Add todo: override holding macro functionlity 2016-05-25 00:51:16 -05:00
Mazin Bokhari
514a7038b1 Add ctrl macro to spc and ent on thumb cluster (outter-most keys_) 2016-05-25 00:46:43 -05:00
Mazin Bokhari
0b68db4e43 Change rr3c1 from quotes/gui to quotes/ctl 2016-05-25 00:42:58 -05:00
Mazin Bokhari
3b0fd160df Change r3c1 from backspace to esc/control 2016-05-25 00:38:25 -05:00
Mazin Bokhari
f5e486b50d Change r2c1 from Del to Tab 2016-05-25 00:23:05 -05:00
Erez Zukerman
d06e940a17 [Erez & Jack] Removes keyboards which are not active on qmk 2016-05-24 23:55:29 -04:00
Erez Zukerman
8bc69afc63 [Erez & Jack] Optimizes shift_interrupted array 2016-05-24 23:48:46 -04:00
Erez Zukerman
1237025963 [Erez & Jack] Packages Space Cadet shifts into keycodes 2016-05-24 23:43:58 -04:00
Erez Zukerman
f4a426a0b1 [Erez & Jack] Documents new Leader key functionality 2016-05-24 22:37:38 -04:00
IBNobody
26277dbdf4 Merge remote-tracking branch 'remotes/jackhumbert/master' 2016-05-24 17:57:40 -05:00
IBNobody
76e36a787a Merge remote-tracking branch 'remotes/jackhumbert/master' 2016-05-24 17:55:46 -05:00
Christopher Browne
48871b9b6b Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-24 12:34:08 -04:00
Jack Humbert
287eb7ad14 Converted audio play functions to *_user (#349)
* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs

* Usability tweaks

* TWEAE

* nightly

added extra kcs to keymap common

* turned on Plank audio

* Added backlight breathing to atomic

* reverted accidental merge

* Added music and audio toggles to Quantum.c

* Redid the audio callbacks

* Adjusted default planck layout to use the user tone naming

* tabs to spaces

* Rewrote the ALL recipe to allow for faster parallel make

* tabs to spaces

* Renamed custom event functions to be 'startup_user' and 'shutdown_user'. Also moved the prototypes around.

* Tweaked pvc atomic layout to work with the pvc planck.

* updates midi scale calling
2016-05-24 11:56:53 -04:00
Eric Tang
1ae6011cef Clean up #343's code (#348) 2016-05-24 11:44:40 -04:00
Mazin Bokhari
8090fb82ff Initial commit of keymaps/maz with default config 2016-05-24 02:26:16 -05:00
Jack Humbert
897f5b2f9d updates midi in play_note to better octave 2016-05-23 23:44:36 -04:00
Eric Tang
aaa758f1d3 Optimize matrix scanning (#343) 2016-05-23 23:42:21 -04:00
Peter
d66aa0abf9 adds petereichinger's planck keymap (#340)
* Add custom keymap

* A little readme and remove old layout comments
2016-05-20 11:14:08 -04:00
Erez Zukerman
ed349f0c3d Merge pull request #324 from Bubblepoint/master
Add adnw/k_o_y layout
2016-05-19 15:54:16 -04:00
purpleP
0275d444d7 fixed small bug with AUDIO_ENABLED (#339) 2016-05-19 08:36:28 -04:00
Jack Humbert
b732b79b49 adapts unicode to quantum.c (#333)
* Unicode

to have unicode input you need to:

- set your OS input method to UNICODE if needed
- enable unicode in your makefile
- copy the action_function from
keyboard/planck/keymaps/unicode/unicode.c to your keymap.c
set the target OS method in your keymap.c: void matrix_init_user() {
set_unicode_mode(UC_OSX); } you can then switch when you want with:
set_unicode_mode(UC_OSX); set_unicode_mode(UC_LNX);
set_unicode_mode(UC_WIN);
put some unicode codes in your keymap like so: UC(0x0061)
I did change the bit mask in quantum/keymap_common.c and .h
I’m afraid we will need uint32 to get a total support for all unicode
tables or relocate the handler as @mbarkhau did.

* rearranges keycode values, hooks-up unicode

* removes extra lalt ref

* adds unicode shortcuts and example
2016-05-18 23:47:16 -04:00
Jack Humbert
bf545061f2 outputs size when make dfuing 2016-05-18 23:16:33 -04:00
Jack Humbert
0428214b90 adds music and audio toggles (#337)
* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs

* Usability tweaks

* TWEAE

* nightly

added extra kcs to keymap common

* turned on Plank audio

* Added backlight breathing to atomic

* reverted accidental merge

* Added music and audio toggles to Quantum.c

* Redid the audio callbacks

* music/audio_on_user
2016-05-18 23:14:00 -04:00
heartsekai
465aabe11d Added Swiss-German keymap. (#335) 2016-05-18 15:22:04 -04:00
Fred Sundvik
94519e387a Add callback function for emulator drawing 2016-05-18 09:03:42 +03:00
Fred Sundvik
fa8feb21a4 Add custom led and lcd display support 2016-05-18 08:40:36 +03:00
Jack Humbert
fe9b1482fd adds KC_NUBS, KC_NUHS and shifted versions to default keymaps 2016-05-17 22:17:23 -04:00
Fred Sundvik
07e412c538 Fix crash when event listener not created 2016-05-17 11:21:38 +03:00
Fred Sundvik
15300cb681 Build lcd_backlight_hal_emulator.c
When the emulator is set, instead of the lcd_backlight_hal.c file.
2016-05-17 09:51:27 +03:00
Fred Sundvik
4e89732617 Enable and fix compilation of more files 2016-05-17 09:45:05 +03:00
Fred Sundvik
d79e94adb1 Use ugfx API instead of chibios 2016-05-17 09:35:02 +03:00
Jack Humbert
2425fd295a fixes default planck keymap 2016-05-16 23:08:16 -04:00
Fred Sundvik
15bdef3ee9 Makefile changes to support emulator build 2016-05-16 09:45:39 +03:00
Fred Sundvik
a20d513e3c Add function to check if the keyboard is a master 2016-05-15 19:28:15 +03:00
Fred Sundvik
350bc0d22f Merge branch 'master' into led 2016-05-15 14:50:34 +03:00
Fred Sundvik
bde869aa7e Merge branch 'chibios-contrib' 2016-05-15 14:08:01 +03:00
Fred Sundvik
81f89cc672 Update include dir for new serial_link include 2016-05-15 13:43:45 +03:00
Fred Sundvik
5651be7a2f Configurable visualizer thread priority 2016-05-15 13:43:45 +03:00
Fred Sundvik
a0297a892e Rename system to serial_link
Also combined driver.h with serial_link.h
2016-05-15 13:38:59 +03:00
Fred Sundvik
b4ab61171e Configurable serializer thread priority 2016-05-15 12:59:50 +03:00
Fred Sundvik
a08bcea998 Don't accept remote objects with the wrong size
Fixes memory corruption when the crc happens to match, but the size
doesn't.
2016-05-15 11:58:20 +03:00
Fred Sundvik
3b422d2ac4 Add debug print for serial link errors
This is disabled by default
2016-05-15 11:36:39 +03:00
Jacob Bilger
b79400e0e9 Folders for each keymap.c file (#332)
* Add folders to keymaps

* test

* test
2016-05-15 01:22:51 -04:00
Jack Humbert
e2aa980ad5 cleans up default keymaps (olkb) 2016-05-15 01:07:48 -04:00
Jack Humbert
fde477a927 updates midi functionality (#331)
* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* adds music sequencer functionality

* implements audio/music functions in quantum.c

* splits up process_action to allow independent processing of actions

* moves midi stuff to quantum.c

* adds additional scales for midi
2016-05-15 00:51:06 -04:00
Jack Humbert
bf5c2ccee5 splits process_action up to handle records separately (#329)
* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* adds music sequencer functionality

* implements audio/music functions in quantum.c

* splits up process_action to allow independent processing of actions

* merging?
2016-05-15 00:47:25 -04:00
Jack Humbert
15719f3574 adds a sequencer to the music mode (#330)
* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* adds music sequencer functionality

* implements audio/music functions in quantum.c

* Merge branch 'master' into process-record
2016-05-15 00:40:59 -04:00
Erez Zukerman
1a8c0dd22d Leader key implementation (#326)
* implements leader key for planck experimental

* allows override of leader timeout

* adds ability to use the leader key in seq

* fixes leader keycode

* adds chording prototype

* fixes keycode detection

* moves music mode to quantum.c

* disables chording by default

* updates process_action functions to return bool
2016-05-15 00:27:32 -04:00
Erez Zukerman
79d26f331a Adds explanatory note re history of TMK and QMK 2016-05-14 22:07:16 -04:00
Jacob Bilger
c7d2c79d34 adds Bilger321's planck keymap 2016-05-14 21:11:33 -04:00
Tobias Matt
26e315a6bb readme added 2016-05-14 10:04:14 +02:00
Erez Zukerman
6e72586b6b Merge pull request #320 from Townk/townkmap
Townkmap
2016-05-13 21:54:23 -04:00
Erez Zukerman
9746cd5323 Merge pull request #317 from Twey/master
Updates to `keymaps/twey` to the media layer and for Plover 3.0
2016-05-13 21:51:03 -04:00
Erez Zukerman
7b2cdca744 Merge pull request #307 from sboesebeck/master
minor change to default layouts
2016-05-13 21:50:28 -04:00
Tobias Matt
65645fb8ca Merge remote-tracking branch 'upstream/master' 2016-05-13 10:08:29 +02:00
cwhits
69f05e1afd [planck] adds button for toggling output in plover app (#323)
* [planck] toggle plover output in app when toggling plover layer on keyboard

* [planck] moved plover toggle to separate key

* [planck] renamed toggle button
2016-05-12 15:08:53 -04:00
Ryan Ascheman
d1c70328f8 update volume control to match arrow change 2016-05-12 10:32:26 -07:00
Thiago Alves
f70dec3ee9 Remove unused variable on the keymap. 2016-05-11 14:01:15 -07:00
Stephan Bösebeck
d09d2da1c2 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-11 22:05:19 +02:00
Thiago Alves
c7d52fda9e Add an initial Readme to the keymap. 2016-05-11 13:04:53 -07:00
Fred Sundvik
25382cb6f2 Fix compute_gradient_color 2016-05-11 22:06:26 +03:00
Erez Zukerman
5845eb05b5 [Erez & Jack] Documents audio output 2016-05-10 20:48:14 -04:00
Thiago Alves
4a041f65e2 Tweak some key positions and changed macro location.
After using the layout a while I learn that the - and = positions should be
swapped since I keep typing = when I intend to type -.

I also, removed the only macro from the top left on the right hand to put the
power button there and since I never use the arrow keys on the separated groups
of keys, I added 4 macros there to get a feel for it.
2016-05-10 16:32:18 -07:00
Thiago Alves
75384689b2 Add custom config.h and revert the changes on the global one.
Some options I defined on the config.h file don't make much sense to other
keymaps so I revert the global config.h and add those options on the keymap
custom one.
2016-05-10 16:17:30 -07:00
James ‘Twey’ Kay
a46a0ed4f3 keymaps/twey: fix documentation 2016-05-10 22:33:06 +01:00
James ‘Twey’ Kay
373e441d86 keymaps/twey: Plover 3.0 has a standard TOGGLE keybinding; use that instead 2016-05-10 22:30:17 +01:00
James ‘Twey’ Kay
b5c5b71828 keymaps/twey: Add more history keys to media layer; stop using toggleable media layer 2016-05-10 22:23:36 +01:00
Peter
e4e0b4e105 Update build guide with instructions to copy the whole keymap folder (#315) 2016-05-09 19:23:51 -04:00
Thiago Alves
c2ffedd65c Update the .hex file on the keymap folder. 2016-05-09 15:27:57 -07:00
Thiago Alves
3e43298d79 Revert the Makefile to the original one.
Make sure I customize things as much as possible inside the keymap itself.
2016-05-09 15:27:57 -07:00
Thiago Alves
85f5eaec39 Change the access to the extra layer to be simetric.
Instead of having a key on the left side for one layer and a key on the right
side for the other layer, I put two dedicated layers on each side to get to the
proper layers.
2016-05-09 15:27:57 -07:00
Thiago Alves
6d343f3559 Add my personal keymap for OSX use.
This keymap was created to have a feel keys on a different place and to have as
fewer layers as possible.

Currently I have only 2 extra layers and only one of them is really required to
have all possible keys available.

Check out the README.md file for more information.
2016-05-09 15:27:57 -07:00
Jack Humbert
3f02637f4d Backlight Breathing for Planck and Atomic
* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs

* Usability tweaks

* TWEAE

* nightly

added extra kcs to keymap common

* turned on Plank audio

* Added backlight breathing to atomic

* reverted accidental merge

* adds backlight pulse to planck
2016-05-09 13:17:15 -04:00
Jack Humbert
684793360c quantum accommodates more than 16 columns 2016-05-09 00:36:23 -04:00
Erez Zukerman
35a72ca5e1 Adds next tab/prev tab back to symb layer and updates legend 2016-05-08 13:55:30 -04:00
Erez Zukerman
2ac27dd574 A little more tweaking 2016-05-08 13:45:26 -04:00
Erez Zukerman
897396b58f Tweaks layers 1 & 2 in my experimental layout 2016-05-08 13:39:17 -04:00
Erez Zukerman
2ce9644caa Merge pull request #311 from adiabatic/ergodox-zweihander-osx
Add KC_LABK and KC_RABK (< and >)
2016-05-06 18:28:43 -04:00
Nathan Sharfi
05db327b70 Add KC_L[LR]ABK to top-level README 2016-05-06 06:22:26 -07:00
Erez Zukerman
7566ac4241 Merge pull request #310 from nrrkeene/master
Lock layers by pressing both shift keys
2016-05-06 09:13:30 -04:00
Nathan Sharfi
c702a522b0 Rearrange code layer on Zweihander
Makes it more like the iOS keyboard (and therefore easier to remember). Also adds angle brackets for HTML and comparisons.
2016-05-06 05:47:55 -07:00
Nathan Sharfi
08f3142463 Add KC_LABK and KC_RABK (< and >) 2016-05-06 05:40:02 -07:00
Nathan Sharfi
fc4f693cad zweihander: add ⌘X, ⌘C, ⌘V to media thumb keys 2016-05-06 05:19:17 -07:00
Nicholas Keene
481c74cc56 The Ordinary Layout is the layout you are looking for. Come and see. 2016-05-05 23:18:48 -05:00
Nicholas Keene
90a6534729 The Ordinary Layout is extraordinarily familiar and powerful 2016-05-05 23:10:51 -05:00
Erez Zukerman
78bd31f28e Uses @eltang's famous macro! Still not perfect though :( 2016-05-05 23:18:46 -04:00
Erez Zukerman
bf6f3fe7f4 [Erez & Jack] Updates docs with one-shot information and config_user.h 2016-05-05 23:18:04 -04:00
Erez Zukerman
9bb368a5fb [Jack & Erez] Defines MOD_HYPR and MOD_MEH 2016-05-05 22:44:24 -04:00
Erez Zukerman
cd30f971ae [Jack & Erez] Creates a makefile.mk and a config file for the experimental layout 2016-05-05 22:24:09 -04:00
Erez Zukerman
3a9d1c4279 [Jack & Erez] Enables config_user.h per keymap 2016-05-05 22:23:32 -04:00
Erez Zukerman
8ffc73fcbd [Jack & Erez] Adds an option for user-specific config.h files 2016-05-05 22:21:39 -04:00
Erez Zukerman
f293bf2340 [Jack & Erez] Removes duplicate reference, sorts whitespace 2016-05-05 22:19:29 -04:00
Jack Humbert
41b3e399b1 adds keycode shortcuts for OSL and OSM 2016-05-05 21:50:51 -04:00
Thiago Alves
74e97eefd7 Adds oneshot layer and oneshot tap toggling (#308)
This commit is mostly a cherry-pick from `ahtn` at
https://github.com/tmk/tmk_keyboard/pull/255.

These are the changes:

* Adds ACTION_LAYER_ONESHOT
* Adds ONESHOT_TAP_TOGGLE
* Mentions sticky keys in the docs on oneshot.
2016-05-05 21:41:37 -04:00
Tom Duckering
d4520cd3ac Referencing the hex file (#309)
Seems that this is a typo. When I used the hex file it worked so presuming that means it's right ;)
2016-05-05 18:27:28 -04:00
Jack Humbert
356dba7e61 updates atreus's column mapping 2016-05-05 12:05:09 -04:00
Stephan Bösebeck
2e02886a1e remove typo 2016-05-05 16:52:40 +02:00
Stephan Bösebeck
a096d205aa making default osx more ELG conform 2016-05-05 16:48:51 +02:00
Stephan Bösebeck
7060e10669 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-05 16:28:47 +02:00
Nicholas Keene
5daf24b1a5 The Ordinary Layout is the most natural and powerful layout for the Ergodox EZ. Come check it out. 2016-05-04 22:17:47 -05:00
Erez Zukerman
dbb1c2f281 Merge pull request #305 from nrrkeene/master
Custom handling for shift keys, improved media layer
2016-05-04 22:31:00 -04:00
Stephan Bösebeck
660511f050 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-04 08:03:25 +02:00
Erez Zukerman
31a697bc05 Merge pull request #304 from adiabatic/ergodox-zweihander-osx
zweihander: comment out action_get_macro()
2016-05-03 22:27:39 -04:00
Nathan Sharfi
6bafe44486 zweihander: comment out action_get_macro() 2016-05-03 19:19:47 -07:00
Nicholas Keene
4b74eca2a5 The Ordinary Layout is arranged as close as possible to a traditional keyboard, but with extra special features 2016-05-03 20:58:27 -05:00
Nicholas Keene
575ca2b96d The Ordinary Layout works the way you expect it to, with extra powerful features 2016-05-03 20:40:15 -05:00
IBNobody
83e1cc241e Clarified audio.c (#302)
* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs
2016-05-03 13:56:40 -04:00
Stephan Bösebeck
507db3ab13 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-03 08:29:55 +02:00
IBNobody
35d7081899 Merge remote-tracking branch 'refs/remotes/jackhumbert/master' 2016-05-02 23:15:56 -05:00
Nicholas Keene
8b0274f60a Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-02 21:35:58 -05:00
Erez Zukerman
2c070163ff Merge pull request #300 from Twey/tweymap-momentary
Swap steno/media layers to allow using media keys in the Plover layer…
2016-05-02 21:04:13 -04:00
James ‘Twey’ Kay
1173dbd02f Swap steno/media layers to allow using media keys in the Plover layer; display all active layers, not just the top; use only momentary modifiers 2016-05-02 19:22:32 +01:00
Stephan Bösebeck
61b2b58bee Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-05-02 14:38:54 +02:00
Erez Zukerman
1ce6da2605 Merge pull request #298 from adiabatic/ergodox-zweihander-osx
ergodox-zweihander-osx: initial commit
2016-05-02 08:30:34 -04:00
Erez Zukerman
98ed12843e Merge pull request #294 from sneako/master
Add my Ergodox EZ config
2016-05-02 08:24:26 -04:00
Erez Zukerman
84b736dc7f Merge pull request #258 from romanzolotarev/master
Add Roman's single layer layout based on Norman
2016-05-02 08:24:11 -04:00
Stephan Bösebeck
0e7a3a25bb new version of the experimental layout. changed media keys in MDIA layer 2016-05-02 13:46:00 +02:00
Nicholas Keene
1076c2b122 The Ordinary Layout is the layout you are looking for. Come and see v3.14. 2016-05-01 23:16:41 -05:00
Nathan Sharfi
fe022a508f zweihander: move dim/brighten to 1/2, add ⌘Q 2016-05-01 15:12:38 -07:00
Nathan Sharfi
9b163d2feb zweihander: Add ⌘, ⌘⇧, ⌥⇥, ⌥⇧⇥ 2016-05-01 13:55:00 -07:00
Nathan Sharfi
8ec1d41a28 Ergodox EZ: add zweihander-osx.hex 2016-04-30 22:36:09 -07:00
Nathan Sharfi
262930c8d5 ergodox-zweihander: initial commit 2016-04-30 22:12:13 -07:00
Fred Sundvik
f0c8e7c495 Fix a few led test animation issues 2016-04-30 22:45:41 +03:00
Erez Zukerman
c3aa0a23ed Merge pull request #292 from abperiasamy/ergo-ab
Beginner's keymap for Ergodox-EZ
2016-04-30 14:56:58 -04:00
Anand Babu (AB) Periasamy
ed0798de24 Beginner's keymap for Ergodox-EZ 2016-04-30 11:28:38 -07:00
Olivier
dc7b606ff1 Update firmware with latest QMK code. 2016-04-30 16:06:23 +02:00
Olivier
09ea12f9ca Merge https://github.com/jackhumbert/qmk_firmware 2016-04-30 16:03:52 +02:00
Olivier
9d48ba9713 Add a macro for Ctrl+Alt+Fx. 2016-04-30 16:01:37 +02:00
Erez Zukerman
e7d56215de Merge pull request #295 from techtomas/techtomas
Add my layout to the list
2016-04-30 07:42:20 -04:00
Jack Humbert
0656f2fa10 moves backlight functionality to keyboard files and updates template makefile
previously there were two backlight.c files (bad)
2016-04-29 22:19:40 -04:00
Jack Humbert
9ab7098c83 fixes plover start sound 2016-04-29 21:21:08 -04:00
Thomas Anderson
fb57b2e55d Added readme 2016-04-29 17:25:14 -07:00
Thomas Anderson
711809fdac Finalized my personal layout 2016-04-29 14:42:31 -07:00
Erez Zukerman
9edcfcdf6f Adds brackets to inner vertical keys in experimental layout 2016-04-29 22:39:05 +03:00
sneako
b79124ac14 Adding .hex file 2016-04-28 22:20:25 -04:00
sneako
38858338f8 Add my Ergodox EZ config 2016-04-28 21:58:29 -04:00
Tobias Matt
4122ad3f7b switch shift and enter thumb key 2016-04-28 15:09:34 +02:00
Tobias Matt
a101d9ebcd update hex file 2016-04-28 15:02:40 +02:00
Tobias Matt
d4710d8d7a shift to thumb key 2016-04-28 15:01:27 +02:00
Christopher Browne
c2a3df3123 Saving crontab for user on host 2016-04-27 12:52:47 -04:00
Christopher Browne
f59c4b03fa Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-04-27 12:34:54 -04:00
Roman Zolotarev
bf925fb71c Add Roman's layout with QWERTY 2016-04-26 16:46:43 +08:00
Roman Zolotarev
28f0b64e31 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-04-26 16:23:10 +08:00
Tobias Matt
d280a59c82 add hex file 2016-04-26 08:43:56 +02:00
Tobias Matt
0181663771 organize in subfolder 2016-04-26 08:41:17 +02:00
Bubblepoint
57789c64bd basic layout 2016-04-26 05:39:33 +02:00
Ryan Ascheman
7929ee4879 update readme 2016-04-25 15:40:52 -07:00
Fred Sundvik
6313cfd559 Fix some makefile issues, and symbol issues 2016-04-24 17:44:11 +03:00
Fred Sundvik
74baa4895c Run mirrored keyframes for led tests as well 2016-04-24 16:40:41 +03:00
Fred Sundvik
15906b86ae LEDS are flushed automatically
After running the animation, instead of having to do it manually.
This avoids duplicate flushing, and better support for cross-fades.
2016-04-24 16:26:53 +03:00
Fred Sundvik
0530ebb77d Add led crossfading 2016-04-24 16:20:00 +03:00
Fred Sundvik
891edbd533 Add function for running the next keyframe 2016-04-24 16:19:31 +03:00
Fred Sundvik
444132edd0 Add last and first update of frame for anims 2016-04-24 15:45:52 +03:00
Fred Sundvik
0e0488623e Add left to right gradient keyframe for leds 2016-04-24 14:54:40 +03:00
Fred Sundvik
a960a1b006 Add fade out for the led test 2016-04-24 14:10:01 +03:00
Fred Sundvik
c95b17b536 Add simple led support
Also the first version of a led testing animation
2016-04-24 13:46:19 +03:00
Ryan Ascheman
c1f143124d initial changes, no doc changes 2016-04-19 14:21:23 -07:00
Olivier
edb2996299 Use aliases where available. No firmware change. 2016-04-17 20:22:07 +02:00
Olivier
920e0865b6 Commit firmware up-to-date with latest upstream qmk_firmware changes. 2016-04-17 20:00:09 +02:00
Olivier
b03a9f7252 Merge https://github.com/jackhumbert/qmk_firmware 2016-04-17 19:54:06 +02:00
Olivier
0715cf46ac Add underscore "_" character in the qwerty compatibility layer. 2016-04-17 12:15:23 +02:00
Olivier
5df222d3e0 Even more compatibility with QWERTY systems : added most useful characters needing AltGr on a bepo layout. This compatibility layer is still not perfect, but now usable to type with a bepo-like layout on a qwerty system. 2016-04-16 23:33:18 +02:00
Olivier
12f13eeef4 More compatibility with QWERTY systems. 2016-04-16 22:48:09 +02:00
Olivier
536e52a05a Simple layer to allow the keyboard to act like a bepo keyboard when plugged on a qwerty system. Doesn't work with modifiers for now. 2016-04-16 20:01:44 +02:00
Olivier
6b8fdb90bc Add mouse navigation keys on a new layer. 2016-04-16 19:23:39 +02:00
Olivier
0cd070d814 More concise, no functional change. 2016-04-16 18:56:31 +02:00
Olivier
6dc48384f3 Allow the "00" keypad key to act like a repeating 0 when held down. 2016-04-16 18:06:16 +02:00
Olivier
d3bc854ddf Correct a bug with stuck modifier keys when they were used with other layers (like when selecting with shift and navigation keys) and released before the layout switch keys. 2016-04-16 15:13:02 +02:00
Olivier
5b74261aa9 Second try with a (maybe) more practical layout :
- layer modifiers in the thumb clusters, Alt-F1 - Alt-F4 should now be easier to type
- new Alt and Ctrl keys in the bottom row are more easily reachable with thumbs than the little thumb cluster keys, and feel more like traditional keyboards
- thumb backspace wasn't great due to lower precision and repeat rate than index fingers
2016-04-16 14:53:08 +02:00
Olivier
9a7fd7cb4d Merge branch 'master' of https://github.com/gid0/qmk_firmware 2016-04-16 14:01:00 +02:00
Olivier
c2c939af4e Layout preview generated on keyboard-layout-editor.com. 2016-04-16 13:51:19 +02:00
Olivier
560873f13a Layout preview generated on keyboard-layout-editor.com. 2016-04-16 13:51:19 +02:00
Roman Zolotarev
fa2eedb7bd Add Roman's single layer layout based on Norman 2016-04-16 16:57:58 +08:00
Christopher Browne
6ec6b61353 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-04-13 12:02:51 -04:00
zozo
aeb027ed60 First version of a bepo (french layout based on Dvorak rules) keymap. 2016-04-11 23:27:27 +02:00
Olivier
8f76f1a848 First version of a bepo (french layout based on Dvorak rules) keymap. 2016-04-11 23:27:27 +02:00
Erez Zukerman
58f2c6fcf2 Merge pull request #246 from romanzolotarev/master
Add a new layout with arrows in the home row
2016-04-11 23:02:08 +03:00
Roman Zolotarev
d532b04dc1 Add HJKL layout 2016-04-11 21:45:10 +08:00
Fred Sundvik
61f7761c03 Update ugfx with ChibiOS 4 support.
Also change the URL to fredizzimo bitbucket
2016-04-09 19:49:52 +03:00
Didier Loiseau
8d6bbf2757 Fix issue #221: LGUI(KC_LSFT) does not work
- on mod keys, register LGUI, LSFT etc. as normal mods
   instead of weak mods:
  - they won't be cleared by layer switching
  - LSFT(KC_LGUI) will now have the same behavior as LGUI(KC_LSFT)
2016-04-06 01:07:36 +02:00
Didier Loiseau
db35212422 Removed D(LSFT) is CSA macros
Were causing stuck LSFT weak mods.
2016-04-06 01:07:34 +02:00
Didier Loiseau
81a889c97d Add delay to CSA macros using dead keys
With the BÉPO over CSA on Windows, the dead keys stop working after a
while, like in
http://superuser.com/questions/776558/suddenly-dead-keys-dont-work

I suspect this is triggered by too fast typing from macros.
2016-04-06 01:05:53 +02:00
Didier Loiseau
5bc69c5b0a Fixed compilation issues 2016-04-06 00:09:03 +02:00
Didier Loiseau
4289ff7939 Removed remaining ALT_T and CTL_T keys
Having "true" modifiers is more reliable and practical.
- moved APP in place of HOME
- moved HOME in place of LSFT on left thumb
- moved END in place of RSFT on right thumb (Ctrl+End with single hand!)
- removed ALT_T from KC_ESC
2016-04-02 18:16:34 +02:00
Didier Loiseau
4e25342b41 Use TG() to switch to BÉPO over CSA, and use KC_TRNS in LR_CSA
Simplifies future changes to modifier and special keys
+ removed M_TGCSA macro
2016-04-02 18:16:34 +02:00
Didier Loiseau
89b647fe2b Replace Play by temporary num layer with left Alt
- move play on fn+left thumb
- move prev/next besides play
2016-04-02 18:16:33 +02:00
Didier Loiseau
6c672dfdc6 BÉPO over CSA: Altgr-shifted layer
- all characters available directly in CSA
- more explicit names for macros that switch accross CSA layers
- use macros to implement the shifts next to the spaces
2016-04-02 18:16:33 +02:00
Didier Loiseau
aa5eb49edd BÉPO over CSA: GR2A-shifted characters in AltGr layer
- define aliases for all GR2A-shifted characters
- use the available characters in BÉPO over CSA AltGr layer
2016-04-02 18:16:33 +02:00
Didier Loiseau
b2a4434abb BÉPO over CSA: Fixed key repeat for M_NBSP 2016-04-02 18:16:32 +02:00
Didier Loiseau
3a91ddb074 Use CSA_ as prefix for Canadian Multilingual key aliases
CM is already used for Colemak.
2016-04-02 18:16:32 +02:00
Didier Loiseau
911222892e BÉPO over CSA: GR2A characters in AltGr layer
- define aliases for all GR2A characters (unshifted)
- use the available characters in the BÉPO over CSA AltGr layer
2016-04-02 18:16:31 +02:00
Didier Loiseau
fbf1333d87 BÉPO over CSA: unicode support
- implement easy way to define and send unicode characters on Windows
- define 3 characters not available in CSA:
  - en dash: –
  - em dash: —
  - ellipsis: …
2016-04-02 18:16:31 +02:00
Didier Loiseau
7840e69bfa BÉPO over CSA: AltGr layer
- implemented the most useful characters:
  - all French characters + €
  - common programmer characters
- other keys implemented as KC_NO to avoid mistyping a character
  from a lower layer
- AltGr+Shift not supported (yet)
2016-04-02 18:16:30 +02:00
Didier Loiseau
a7cef2ca0a Initial BÉPO over CSA with Shift layer
Initial implementation of the BÉPO layout
for use with the Canadian Multilingual Standard layout
(a.k.a. CSA / ACNOR layout) on the OS-side.
- support all bépo characters from the default and shifted layers
2016-04-02 18:16:30 +02:00
Didier Loiseau
b8ddbd2181 Added RESET key on fn-= 2016-04-02 18:16:29 +02:00
Didier Loiseau
bf78ca1ef2 Use enums to define layers and macros 2016-04-02 18:16:29 +02:00
Didier Loiseau
9e1ee021d7 Swapped w and = to keep the w on the right hand (better for English) 2016-04-02 18:16:28 +02:00
Didier Loiseau
7bb135a1d0 Use BÉPO spécific key aliases with BP_ prefix
keymap_bepo.h: define BP_* keycodes for all possible characters
bepo/keymap.c: use those keycodes in the bépo keymap
2016-04-02 18:16:28 +02:00
Didier Loiseau
f044edbed9 Initial bepo layout based on tm2030
No more SFT_T:
- moved ] (bépo W) below Tab
- moved - (bépo =) in place of ] (top right)
- removed SFT_T from ' (bépo M)
- moved \ (bépo Ç) in place of = (bépo %)
- moved = (bépo %) in place of - (bépo =)
2016-04-02 18:13:50 +02:00
Christopher Browne
5bbcc484a8 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-03-30 13:14:01 -04:00
Christopher Browne
95a88c09e1 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-03-28 11:29:54 -04:00
Christopher Browne
a4ff9f2567 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-03-22 17:29:31 -04:00
Fred Sundvik
59657355d2 Master mode remains active
It remains active even if the USB link is suspended or otherwise
temporarilly goes down.
2016-03-13 21:38:51 +02:00
Fred Sundvik
f4c11740f7 Suspend power off, fix backlight animation
The backlight color animation was using the wrong frame number, so
it didn't work properly.
2016-03-13 21:35:42 +02:00
Fred Sundvik
b93d07198a Suspend support for the visualizer 2016-03-13 20:13:02 +02:00
Fred Sundvik
f7275f0ede Configurable baud setting 2016-03-12 22:37:04 +02:00
Fred Sundvik
d835ad91a3 Resend the keyboard state every ms
In case there's some errors on the link, and the packet gets lost
2016-03-12 20:08:08 +02:00
Fred Sundvik
315edb4826 Add serial link support for visualizer 2016-03-12 19:42:57 +02:00
Fred Sundvik
32f0171d39 Fix crash when receiving unregistered remotes 2016-03-12 19:41:34 +02:00
Fred Sundvik
11bd4ba0dd Remote object callable from many places
Change init_transport to add_remote_objects, so that it can be
called many times from different places.
2016-03-12 19:35:09 +02:00
Christopher Browne
e36a441274 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-03-02 11:49:00 -05:00
Fred Sundvik
168c5b679f Call remote matrix update, when the matrix changes 2016-02-28 23:58:47 +02:00
Fred Sundvik
6fe6d111bf Send the keyboard matrix over the serial link 2016-02-28 22:52:30 +02:00
Fred Sundvik
d8d4622802 Improve serial link initialization, and add driver 2016-02-28 21:46:29 +02:00
Fred Sundvik
46482460fa Some small fixes for the serial update loop 2016-02-28 15:52:03 +02:00
Fred Sundvik
9cb139adc4 Add simple loop for updating the serial link 2016-02-27 22:28:35 +02:00
Christopher Browne
d3d1f15597 Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-02-25 13:03:44 -05:00
Fred Sundvik
17a1102a2a Fix include dir to use uincir instead of just inc 2016-02-24 22:31:01 +02:00
Fred Sundvik
725929ec8b Fix include paths for new tmk_core update 2016-02-23 09:37:24 +02:00
Christopher Browne
eb99e515b3 More documentation 2016-02-22 15:31:13 -05:00
Fred Sundvik
36e4869531 Create a thread for the serial link 2016-02-21 23:52:00 +02:00
Fred Sundvik
6873b17117 Support for Chibios compilation
Remove some warnings, change the include paths.
2016-02-21 23:17:59 +02:00
Fred Sundvik
8cbfe79dd9 Add master to single slave transport 2016-02-21 21:47:40 +02:00
Fred Sundvik
7b88b8b7e1 Add slave to master transport 2016-02-21 21:32:01 +02:00
Fred Sundvik
64b7efeb72 Add proper initialization of transport buffers 2016-02-21 21:15:42 +02:00
Fred Sundvik
415ab91c9d Add master to slave transport 2016-02-21 21:04:42 +02:00
Fred Sundvik
fe1db50fc3 Writing signals events 2016-02-21 18:51:10 +02:00
Fred Sundvik
2710361cd8 Change the triple buffer object interface 2016-02-21 18:30:04 +02:00
Fred Sundvik
679bfe7c54 More transport WIP 2016-02-21 17:33:31 +02:00
Fred Sundvik
4ee6eadf9e Local and remote objects WIP 2016-02-21 12:53:51 +02:00
Fred Sundvik
b7059d35f9 Working triple buffering 2016-02-21 01:07:44 +02:00
Fred Sundvik
8e2d70d11f Simplify the triple buffer implementation 2016-02-21 00:44:25 +02:00
Fred Sundvik
4bb5733cdc Updates to triple buffer 2016-02-20 23:40:52 +02:00
Fred Sundvik
50edb3d90c Add first version of triple buffered object 2016-02-20 22:22:42 +02:00
Fred Sundvik
c78eefba49 Add first transport tests 2016-02-20 15:49:31 +02:00
Fred Sundvik
ea346125e8 Add some validation for invalid router destinations 2016-02-20 15:28:42 +02:00
Fred Sundvik
532f98eef6 Support for other links sending to master 2016-02-20 15:14:40 +02:00
Fred Sundvik
c28e19c546 First link sending to master 2016-02-20 15:02:53 +02:00
Fred Sundvik
82b5037b9d Add master send to specific destinations 2016-02-20 14:52:17 +02:00
Fred Sundvik
cee5406ed7 Add complete master broadcast test 2016-02-20 14:32:26 +02:00
Fred Sundvik
4b9fccc756 Start implement router 2016-02-20 13:59:48 +02:00
Fred Sundvik
5a1600e24f Add link parameter 2016-02-20 12:06:23 +02:00
Fred Sundvik
419908e5ef Hide the byte stuffer state inside it 2016-02-17 09:07:38 +02:00
Fred Sundvik
8d50880686 Use memcpy instead of cast to avoid alignment issues 2016-02-14 21:49:31 +02:00
Fred Sundvik
f22d2543b1 Rename route_frame to route_incoming_frame 2016-02-14 21:34:40 +02:00
Fred Sundvik
0eb62c4ce6 Rename recv_frame to validator_recv_frame 2016-02-14 21:33:14 +02:00
Fred Sundvik
2a6696bd3d Add validator send frame 2016-02-14 21:31:01 +02:00
Fred Sundvik
62058329ff Add crc32 validation of received frames 2016-02-14 21:13:16 +02:00
Fred Sundvik
a3ec3bbef8 Start implement frame validator 2016-02-14 20:45:59 +02:00
Fred Sundvik
713465fb41 Add some full round trip tests
Mostly to ensure that the receive and send framing works the same
way. Especially for the special case with 254 non-zeros.
2016-02-14 20:07:51 +02:00
Fred Sundvik
6956c177da Add byte stuffing send support for large frames 2016-02-14 19:56:22 +02:00
Fred Sundvik
2f3ea76428 Fix name of some unit tests 2016-02-14 19:03:34 +02:00
Fred Sundvik
f3beeb0270 Hanlde sending of zero bytes for small packets 2016-02-14 18:59:01 +02:00
Fred Sundvik
a089eaa868 Add sending of small frames with no zeroes 2016-02-14 17:45:25 +02:00
Fred Sundvik
26537474ae Add byte stuffer recv handling of too long frames 2016-02-14 15:57:44 +02:00
Fred Sundvik
e8cb6d8023 Bytestuffer recv handling of long frames 2016-02-14 15:28:57 +02:00
Fred Sundvik
eefb5b5634 Mutiple frame handling for byte stuffer
Also handles unexpected data.
2016-02-14 14:25:54 +02:00
Fred Sundvik
ce3a21cbea Implement receive of valid small byte stuffed frames 2016-02-14 14:04:51 +02:00
Fred Sundvik
8a991a266e Rename files to match what they actually do
Also add validator before routing.
2016-02-14 13:05:50 +02:00
Fred Sundvik
1f1bc183dd Start implementing data_link 2016-02-14 12:45:12 +02:00
Fred Sundvik
3eaddd6514 Use cgreen test runner instead of executables 2016-02-14 01:58:26 +02:00
Fred Sundvik
3c6b93a491 Add separate makefile for tests 2016-02-14 01:31:01 +02:00
Fred Sundvik
e9a1474bb6 Add makefile for compiling and running unit tests 2016-02-14 00:20:14 +02:00
Fred Sundvik
e70cefc12f Add cgreen unit test library and makefile 2016-02-14 00:05:58 +02:00
fredizzimo
ffc425603d Initial commit 2016-02-13 23:26:39 +02:00
Fred Sundvik
c5db02925c Clean up wrong license information 2016-02-13 22:20:47 +02:00
Fred Sundvik
8479e6aa39 Update readme and license
Also add integration examples
2016-02-13 22:08:49 +02:00
Fred Sundvik
8ce60649c8 Initialize backlight and LCD during visualizer_init 2016-02-13 20:29:49 +02:00
Fred Sundvik
209167d4d6 Compile the user visualizer 2016-02-13 19:53:22 +02:00
Fred Sundvik
9e58d022ba Add visualizer
A generic visualizer that supports animations. There's a few
predefined keyframe types included, and more can be added by the
user.
2016-02-13 19:38:23 +02:00
Fred Sundvik
01b955aa64 Add LCD backlight support
Also possibility to disable the LCD support
2016-02-13 19:21:16 +02:00
Fred Sundvik
fb681b5a60 Add makefile that includes ugfx 2016-02-13 17:47:39 +02:00
Fred Sundvik
bb75446b0b Add uGFX submodule v 2.4 2016-02-13 16:44:14 +02:00
fredizzimo
4452f4965d Add MIT license 2016-02-13 14:18:48 +02:00
Fred Sundvik
3568065141 Add readme 2016-02-12 09:33:38 +02:00
Christopher Browne
04759d63ef Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware 2016-02-06 19:49:52 -05:00
7230 changed files with 148699 additions and 2427578 deletions

94
.gitattributes vendored Normal file
View File

@@ -0,0 +1,94 @@
# auto for anything unspecified
* text=auto
# sources
*.c text
*.cc text
*.cxx text
*.cpp text
*.c++ text
*.hpp text
*.h text
*.h++ text
*.hh text
*.bat text
*.coffee text
*.css text
*.htm text
*.html text
*.inc text
*.ini text
*.js text
*.jsx text
*.json text
*.less text
*.php text
*.pl text
*.py text
*.rb text
*.sass text
*.scm text
*.scss text
*.sh text
*.sql text
*.styl text
*.ts text
*.xml text
*.xhtml text
# make files (need to always use lf for compatibility with Windows 10 bash)
Makefile eol=lf
*.mk eol=lf
# make files (need to always use lf for compatibility with Windows 10 bash)
*.sh eol=lf
# documentation
*.markdown text
*.md text
*.mdwn text
*.mdown text
*.mkd text
*.mkdn text
*.mdtxt text
*.mdtext text
*.txt text
AUTHORS text
CHANGELOG text
CHANGES text
CONTRIBUTING text
COPYING text
INSTALL text
license text
LICENSE text
NEWS text
readme text
*README* text
TODO text
GRAPHICS
*.ai binary
*.bmp binary
*.eps binary
*.gif binary
*.ico binary
*.jng binary
*.jp2 binary
*.jpg binary
*.jpeg binary
*.jpx binary
*.jxr binary
*.pdf binary
*.png binary
*.psb binary
*.psd binary
*.svg text
*.svgz binary
*.tif binary
*.tiff binary
*.wbmp binary
*.webp binary
# hex files
*.hex binary
*.eep binary

13
.gitignore vendored
View File

@@ -1,9 +1,11 @@
keyboard/planck/dfu-programmer.exe
.dep
*.o
*.eep
*.elf
*.hex
!util/bootloader.hex
!quantum/tools/eeprom_reset.hex
*.log
*.lss
*.lst
*.map
@@ -12,8 +14,12 @@ keyboard/planck/dfu-programmer.exe
tags
*~
build/
.build/
*.bak
.vagrant/
quantum/version.h
.idea/
CMakeLists.txt
.DS_STORE
# Eclipse/PyCharm/Other IDE Settings
@@ -21,3 +27,8 @@ build/
.project
.settings/
.idea
.browse.VC.db*
*.stackdump
util/Win_Check_Output.txt
.vscode
.stfolder

12
.gitmodules vendored
View File

@@ -0,0 +1,12 @@
[submodule "lib/chibios"]
path = lib/chibios
url = https://github.com/ChibiOS/ChibiOS.git
[submodule "lib/chibios-contrib"]
path = lib/chibios-contrib
url = https://github.com/ChibiOS/ChibiOS-Contrib.git
[submodule "lib/ugfx"]
path = lib/ugfx
url = https://bitbucket.org/Tectu/ugfx
[submodule "lib/googletest"]
path = lib/googletest
url = https://github.com/google/googletest

32
.travis.yml Normal file
View File

@@ -0,0 +1,32 @@
os: linux
dist: trusty
sudo: required
language: c
branches:
except:
- /^.*-automated-build$/
- /^[0-9]+\.[0-9]+\.[0-9]+/
env:
global:
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
before_install:
- wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
install:
- tar -zxf avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- export PATH="$PATH:$TRAVIS_BUILD_DIR/avr8-gnu-toolchain-linux_x86_64/bin"
before_script:
- avr-gcc --version
script:
- make test AUTOGEN=false
- bash util/travis_build.sh
addons:
apt:
packages:
- dfu-programmer
- pandoc
- gcc-arm-none-eabi
- binutils-arm-none-eabi
- libnewlib-arm-none-eabi
- diffutils
after_success:
bash util/travis_compiled_push.sh

View File

@@ -1,77 +0,0 @@
@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@ECHO OFF
SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
SET NEWPATH1="C:\MinGW\msys\1.0\bin"
SET NEWPATH2="C:\MinGW\bin"
:: Make sure we're running with administrator privileges
NET SESSION >nul 2>&1
IF ERRORLEVEL 1 (
ECHO FAILED. Run this script with administrator privileges.
GOTO ExitBatch
)
:: Make sure the second path exists. The first path won't be created until the second script is run
IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
:: Add paths
CALL :AddPath %NEWPATH1%
CALL :AddPath %NEWPATH2%
:: Branch to UpdateEnv if we need to update
IF DEFINED UPDATE (GOTO UpdateEnv)
GOTO ExitBatch
:: -----------------------------------------------------------------------------
:UpdateEnv
ECHO Making updated PATH go live . . .
REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
setx TEMPVAR 1 > nul 2>&1
REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer)
GOTO ExitBatch
:: -----------------------------------------------------------------------------
:ExitBatch
ENDLOCAL
PAUSE
EXIT /b
:: -----------------------------------------------------------------------------
:AddPath <pathToAdd>
ECHO %PATH% | FINDSTR /C:"%~1" > nul
IF ERRORLEVEL 1 (
REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1" > nul 2>&1
IF ERRORLEVEL 0 (
ECHO Adding %1 . . . Success!
SET "PATH=%PATH%;%~1"
SET UPDATE=1
) ELSE (
ECHO Adding %1 . . . FAILED. Run this script with administrator privileges.
)
) ELSE (
ECHO Skipping %1 - Already in PATH
)
EXIT /b
:: -----------------------------------------------------------------------------
:KillExplorer
ECHO Your desktop is being restarted, please wait. . .
ping -n 5 127.0.0.1 > NUL 2>&1
ECHO Killing process Explorer.exe. . .
taskkill /f /im explorer.exe
ECHO.
ECHO Your desktop is now loading. . .
ping -n 5 127.0.0.1 > NUL 2>&1
ECHO.
ping -n 5 127.0.0.1 > NUL 2>&1
START explorer.exe
START explorer.exe %CD%
EXIT /b

View File

@@ -1,63 +0,0 @@
@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@ECHO OFF
SET STARTINGDIR=%CD%
:: Check for admin privilages
SETX /M test test > nul 2>&1
IF NOT ["%ERRORLEVEL%"]==["0"] (
ECHO FAILED. Rerun with administrator privileges.
GOTO ExitBatch
)
:: Make sure path to MinGW exists - if so, CD to it
SET MINGWPATH="C:\MinGW\bin"
IF NOT EXIST !MINGWPATH! (ECHO Path not found: %MINGWPATH% && GOTO ExitBatch)
CD /D %MINGWPATH%
ECHO ------------------------------------------
ECHO Installing wget and unzip
ECHO ------------------------------------------
mingw-get install msys-wget-bin msys-unzip-bin
MKDIR temp
CD temp
ECHO ------------------------------------------
ECHO Installing dfu-programmer.
ECHO ------------------------------------------
wget http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip
unzip dfu-programmer-win-0.7.2.zip
COPY dfu-programmer.exe ..
ECHO ------------------------------------------
ECHO Downloading driver
ECHO ------------------------------------------
wget http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
unzip libusb-win32-bin-1.2.6.0.zip
COPY libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
ECHO ------------------------------------------
ECHO Installing driver. Accept prompt.
ECHO ------------------------------------------
IF EXIST "%WinDir%\System32\PnPUtil.exe" (%WinDir%\System32\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
IF EXIST "%WinDir%\Sysnative\PnPUtil.exe" (%WinDir%\Sysnative\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
ECHO FAILED. Could not find PnPUtil.exe in "%WinDir%\System32" or "%WinDir%\Sysnative".
:PNPUTILFOUND
:: Wait then delete directory
ping -n 5 127.0.0.1 > NUL 2>&1
CD ..
RD /s /q temp
ECHO ------------------------------------------
ECHO Finished!
:ExitBatch
CD /D %STARTINGDIR%
ENDLOCAL
PAUSE
EXIT /b

View File

@@ -1,60 +0,0 @@
# Build Guide
## Build Environment Setup
### Windows
1. If you have ever installed WinAVR, uninstall it.
2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
3. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
5. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
7. Future build commands should be run from the standard Windows command prompt, which you can find by searching for "command prompt" from the start menu or start screen. Ignore the "MHV AVR Shell".
### Mac
If you're using [homebrew,](http://brew.sh/) you can use the following commands:
brew tap osx-cross/avr
brew install avr-libc
brew install dfu-programmer
This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line.
You can also try these instructions:
1. Install Xcode from the App Store.
2. Install the Command Line Tools from `Xcode->Preferences->Downloads`.
3. Install [DFU-Programmer][dfu-prog].
### Linux
Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager.
Debian/Ubuntu example:
sudo apt-get update
sudo apt-get install gcc-avr avr-libc dfu-programmer
### Vagrant
If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
## Verify Your Installation
1. If you haven't already, obtain this repository ([https://github.com/jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application.
2. Open up a terminal or command prompt and navigate to the qmk_firmware folder using the `cd` command. The command prompt will typically open to your home directory. If, for example, you cloned the repository to your Documents folder, then you would type `cd Documents/qmk_firmware`. If you extracted the file from a zip, then it may be named `qmk_firmware-master` instead.
3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `README.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboard/`. For example, if you're building for a Planck, run `cd keyboard/planck`.
4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process.
## Customizing, Building, and Deploying Your Firmware
Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly.
1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
2. To build a keymap other than the default, type `KEYMAP=<name>` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`.
3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html)
## Helpful Tips
1. On Linux or OS X, you can run `sleep 5; make KEYMAP=<name> dfu` to delay building/deploying the firmware until for 5 seconds, giving you a chance to put the firmware into bootloader mode. You can change the 5 to any number of seconds.
## Troubleshooting
1. Try running `make clean` if the make command fails.
WIP

29
Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM debian:jessie
MAINTAINER Erik Dasque <erik@frenchguys.com>
RUN apt-get update
RUN apt-get install --no-install-recommends -y build-essential \
gcc \
unzip \
wget \
zip \
gcc-avr \
binutils-avr \
avr-libc \
dfu-programmer \
dfu-util \
gcc-arm-none-eabi \
binutils-arm-none-eabi \
libnewlib-arm-none-eabi \
git
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
ENV keyboard=ergodox
ENV subproject=ez
ENV keymap=default
VOLUME /qmk
WORKDIR /qmk
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}

540
Makefile Normal file
View File

@@ -0,0 +1,540 @@
ifndef VERBOSE
.SILENT:
endif
# Never run this makefile in parallel, as it could screw things up
# It won't affect the submakes, so you still get the speedup from specifying -jx
.NOTPARALLEL:
# Allow the silent with lower caps to work the same way as upper caps
ifdef silent
SILENT = $(silent)
endif
ifdef SILENT
SUB_IS_SILENT := $(SILENT)
endif
# We need to make sure that silent is always turned off at the top level
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
override SILENT := false
ON_ERROR := error_occurred=1
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
ROOT_DIR := $(dir $(ROOT_MAKEFILE))
ifeq ($(ROOT_DIR),)
ROOT_DIR := .
endif
ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE))
ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))
ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred
MAKEFILE_INCLUDED=yes
# Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will become the new head
# and the PATH_ELEMENTS are the rest that are still unprocessed
define NEXT_PATH_ELEMENT
$$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
$$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
endef
# We change the / to spaces so that we more easily can work with the elements
# separately
PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
# Initialize the path elements list for further processing
$(eval $(call NEXT_PATH_ELEMENT))
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
# variables depending on which directory you stand in.
# It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose.
# If we are in a subfolder of keyboards
ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
$(eval $(call NEXT_PATH_ELEMENT))
KEYBOARD := $(CURRENT_PATH_ELEMENT)
$(eval $(call NEXT_PATH_ELEMENT))
# If we are in a subfolder of keymaps, or in other words in a keymap
# folder
ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
$(eval $(call NEXT_PATH_ELEMENT))
KEYMAP := $(CURRENT_PATH_ELEMENT)
# else if we are not in the keyboard folder itself
else ifneq ($(CURRENT_PATH_ELEMENT),)
# the we can assume it's a subproject, as no other folders
# should have make files in them
SUBPROJECT := $(CURRENT_PATH_ELEMENT)
$(eval $(call NEXT_PATH_ELEMENT))
# if we are inside a keymap folder of a subproject
ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
$(eval $(call NEXT_PATH_ELEMENT))
KEYMAP := $(CURRENT_PATH_ELEMENT)
endif
endif
endif
# Only consider folders with makefiles, to prevent errors in case there are extra folders
KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile)))
#Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders
ifdef keyboard
KEYBOARD := $(keyboard)
endif
ifdef sub
SUBPROJECT := $(sub)
endif
ifdef subproject
SUBPROJECT := $(subproject)
endif
ifdef keymap
KEYMAP := $(keymap)
endif
# Uncomment these for debugging
#$(info Keyboard: $(KEYBOARD))
#$(info Keymap: $(KEYMAP))
#$(info Subproject: $(SUBPROJECT))
#$(info Keyboards: $(KEYBOARDS))
# Set the default goal depending on where we are running make from
# this handles the case where you run make without any arguments
.DEFAULT_GOAL := all
ifneq ($(KEYMAP),)
ifeq ($(SUBPROJECT),)
# Inside a keymap folder, just build the keymap, with the
# default subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
else
# Inside a subproject keyamp folder, build the keymap
# for that subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-$(KEYMAP)
endif
else ifneq ($(SUBPROJECT),)
# Inside a subproject folder, build all keymaps for that subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-allkm
else ifneq ($(KEYBOARD),)
# Inside a keyboard folder, build all keymaps for all subprojects
# Note that this is different from the old behaviour, which would
# build only the default keymap of the default keyboard
.DEFAULT_GOAL := $(KEYBOARD)-allsp-allkm
endif
# Compare the start of the RULE variable with the first argument($1)
# If the rules equals $1 or starts with $1-, RULE_FOUND is set to true
# and $1 is removed from the RULE variable
# Otherwise the RULE_FOUND variable is set to false, and RULE left as it was
# The function is a bit tricky, since there's no built in $(startswith) function
define COMPARE_AND_REMOVE_FROM_RULE_HELPER
ifeq ($1,$$(RULE))
RULE:=
RULE_FOUND := true
else
STARTDASH_REMOVED=$$(subst START$1-,,START$$(RULE))
ifneq ($$(STARTDASH_REMOVED),START$$(RULE))
RULE_FOUND := true
RULE := $$(STARTDASH_REMOVED)
else
RULE_FOUND := false
endif
endif
endef
# This makes it easier to call COMPARE_AND_REMOVE_FROM_RULE, since it makes it behave like
# a function that returns the value
COMPARE_AND_REMOVE_FROM_RULE = $(eval $(call COMPARE_AND_REMOVE_FROM_RULE_HELPER,$1))$(RULE_FOUND)
# Recursively try to find a match for the start of the rule to be checked
# $1 The list to be checked
# If a match is found, then RULE_FOUND is set to true
# and MATCHED_ITEM to the item that was matched
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
ifneq ($1,)
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
MATCHED_ITEM := $$(firstword $1)
else
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
endif
endif
endef
# A recursive helper function for finding the longest match
# $1 The list to be checked
# It works by always removing the currently matched item from the list
# and call itself recursively, until a match is found
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
# Stop the recursion when the list is empty
ifneq ($1,)
RULE_BEFORE := $$(RULE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
# If a match is found in the current list, otherwise just return what we had before
ifeq ($$(RULE_FOUND),true)
# Save the best match so far and call itself recursively
BEST_MATCH := $$(MATCHED_ITEM)
BEST_MATCH_RULE := $$(RULE)
RULE_FOUND := false
RULE := $$(RULE_BEFORE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$$(filter-out $$(MATCHED_ITEM),$1)))
endif
endif
endef
# Recursively try to find the longest match for the start of the rule to be checked
# $1 The list to be checked
# If a match is found, then RULE_FOUND is set to true
# and MATCHED_ITEM to the item that was matched
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER
BEST_MATCH :=
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$1))
ifneq ($$(BEST_MATCH),)
RULE_FOUND := true
RULE := $$(BEST_MATCH_RULE)
MATCHED_ITEM := $$(BEST_MATCH)
else
RULE_FOUND := false
MATCHED_ITEM :=
endif
endef
# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST
TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND)
define ALL_IN_LIST_LOOP
OLD_RULE$1 := $$(RULE)
$$(eval $$(call $1,$$(ITEM$1)))
RULE := $$(OLD_RULE$1)
endef
define PARSE_ALL_IN_LIST
$$(foreach ITEM$1,$2,$$(eval $$(call ALL_IN_LIST_LOOP,$1)))
endef
# The entry point for rule parsing
# parses a rule in the format <keyboard>-<subproject>-<keymap>-<target>
# but this particular function only deals with the first <keyboard> part
define PARSE_RULE
RULE := $1
COMMANDS :=
# If the rule starts with allkb, then continue the parsing from
# PARSE_ALL_KEYBOARDS
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true)
$$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
$$(eval $$(call PARSE_TEST))
# If the rule starts with the name of a known keyboard, then continue
# the parsing from PARSE_KEYBOARD
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
# Otherwise use the KEYBOARD variable, which is determined either by
# the current directory you run make from, or passed in as an argument
else ifneq ($$(KEYBOARD),)
$$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD)))
else
$$(info make: *** No rule to make target '$1'. Stop.)
# Notice the tab instead of spaces below!
exit 1
endif
endef
# $1 = Keyboard
# Parses a rule in the format <subproject>-<keymap>-<target>
# the keyboard is already known when entering this function
define PARSE_KEYBOARD
CURRENT_KB := $1
# A subproject is any keyboard subfolder with a makefile
SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile)))
# if the rule starts with allsp, then continue with looping over all subprojects
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true)
$$(eval $$(call PARSE_ALL_SUBPROJECTS))
# A special case for matching the defaultsp (default subproject)
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,defaultsp),true)
$$(eval $$(call PARSE_SUBPROJECT,defaultsp))
# If the rule starts with the name of a known subproject
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true)
$$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM)))
# Try to use the SUBPROJECT variable, which is either determined by the
# directory which invoked make, or passed as an argument to make
else ifneq ($$(SUBPROJECT),)
$$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
# If there's no matching subproject, we assume it's the default
# This will allow you to leave the subproject part of the target out
else
$$(eval $$(call PARSE_SUBPROJECT,))
endif
endef
# if we are going to compile all keyboards, match the rest of the rule
# for each of them
define PARSE_ALL_KEYBOARDS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS)))
endef
# $1 Subproject
# When entering this, the keyboard and subproject are known, so now we need
# to determine which keymaps are going to get compiled
define PARSE_SUBPROJECT
# If we want to compile the default subproject, then we need to
# include the correct makefile to determine the actual name of it
CURRENT_SP := $1
ifeq ($$(CURRENT_SP),)
CURRENT_SP := defaultsp
endif
ifeq ($$(CURRENT_SP),defaultsp)
SUBPROJECT_DEFAULT=
$$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile)
CURRENT_SP := $$(SUBPROJECT_DEFAULT)
endif
# If current subproject is empty (the default was not defined), and we have a list of subproject
# then make all of them
ifeq ($$(CURRENT_SP),)
ifneq ($$(SUBPROJECTS),)
CURRENT_SP := allsp
endif
endif
# The special allsp is handled later
ifneq ($$(CURRENT_SP),allsp)
# get a list of all keymaps
KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
ifneq ($$(CURRENT_SP),)
# if the subproject is defined, then also look for keymaps inside the subproject folder
SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.)))
KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS))
endif
# if the rule after removing the start of it is empty (we haven't specified a kemap or target)
# compile all the keymaps
ifeq ($$(RULE),)
$$(eval $$(call PARSE_ALL_KEYMAPS))
# The same if allkm was specified
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true)
$$(eval $$(call PARSE_ALL_KEYMAPS))
# Try to match the specified keyamp with the list of known keymaps
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
$$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
# Otherwise try to match the keymap from the current folder, or arguments to the make command
else ifneq ($$(KEYMAP),)
$$(eval $$(call PARSE_KEYMAP,$$(KEYMAP)))
# No matching keymap found, so we assume that the rest of the rule is the target
# If we haven't been able to parse out a subproject, then make all of them
# This is consistent with running make without any arguments from the keyboard
# folder
else ifeq ($1,)
$$(eval $$(call PARSE_ALL_SUBPROJECTS))
# Otherwise, make all keymaps, again this is consistent with how it works without
# any arguments
else
$$(eval $$(call PARSE_ALL_KEYMAPS))
endif
else
# As earlier mentioned when allsb is specified, we call our self recursively
# for all of the subprojects
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS)))
endif
endef
# If we want to parse all subprojects, but the keyboard doesn't have any,
# then use defaultsp instead
define PARSE_ALL_SUBPROJECTS
ifeq ($$(SUBPROJECTS),)
$$(eval $$(call PARSE_SUBPROJECT,defaultsp))
else
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
endif
endef
# $1 Keymap
# This is the meat of compiling a keyboard, when entering this, everything is known
# keyboard, subproject, and keymap
# Note that we are not directly calling the command here, but instead building a list,
# which will later be processed
define PARSE_KEYMAP
CURRENT_KM = $1
# The rest of the rule is the target
# Remove the leading "-" from the target, as it acts as a separator
MAKE_TARGET := $$(patsubst -%,%,$$(RULE))
# We need to generate an unique indentifer to append to the COMMANDS list
COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM)
# If we are compiling a keyboard without a subproject, we want to display just the name
# of the keyboard, otherwise keyboard/subproject
ifeq ($$(CURRENT_SP),)
KB_SP := $(CURRENT_KB)
else
KB_SP := $(CURRENT_KB)/$$(CURRENT_SP)
endif
# Format it in bold
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
# Specify the variables that we are passing forward to submake
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM)
# And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
# The message to display
MAKE_MSG := $$(MSG_MAKE_KB)
# We run the command differently, depending on if we want more output or not
# The true version for silent output and the false version otherwise
$$(eval $$(call BUILD))
endef
define BUILD
MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR)
COMMANDS += $$(COMMAND)
COMMAND_true_$$(COMMAND) := \
printf "$$(MAKE_MSG)" | \
$$(MAKE_MSG_FORMAT); \
LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \
if [ $$$$? -gt 0 ]; \
then $$(PRINT_ERROR_PLAIN); \
elif [ "$$$$LOG" != "" ] ; \
then $$(PRINT_WARNING_PLAIN); \
else \
$$(PRINT_OK); \
fi;
COMMAND_false_$$(COMMAND) := \
printf "$$(MAKE_MSG)\n\n"; \
$$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; \
if [ $$$$? -gt 0 ]; \
then error_occurred=1; \
fi;
endef
# Just parse all the keymaps for a specific keyboard
define PARSE_ALL_KEYMAPS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
endef
define BUILD_TEST
TEST_NAME := $1
MAKE_TARGET := $2
COMMAND := $1
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET)
MAKE_VARS := TEST=$$(TEST_NAME)
MAKE_MSG := $$(MSG_MAKE_TEST)
$$(eval $$(call BUILD))
ifneq ($$(MAKE_TARGET),clean)
TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf
TESTS += $$(TEST_NAME)
TEST_MSG := $$(MSG_TEST)
$$(TEST_NAME)_COMMAND := \
printf "$$(TEST_MSG)\n"; \
$$(TEST_EXECUTABLE); \
if [ $$$$? -gt 0 ]; \
then error_occurred=1; \
fi; \
printf "\n";
endif
endef
define PARSE_TEST
TESTS :=
TEST_NAME := $$(firstword $$(subst -, ,$$(RULE)))
TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE)))
ifeq ($$(TEST_NAME),all)
MATCHED_TESTS := $$(TEST_LIST)
else
MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),))
endif
$$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET))))
endef
# Set the silent mode depending on if we are trying to compile multiple keyboards or not
# By default it's on in that case, but it can be overridden by specifying silent=false
# from the command line
define SET_SILENT_MODE
ifdef SUB_IS_SILENT
SILENT_MODE := $(SUB_IS_SILENT)
else ifeq ($$(words $$(COMMANDS)),1)
SILENT_MODE := false
else
SILENT_MODE := true
endif
endef
include $(ROOT_DIR)/message.mk
# The empty line is important here, as it will force a new shell to be created for each command
# Otherwise the command line will become too long with a lot of keyboards and keymaps
define RUN_COMMAND
+error_occurred=0;\
$(COMMAND_$(SILENT_MODE)_$(COMMAND))\
if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
endef
define RUN_TEST
+error_occurred=0;\
$($(TEST)_COMMAND)\
if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
endef
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
.PHONY: $(SUBPROJECTS)
$(SUBPROJECTS): %: %-allkm
# Let's match everything, we handle all the rule parsing ourselves
.PHONY: %
%:
# Check if we have the CMP tool installed
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
# Check if the submodules are dirty, and display a warning if they are
ifndef SKIP_GIT
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \
\ *) ;; \
*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \
esac \
done
endif
rm -f $(ERROR_FILE) > /dev/null 2>&1
$(eval $(call PARSE_RULE,$@))
$(eval $(call SET_SILENT_MODE))
# Run all the commands in the same shell, notice the + at the first line
# it has to be there to allow parallel execution of the submake
# This always tries to compile everything, even if error occurs in the middle
# But we return the error code at the end, to trigger travis failures
$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
$(foreach TEST,$(TESTS),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
# All should compile everything
.PHONY: all
all: all-keyboards test-all
# Define some shortcuts, mostly for compatibility with the old syntax
.PHONY: all-keyboards
all-keyboards: allkb-allsp-allkm
.PHONY: all-keyboards-defaults
all-keyboards-defaults: allkb-allsp-default
.PHONY: test
test: test-all
.PHONY: test-clean
test-clean: test-all-clean
# Generate the version.h file
ifndef SKIP_GIT
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
else
GIT_VERSION := NA
endif
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
include $(ROOT_DIR)/testlist.mk

450
README.md
View File

@@ -1,450 +0,0 @@
# Quantum Mechanical Keyboard Firmware
This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.co), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/).
QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, TMK.
This documentation is edited and maintained by Erez Zukerman of ErgoDox EZ. If you spot any typos or inaccuracies, please [open an issue](https://github.com/jackhumbert/qmk_firmware/issues/new).
The OLKB product firmwares are maintained by Jack, the Ergodox EZ by Erez, and the Clueboard by [Zach White](https://github.com/skullydazed).
## Important background info: TMK documentation
The documentation below explains QMK customizations and elaborates on some of the more useful features of TMK. To understand the base firmware, and especially what *layers* are and how they work, please see [TMK_README.md](/TMK_README.md).
## Getting started
* [BUILD_GUIDE.md](BUILD_GUIDE.md) contains instructions to set up a build environment, build the firmware, and deploy it to a keyboard. Once your build environment has been set up, all `make` commands to actually build the firmware must be run from a folder in `keyboard/`.
* If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there.
* If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh <project_name>`, which will create `/keyboard/<project_name>` with all the necessary components for a Quantum project.
### Makefile Options
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI controls
UNICODE_ENABLE = no # <-- This is how you disable an option, just set it to "no"
BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
### Customizing Makefile options on a per-keymap basis
If your keymap directory has a file called `makefile.mk` (note the lowercase filename, and the `.mk` extension), any Makefile options you set in that file will take precedence over other Makefile options (those set for Quantum as a whole or for your particular keyboard).
So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`.
## Quick aliases to common actions
Your keymap can include shortcuts to common operations (called "function actions" in tmk).
### Switching and toggling layers
`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack.
`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer).
`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack.
### Fun with modifier keys
* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias
* `RSFT(kc)` - applies right Shift to *kc*
* `LCTL(kc)` - applies left Control to *kc*
* `RCTL(kc)` - applies right Control to *kc*
* `LALT(kc)` - applies left Alt to *kc*
* `RALT(kc)` - applies right Alt to *kc*
* `LGUI(kc)` - applies left GUI (command/win) to *kc*
* `RGUI(kc)` - applies right GUI (command/win) to *kc*
* `HYPR(kc)` - applies Hyper (all modifiers) to *kc*
* `MEH(kc)` - applies Meh (all modifiers except Win/Cmd) to *kc*
* `LCAG(kc)` - applies CtrlAltGui to *kc*
You can also chain these, like this:
LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress.
The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`.
KC_TILD ~
KC_EXLM !
KC_AT @
KC_HASH #
KC_DLR $
KC_PERC %
KC_CIRC ^
KC_AMPR &
KC_ASTR *
KC_LPRN (
KC_RPRN )
KC_UNDS _
KC_PLUS +
KC_LCBR {
KC_RCBR }
KC_PIPE |
KC_COLN :
`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down.
These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available):
* MOD_LCTL
* MOD_LSFT
* MOD_LALT
* MOD_LGUI
These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped.
We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact:
* `CTL_T(kc)` - is LCTL when held and *kc* when tapped
* `SFT_T(kc)` - is LSFT when held and *kc* when tapped
* `ALT_T(kc)` - is LALT when held and *kc* when tapped
* `GUI_T(kc)` - is LGUI when held and *kc* when tapped
* `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
* `LCAG_T(kc)` - is CtrlAltGui when held and *kc* when tapped
* `MEH_T(kc)` - is like Hyper, but not as cool -- does not include the Cmd/Win key, so just sends Alt+Ctrl+Shift.
### Temporarily setting the default layer
`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
### Prevent stuck modifiers
Consider the following scenario:
1. Layer 0 has a key defined as Shift.
2. The same key is defined on layer 1 as the letter A.
3. User presses Shift.
4. User switches to layer 1 for whatever reason.
5. User releases Shift, or rather the letter A.
6. User switches back to layer 0.
Shift was actually never released and is still considered pressed.
If such situation bothers you add this to your `config.h`:
#define PREVENT_STUCK_MODIFIERS
This option uses 5 bytes of memory per every 8 keys on the keyboard
rounded up (5 bits per key). For example on Planck (48 keys) it uses
(48/8)\*5 = 30 bytes.
### Remember: These are just aliases
These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them.
## Macro shortcuts: Send a whole string when pressing just one key
Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c).
```c
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
{
switch(id) {
case 0: // this would trigger when you hit a key mapped as M(0)
if (record->event.pressed) {
return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes
}
break;
}
return MACRO_NONE;
};
```
A macro can include the following commands:
* I() change interval of stroke in milliseconds.
* D() press key.
* U() release key.
* T() type key(press and release).
* W() wait (milliseconds).
* END end mark.
So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends.
Note: Using macros to have your keyboard send passwords for you is possible, but a bad idea.
### Advanced macro functions
To get more control over the keys/actions your keyboard takes, the following functions are available to you in the `action_get_macro` function block:
* `record->event.pressed`
This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is
```c
if (record->event.pressed) {
// on keydown
} else {
// on keyup
}
```
* `register_code(<kc>);`
This sends the `<kc>` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`.
* `unregister_code(<kc>);`
Parallel to `register_code` function, this sends the `<kc>` keyup event to the computer. If you don't use this, the key will be held down until it's sent.
* `layer_on(<n>);`
This will turn on the layer `<n>` - the higher layer number will always take priority. Make sure you have `KC_TRNS` for the key you're pressing on the layer you're switching to, or you'll get stick there unless you have another plan.
* `layer_off(<n>);`
This will turn off the layer `<n>`.
* `clear_keyboard();`
This will clear all mods and keys currently pressed.
* `clear_mods();`
This will clear all mods currently pressed.
* `clear_keyboard_but_mods();`
This will clear all keys besides the mods currently pressed.
* `update_tri_layer(layer_1, layer_2, layer_3);`
If the user attempts to activate layer 1 AND layer 2 at the same time (for example, by hitting their respective layer keys), layer 3 will be activated. Layers 1 and 2 will _also_ be activated, for the purposes of fallbacks (so a given key will fall back from 3 to 2, to 1 -- and only then to 0).
#### Naming your macros
If you have a bunch of macros you want to refer to from your keymap, while keeping the keymap easily readable, you can just name them like so:
```
#define AUD_OFF M(6)
#define AUD_ON M(7)
#define MUS_OFF M(8)
#define MUS_ON M(9)
#define VC_IN M(10)
#define VC_DE M(11)
#define PLOVER M(12)
#define EXT_PLV M(13)
```
As was done on the [Planck default keymap](/keyboard/planck/keymaps/default/keymap.c#L33-L40)
#### Timer functionality
It's possible to start timers and read values for time-specific events - here's an example:
```c
static uint16_t key_timer;
key_timer = timer_read();
if (timer_elapsed(key_timer) < 100) {
// do something if less than 100ms have passed
} else {
// do something if 100ms or more have passed
}
```
It's best to declare the `static uint16_t key_timer;` outside of the macro block (top of file, etc).
#### Example 1: Single-key copy/paste (hold to copy, tap to paste)
With QMK, it's easy to make one key do two things, as long as one of those things is being a modifier. :) So if you want a key to act as Ctrl when held and send the letter R when tapped, that's easy: `CTL_T(KC_R)`. But what do you do when you want that key to send Ctrl-V (paste) when tapped, and Ctrl-C (copy) when held?
Here's what you do:
```
static uint16_t key_timer;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0: {
if (record->event.pressed) {
key_timer = timer_read(); // if the key is being pressed, we start the timer.
}
else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap.
return MACRO( D(LCTL), T(C), U(LCTL), END );
}
else {
return MACRO( D(LCTL), T(V), U(LCTL), END );
}
}
break;
}
}
return MACRO_NONE;
};
```
And then, to assign this macro to a key on your keyboard layout, you just use `M(0)` on the key you want to press for copy/paste.
#### Example 2: Space Cadet Shift (making it easy to send opening and closing parentheses)
In the [Modern Space Cadet Keyboard](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses), one of cooler features is the Shift Parentheses. To quote Steve Losh:
> When held while pressing other keys, act like Shift.
> When pressed and released on their own, type an opening or closing parenthesis (left and right shift respectively).
```
static uint16_t key_timer;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0: {
if (record->event.pressed) {
key_timer = timer_read(); // if the key is being pressed, we start the timer.
register_code(KC_LSFT); // we're now holding down Shift.
} else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down").
if (timer_elapsed(key_timer) < 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap.
register_code(KC_9); // sending 9 while Shift is held down gives us an opening paren
unregister_code(KC_9); // now let's let go of that key
}
unregister_code(KC_LSFT); // let's release the Shift key now.
}
break;
}
case 1: {
if (record->event.pressed) {
key_timer = timer_read(); // Now we're doing the same thing, only for the right shift/close paren key
register_code(KC_RSFT);
} else {
if (timer_elapsed(key_timer) < 150) {
register_code(KC_0);
unregister_code(KC_0);
}
unregister_code(KC_RSFT);
}
break;
}
}
return MACRO_NONE;
};
```
And then, to assign this macro to a key on your keyboard layout, you just use `M(0)` on the key you want to press for left shift/opening parens, and `M(1)` for right shift/closing parens.
## Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc)
Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap:
#include <keymap_colemak.h>
If you use Dvorak, use `keymap_dvorak.h` instead of `keymap_colemak.h` for this line. After including this line, you will get access to:
* `CM_*` for all of the Colemak-equivalent characters
* `DV_*` for all of the Dvorak-equivalent characters
These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features.
To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`.
## Additional language support
In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support).
## Unicode support
You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile.
## Other firmware shortcut keycodes
* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`)
* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things
* `BL_ON` - turns the backlight on
* `BL_OFF` - turns the backlight off
* `BL_<n>` - sets the backlight to level *n*
* `BL_INC` - increments the backlight level by one
* `BL_DEC` - decrements the backlight level by one
* `BL_TOGG` - toggles the backlight
* `BL_STEP` - steps through the backlight levels
Enable the backlight from the Makefile.
## MIDI functionalty
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.
## Bluetooth functionality
This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will.
## International Characters on Windows
[AutoHotkey](https://autohotkey.com) allows Windows users to create custom hotkeys among others.
The method does not require Unicode support in the keyboard itself but depends instead of AutoHotkey running in the background.
First you need to select a modifier combination that is not in use by any of your programs.
CtrlAltWin is not used very widely and should therefore be perfect for this.
There is a macro defined for a mod-tab combo `LCAG_T`.
Add this mod-tab combo to a key on your keyboard, e.g.: `LCAG_T(KC_TAB)`.
This makes the key behave like a tab key if pressed and released immediately but changes it to the modifier if used with another key.
In the default script of AutoHotkey you can define custom hotkeys.
<^<!<#a::Send, ä
<^<!<#<+a::Send, Ä
The hotkeys above are for the combination CtrlAltGui and CtrlAltGuiShift plus the letter a.
AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
## RGB Under Glow Mod
![Planck with RGB Underglow](https://raw.githubusercontent.com/yangliu/qmk_firmware/planck-rgb/keyboard/planck/keymaps/yang/planck-with-rgb-underglow.jpg)
Here is a quick demo on Youtube (with NPKC KC60) (https://www.youtube.com/watch?v=VKrpPAHlisY).
For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring the VCC, GND, and DI, you can enable the underglow in your Makefile.
RGBLIGHT_ENABLE = yes
Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time.
Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the F4 by default:
#define ws2812_PORTREG PORTF
#define ws2812_DDRREG DDRF
#define ws2812_pin PF4
#define RGBLED_NUM 14 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
You'll need to edit `PORTF`, `DDRF`, and `PF4` on the first three lines to the port/pin you have your LED(s) wired to, eg for B3 change things to:
#define ws2812_PORTREG PORTB
#define ws2812_DDRREG DDRB
#define ws2812_pin PB3
The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboard/planck/keymaps/yang/keymap.c`
### WS2812 Wiring
![WS2812 Wiring](https://raw.githubusercontent.com/yangliu/qmk_firmware/planck-rgb/keyboard/planck/keymaps/yang/WS2812-wiring.jpg)
Please note the USB port can only supply a limited amount of power to the keyboard (500mA by standard, however, modern computer and most usb hubs can provide 700+mA.). According to the data of NeoPixel from Adafruit, 30 WS2812 LEDs require a 5V 1A power supply, LEDs used in this mod should not more than 20.
## Safety Considerations
You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
- If a keyboard map does not include RESET, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing some bits.
- Messing with tmk_core / common files might make the keyboard
inoperable
- Too large a .hex file is trouble; `make dfu` will erase the block,
test the size (oops, wrong order!), which errors out, failing to
flash the keyboard
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in extra fruitsalad of options), so there is little risk
there.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.

View File

@@ -1,26 +0,0 @@
# Quick Start Directions
This project includes a Vagrantfile that will allow you to build a new firmware for your keyboard very easily without major changes to your primary operating system. This also ensures that when you clone the project and perform a build, you have the exact same environment as anyone else using the Vagrantfile to build. This makes it much easier for people to help you troubleshoot any issues you encounter.
## Requirements
Using the Vagrantfile in this repository requires you have [Vagrant](http://www.vagrantup.com/) as well as [VirtualBox](https://www.virtualbox.org/) (or [VMware Workstation](https://www.vmware.com/products/workstation) and [Vagrant VMware plugin](http://www.vagrantup.com/vmware) but the (paid) VMware plugin requires a licensed copy of VMware Workstation/Fusion).
*COMPATIBILITY NOTICE* Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12.
Other than having Vagrant and Virtualbox installed and possibly a restart of your computer afterwards, you can simple run a 'vagrant up' anywhere inside the folder where you checked out this project and it will start a Linux virtual machine that contains all the tools required to build this project. There is a post Vagrant startup hint that will get you off on the right foot, otherwise you can also reference the build documentation below.
Build Firmware and Program Controller
-------------------------------------
See [doc/build.md](tmk_core/doc/build.md), or the README in the particular keyboard/* folder.
Change your keymap
------------------
See [doc/keymap.md](tmk_core/doc/keymap.md).
## Flashing the firmware
The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/readme.md) gives a great example.
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.

186
Vagrantfile vendored
View File

@@ -1,88 +1,98 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# You can only have one config.vm.box uncommented at a time
# Comment this and uncomment another if you don't want to use the minimal Arch box
config.vm.box = "dragon788/arch-ala-elasticdog"
# VMware/Virtualbox 64 bit
# config.vm.box = "phusion/ubuntu-14.04-amd64"
#
# VMware/Virtualbox 64 bit
#config.vm.box = "puphpet/centos65-x64"
#
# The opensuse boxes don't have dfu-util in their default repositories
#
# The virtualbox version has tools issues
# VMware/Virtualbox 64 bit
#config.vm.box = "bento/opensuse-13.2-x86_64"
#
# Virtualbox only
#config.vm.box = "bento/opensuse-13.2-i386"
# config.vm.box = ""
# config.vm.box = ""
# This section allows you to customize the Virtualbox VM
# settings, ie showing the GUI or upping the memory
# or cores if desired
config.vm.provider "virtualbox" do |vb|
# Hide the VirtualBox GUI when booting the machine
vb.gui = false
# Uncomment the below lines if you want to program
# your Teensy via the VM rather than your host OS
#vb.customize ['modifyvm', :id, '--usb', 'on']
#vb.customize ['usbfilter', 'add', '0',
# '--target', :id,
# '--name', 'teensy',
# '--vendorid', '0x16c0',
# '--productid','0x0478'
# ]
# Customize the amount of memory on the VM:
vb.memory = "512"
end
# This section allows you to customize the VMware VM
# settings, ie showing the GUI or upping the memory
# or cores if desired
config.vm.provider "vmware_workstation" do |vmw|
# Hide the VMware GUI when booting the machine
vmw.gui = false
# Customize the amount of memory on the VM:
vmw.memory = "512"
end
config.vm.provider "vmware_fusion" do |vmf|
# Hide the vmfare GUI when booting the machine
vmf.gui = false
# Customize the amount of memory on the VM:
vmf.memory = "512"
end
# This script ensures the required packages for AVR programming are installed
# It also ensures the system always gets the latest updates when powered on
# If this causes issues you can run a 'vagrant destroy' and then
# add a # before ,args: and run 'vagrant up' to get a working
# non-updated box and then attempt to troubleshoot or open a Github issue
config.vm.provision "shell", run: "always", path: "avr_setup.sh", args: "-update"
config.vm.post_up_message = """
Log into the VM using 'vagrant ssh' on OSX or from Git Bash (Win)
or 'vagrant ssh-config' and Putty or Bitvise SSH or another SSH tool
Change directory (cd) to the keyboard you wish to program
(Optionally) modify your layout,
then run 'make clean'
and then 'make' to compile the .eep and .hex files.
Or you can copy and paste the example line below.
cd /vagrant; cd keyboard; cd ergodox_ez; make clean; make
"""
end
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# You can only have one config.vm.box uncommented at a time
# Comment this and uncomment another if you don't want to use the minimal Arch box
#config.vm.box = "dragon788/arch-ala-elasticdog"
# VMware/Virtualbox 64 bit
config.vm.box = "phusion/ubuntu-14.04-amd64"
#
# VMware/Virtualbox 64 bit
#config.vm.box = "puphpet/centos65-x64"
#
# The opensuse boxes don't have dfu-util in their default repositories
#
# The virtualbox version has tools issues
# VMware/Virtualbox 64 bit
#config.vm.box = "bento/opensuse-13.2-x86_64"
#
# Virtualbox only
#config.vm.box = "bento/opensuse-13.2-i386"
# config.vm.box = ""
# config.vm.box = ""
# This section allows you to customize the Virtualbox VM
# settings, ie showing the GUI or upping the memory
# or cores if desired
config.vm.provider "virtualbox" do |vb|
# Hide the VirtualBox GUI when booting the machine
vb.gui = false
# Uncomment the below lines if you want to program
# your Teensy via the VM rather than your host OS
#vb.customize ['modifyvm', :id, '--usb', 'on']
#vb.customize ['usbfilter', 'add', '0',
# '--target', :id,
# '--name', 'teensy',
# '--vendorid', '0x16c0',
# '--productid','0x0478'
# ]
# Customize the amount of memory on the VM:
vb.memory = "512"
end
# This section allows you to customize the VMware VM
# settings, ie showing the GUI or upping the memory
# or cores if desired
config.vm.provider "vmware_workstation" do |vmw|
# Hide the VMware GUI when booting the machine
vmw.gui = false
# Customize the amount of memory on the VM:
vmw.memory = "512"
end
config.vm.provider "vmware_fusion" do |vmf|
# Hide the vmfare GUI when booting the machine
vmf.gui = false
# Customize the amount of memory on the VM:
vmf.memory = "512"
end
# Docker provider pulls from hub.docker.com respecting docker.image if
# config.vm.box is nil. Note that this bind-mounts from the current dir to
# /vagrant in the guest, so unless your UID is 1000 to match vagrant in the
# image, you'll need to: chmod -R a+rw .
config.vm.provider "docker" do |docker, override|
override.vm.box = nil
docker.image = "jesselang/debian-vagrant:jessie"
docker.has_ssh = true
end
# This script ensures the required packages for AVR programming are installed
# It also ensures the system always gets the latest updates when powered on
# If this causes issues you can run a 'vagrant destroy' and then
# add a # before ,args: and run 'vagrant up' to get a working
# non-updated box and then attempt to troubleshoot or open a Github issue
config.vm.provision "shell", run: "always", path: "./util/install_dependencies.sh", args: "-update"
config.vm.post_up_message = <<-EOT
Log into the VM using 'vagrant ssh' on OSX or from Git Bash (Win)
or 'vagrant ssh-config' and Putty or Bitvise SSH or another SSH tool
Change directory (cd) to the keyboard you wish to program
(Optionally) modify your layout,
then run 'make clean'
and then 'make' to compile the .eep and .hex files.
Or you can copy and paste the example line below.
cd /vagrant; cd keyboards; cd ergodox; make clean; make
EOT
end

View File

@@ -1,72 +0,0 @@
#!/usr/bin/env bash
# This script will attempt to setup the Linux dependencies for compiling QMK/TMK
# This could probably go much lower, but since we are including an Arch vagrant,
# making it the first match makes sense
if [[ -n "$(type -P pacman )" ]]; then
# Arch linux and derivatives like Apricity
# Future improvements:
# Allow user to speed up package installs using powerpill/wget tweaks
# Always run the pacman mirror update script if possible when vagrant comes up
# This will ensure that users never get stalled on a horribly slow mirror
pacman -Syyu --needed --noconfirm
pacman -S --needed --noconfirm \
base-devel \
avr-gcc \
avr-binutils \
avr-libc \
dfu-util
elif [[ -n "$(type -P apt-get)" ]]; then
# Debian and derivatives
# This block performs completely non-interactive updates {{
export DEBIAN_FRONTEND=noninteractive
export DEBCONF_NONINTERACTIVE_SEEN=true
echo "grub-pc hold" | dpkg --set-selections
apt-get -y update
apt-get -y --allow-unauthenticated upgrade \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold"
# }}
apt-get install -y \
build-essential \
gcc \
unzip \
wget \
zip \
gcc-avr \
binutils-avr \
avr-libc \
dfu-util
elif [[ -n "$(type -P yum)" ]]; then
# Fedora, CentOS or RHEL and derivatives
yum -y makecache && yum -y update
yum -y install \
gcc \
glibc-headers \
kernel-devel \
kernel-headers \
make \
perl \
git \
wget \
avr-binutils \
avr-gcc \
avr-libc \
dfu-util
elif [[ -n "$(type -P zypper)" ]]; then
# openSUSE
zypper --non-interactive refresh && zypper --non-interactive update
zypper --non-interactive install \
git \
make \
gcc \
kernel-devel \
patch \
wget \
dfu-programmer
fi

263
build_keyboard.mk Normal file
View File

@@ -0,0 +1,263 @@
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
include common.mk
ifneq ($(SUBPROJECT),)
TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
else
TARGET ?= $(KEYBOARD)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
endif
# Force expansion
TARGET := $(TARGET)
MASTER ?= left
ifdef master
MASTER = $(master)
endif
ifeq ($(MASTER),right)
OPT_DEFS += -DMASTER_IS_ON_RIGHT
else
ifneq ($(MASTER),left)
$(error MASTER does not have a valid value(left/right))
endif
endif
KEYBOARD_PATH := keyboards/$(KEYBOARD)
KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
ifneq ("$(wildcard $(KEYBOARD_C))","")
include $(KEYBOARD_PATH)/rules.mk
else
$(error "$(KEYBOARD_C)" does not exist)
endif
ifneq ($(SUBPROJECT),)
SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
ifneq ("$(wildcard $(SUBPROJECT_C))","")
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
include $(SUBPROJECT_PATH)/rules.mk
else
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
endif
endif
# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
ifdef MCU_FAMILY
PLATFORM=CHIBIOS
else
PLATFORM=AVR
endif
ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
endif
endif
CONFIG_H = $(KEYBOARD_PATH)/config.h
ifneq ($(SUBPROJECT),)
ifneq ("$(wildcard $(SUBPROJECT_C))","")
CONFIG_H = $(SUBPROJECT_PATH)/config.h
endif
endif
# Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
PROJECT_CONFIG := $(CONFIG_H)
MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c
SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c
ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","")
-include $(SUBPROJ_KEYMAP_PATH)/Makefile
KEYMAP_C := $(SUBPROJ_KEYMAP_C)
KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH)
else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
-include $(MAIN_KEYMAP_PATH)/Makefile
KEYMAP_C := $(MAIN_KEYMAP_C)
KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
else
$(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist)
endif
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H = $(KEYMAP_PATH)/config.h
endif
# # project specific files
SRC += $(KEYBOARD_C) \
$(KEYMAP_C) \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/process_keycode/process_leader.c
ifneq ($(SUBPROJECT),)
SRC += $(SUBPROJECT_C)
endif
ifndef CUSTOM_MATRIX
SRC += $(QUANTUM_DIR)/matrix.c
endif
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
OPT_DEFS += -DAPI_SYSEX_ENABLE
SRC += $(QUANTUM_DIR)/api/api_sysex.c
OPT_DEFS += -DAPI_ENABLE
SRC += $(QUANTUM_DIR)/api.c
MIDI_ENABLE=yes
endif
ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif
ifeq ($(strip $(COMBO_ENABLE)), yes)
OPT_DEFS += -DCOMBO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
OPT_DEFS += -DVIRTSER_ENABLE
endif
ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
SRC += $(QUANTUM_DIR)/audio/audio.c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_ENABLE = yes
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_ENABLE = yes
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/light_ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
endif
ifeq ($(strip $(PRINTING_ENABLE)), yes)
OPT_DEFS += -DPRINTING_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
OPT_DEFS += $(SERIAL_DEFS)
VAPTH += $(SERIAL_PATH)
endif
ifneq ($(strip $(VARIABLE_TRACE)),)
SRC += $(QUANTUM_DIR)/variable_trace.c
OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
endif
endif
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
ifneq ($(SUBPROJECT),)
VPATH += $(SUBPROJECT_PATH)
endif
VPATH += $(KEYBOARD_PATH)
VPATH += $(COMMON_VPATH)
include $(TMK_PATH)/protocol.mk
include $(TMK_PATH)/common.mk
SRC += $(TMK_COMMON_SRC)
OPT_DEFS += $(TMK_COMMON_DEFS)
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
ifeq ($(PLATFORM),AVR)
ifeq ($(strip $(PROTOCOL)), VUSB)
include $(TMK_PATH)/protocol/vusb.mk
else
include $(TMK_PATH)/protocol/lufa.mk
endif
include $(TMK_PATH)/avr.mk
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
include $(VISUALIZER_PATH)/visualizer.mk
endif
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
all: build sizeafter
# Change the build target to build a HEX file or a library.
build: elf hex
#build: elf hex eep lss sym
#build: lib
include $(TMK_PATH)/rules.mk

57
build_test.mk Normal file
View File

@@ -0,0 +1,57 @@
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
include common.mk
TARGET=test/$(TEST)
GTEST_OUTPUT = $(BUILD_DIR)/gtest
TEST_OBJ = $(BUILD_DIR)/test_obj
OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT)
GTEST_INC := \
$(LIB_PATH)/googletest/googletest/include\
$(LIB_PATH)/googletest/googlemock/include\
GTEST_INTERNAL_INC :=\
$(LIB_PATH)/googletest/googletest\
$(LIB_PATH)/googletest/googlemock
$(GTEST_OUTPUT)_SRC :=\
googletest/src/gtest-all.cc\
googletest/src/gtest_main.cc\
googlemock/src/gmock-all.cc
$(GTEST_OUTPUT)_DEFS :=
$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
LDFLAGS += -lstdc++ -lpthread -shared-libgcc
CREATE_MAP := no
VPATH +=\
$(LIB_PATH)/googletest\
$(LIB_PATH)/googlemock
all: elf
VPATH += $(COMMON_VPATH)
include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
include $(TMK_PATH)/native.mk
include $(TMK_PATH)/rules.mk
$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)
$(shell mkdir -p $(TEST_OBJ) 2>/dev/null)

27
common.mk Normal file
View File

@@ -0,0 +1,27 @@
include message.mk
# Directory common source files exist
TOP_DIR = .
TMK_DIR = tmk_core
TMK_PATH = $(TOP_DIR)/$(TMK_DIR)
LIB_PATH = $(TOP_DIR)/lib
QUANTUM_DIR = quantum
QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
BUILD_DIR := $(TOP_DIR)/.build
SERIAL_DIR := $(QUANTUM_DIR)/serial_link
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
COMMON_VPATH := $(TOP_DIR)
COMMON_VPATH += $(TMK_PATH)
COMMON_VPATH += $(QUANTUM_PATH)
COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
COMMON_VPATH += $(QUANTUM_PATH)/audio
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
COMMON_VPATH += $(QUANTUM_PATH)/api
COMMON_VPATH += $(SERIAL_PATH)

View File

@@ -1,141 +0,0 @@
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device.
# Please customize your programmer settings(PROGRAM_CMD)
#
# make teensy = Download the hex file to the device, using teensy_loader_cli.
# (must have teensy_loader_cli installed).
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = adb_usb_lufa
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = keymap_common.c \
matrix.c \
led.c \
adb.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_ansi.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover
ADB_MOUSE_ENABLE = yes
# ADB Mice need acceleration for todays much bigger screens.
OPT_DEFS += -DADB_MOUSE_MAXACC=8
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,73 +0,0 @@
# Target file name (without extension).
TARGET = adb_usb_pjrc
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap_common.c \
matrix.c \
led.c \
adb.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_ansi.c $(SRC)
endif
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+5000)
EXTRAKEY_ENABLE = yes # Audio control and System control(+600)
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover(+500)
ADB_MOUSE_ENABLE = yes
# ADB Mice need acceleration for todays much bigger screens.
OPT_DEFS += -DADB_MOUSE_MAXACC=8
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/pjrc.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,103 +0,0 @@
ADB to USB keyboard converter
=============================
This firmware converts ADB keyboard protocol to USB.
You can use PJRC Teensy for this converter, though, other USB AVR(ATMega32U4, AT90USB64/128 or etc) should work.
But binary size is about 10KB or more it doesn't fit into 8K flash like ATMega8U2.
Discuss: http://geekhack.org/showwiki.php?title=Island:14290
README FIRST
------------
https://github.com/tmk/tmk_keyboard
https://github.com/tmk/tmk_keyboard/tree/master/converter/adb_usb
Also check these when you are in trouble.
https://github.com/tmk/tmk_keyboard/wiki
https://github.com/tmk/tmk_keyboard/labels/NOTE
Wiring
------
Connect ADB pins to controller just by 3 lines(Vcc, GND, Data). By default Data line uses port PD0.
ADB female socket from the front:
,--_--.
/ o4 3o \ 1: DATA
| o2 1o | 2: Power SW
- === - 3: VCC
`-___-' 4: GND
This converter uses AVR's internal pull-up, but it seems to be too weak, in particular when you want to use a long or coiled cable. The external pull-up resistor(1K-10K Ohm) on Data is strongly recommended.(It is almost must!)
https://github.com/tmk/tmk_keyboard/wiki/FAQ#pull-up-resistor
Pull-up resister:
Keyboard Conveter
,------.
5V------+------|VCC |
| | |
[R] | |
| | |
Signal--+------|PD0 |
| |
GND------------|GND |
`------'
R: 1K Ohm resistor
Define following macros for ADB connection in config.h if you use other than port PD0.
ADB_PORT, ADB_PIN, ADB_DDR, ADB_DATA_BIT
Build
-----
See doc/build.md. In short,
$ make clean
$ make
You can select keymap(ansi is default) like this:
$ make KEYMAP=[ansi|iso|hasu]
Keymap
------
You can change a keymap by editing code of keymap_[ansi|iso|hasu|yours].c.
How to define the keymap is probably obvious. You can find key symbols in common/keycode.h. And see doc/keymap.md for more detail.
Magic command
-------------
To get help press `h` holding Magic key. Magic key is `Power key`.
Locking CapsLock
----------------
Many of old ADB keyboards have mechanical push-lock switch for Capslock key and this converter supports the locking Capslock key by default. See README in top directory for more detail about this feature.
https://github.com/tmk/tmk_keyboard/blob/master/README.md#mechanical-locking-support
Also you may want to remove locking pin from the push-lock switch to use capslock as a normal momentary switch.
Notes
-----
Not-extended ADB keyboards have no discrimination between right modifier and left one,
you will always see left control even if you press right control key.
Apple Extended Keyboard and Apple Extended Keyboard II can discriminate both side
modifiers except for GUI key(Windows/Command).
And most ADB keyboard has no diodes in its matrix so they are not NKRO,
though ADB protocol itself supports it. See protocol/adb.c for more info.
If keyboard has ISO layout you need to use ISO keymap with `make KEYMAP=iso`. With ANSI
keymap you will suffer from swapped keys problem.
https://github.com/tmk/tmk_keyboard/issues/35
EOF

View File

@@ -1,63 +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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0ADB
#define DEVICE_VER 0x0101
#define MANUFACTURER t.m.k.
#define PRODUCT ADB keyboard converter
#define DESCRIPTION convert ADB keyboard to USB
/* matrix size */
#define MATRIX_ROWS 16 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
#define MATRIX_ROW(code) ((code)>>3&0x0F)
#define MATRIX_COL(code) ((code)&0x07)
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* legacy keymap support */
#define USE_LEGACY_KEYMAP
/* ADB port setting */
#define ADB_PORT PORTD
#define ADB_PIN PIND
#define ADB_DDR DDRD
#define ADB_DATA_BIT 0
//#define ADB_PSW_BIT 1 // optional
/* key combination for command */
#ifndef __ASSEMBLER__
#include "adb.h"
#include "matrix.h"
#define IS_COMMAND() ( \
matrix_is_on(MATRIX_ROW(ADB_POWER), MATRIX_COL(ADB_POWER)) \
)
#endif
#endif

View File

@@ -1,16 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEYMAP_EXT_ANSI(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, NO,
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PEQL,PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9, PMNS,
LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
LCTL,LALT,LGUI, SPC, RALT,RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -1,30 +0,0 @@
/*
Copyright 2011,2012,2013 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 "keymap_common.h"
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
}
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
}

View File

@@ -1,212 +0,0 @@
/*
Copyright 2011,2012,2013 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/>.
*/
#ifndef KEYMAP_COMMON_H
#define KEYMAP_COMMON_H
#include <stdint.h>
#include <stdbool.h>
#include <avr/pgmspace.h>
#include "keycode.h"
#include "action.h"
#include "action_macro.h"
#include "report.h"
#include "print.h"
#include "debug.h"
#include "keymap.h"
extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
extern const uint16_t fn_actions[];
/* M0115 Apple Extended Keyboard ANSI
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|
* `---' `---------------' `---------------' `---------------' `-----------' `---'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| -|
* |-----------------------------------------------------------| `-----------' |---------------|
* |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| +|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Ctrl |Opt |Cmd | Space | |Opt |Ctrl | |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define KEYMAP_EXT_ANSI( \
K35, K7A,K78,K63,K76, K60,K61,K62,K64, K65,K6D,K67,K6F, K69,K6B,K71, K7F, \
K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \
K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K75,K77,K79, K59,K5B,K5C,K4E, \
K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K45, \
K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \
K36,K3A,K37, K31, K7C,K7D, K3B,K3D,K3C, K52, K41,K4C \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_NUBS, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_PENT, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \
{ KC_F17, KC_##K41, KC_NO, KC_##K43, KC_F18, KC_##K45, KC_NO, KC_##K47 }, \
{ KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_F18 }, \
{ KC_F19, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_F20, KC_##K5B, KC_##K5C, KC_INT3, KC_INT1, KC_PCMM }, \
{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_LANG2, KC_##K67 }, \
{ KC_LANG1, KC_##K69, KC_F16, KC_##K6B, KC_NO, KC_##K6D, KC_APP, KC_##K6F }, \
{ KC_NO, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
{ KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_NO, KC_##K7F } \
}
/* M0115 Apple Extended Keyboard ISO
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|
* `---' `---------------' `---------------' `---------------' `-----------' `---'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Retur| |Del|End|PgD| | 7| 8| 9| -|
* |------------------------------------------------------` | `-----------' |---------------|
* |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #| | | 4| 5| 6| +|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Ctrl |Opt |Cmd | Space | |Opt |Ctrl | |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define KEYMAP_EXT_ISO( \
K35, K7A,K78,K63,K76, K60,K61,K62,K64, K65,K6D,K67,K6F, K69,K6B,K71, K7F, \
K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \
K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K24, K75,K77,K79, K59,K5B,K5C,K4E, \
K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,K2A, K56,K57,K58,K45, \
K38,K0A,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \
K36,K3A,K37, K31, K7C,K7D, K3B,K3D,K3C, K52, K41,K4C \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_PENT, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \
{ KC_F17, KC_##K41, KC_NO, KC_##K43, KC_F18, KC_##K45, KC_NO, KC_##K47 }, \
{ KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_F18 }, \
{ KC_F19, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_F20, KC_##K5B, KC_##K5C, KC_INT3, KC_INT1, KC_PCMM }, \
{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_LANG2, KC_##K67 }, \
{ KC_LANG1, KC_##K69, KC_F16, KC_##K6B, KC_NO, KC_##K6D, KC_APP, KC_##K6F }, \
{ KC_NO, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
{ KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_NO, KC_##K7F } \
}
/* M0116 Apple Standard Keyboard ANSI
* +-------+
* | power |
* +-------+
* +---+---+---+---+---+---+---+---+---+---+---+---+---+-----+ +---+---+---+---+
* |esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | bks | |clr| = | / | * |
* +---------------------------------------------------------+ +---+---+---+---+
* | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | | | 7 | 8 | 9 | + |
* +-----------------------------------------------------+ | +---+---+---+---+
* | ctrl | a | s | d | f | g | h | j | k | l | ; | ' |return| | 4 | 5 | 6 | - |
* +---------------------------------------------------------+ +---+---+---+---+
* | shift | z | x | c | v | b | n | m | , | . | / | shift | | 1 | 2 | 3 | |
* +---------------------------------------------------------+ +-------+---|ent|
* |cap|opt|comnd| ` | | \ |lef|rig|dwn|up | | 0 | . | |
* +---------------------------------------------------------+ +-------+---+---+
*/
#define KEYMAP_M0116_ANSI( \
K7F, \
K35,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K51,K4B,K43, \
K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K45, \
K36,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K4E, \
K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K53,K54,K55, \
K39,K3A,K37,K32, K31, K2A,K3B,K3C,K3D,K3E, K52, K41,K4C \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_NO, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_NO, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \
{ KC_NO, KC_##K41, KC_NO, KC_##K43, KC_NO, KC_##K45, KC_NO, KC_##K47 }, \
{ KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_NO }, \
{ KC_NO, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_NO, KC_##K5B, KC_##K5C, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO , KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO , KC_NO, KC_NO , KC_##K7B, KC_NO, KC_NO, KC_NO, KC_##K7F } \
}
#endif
/*
ADB ANSI/ISO Keymapping Note
============================
ANSI
,----------- ----------.
| *a| 1| 2 =|Backspa|
|----------- ----------|
|Tab | Q| | ]| *c|
|----------- ----------|
|CapsLo| A| '|Return |
|----------- ----------|
|Shift | Shift |
`----------- ----------'
ISO
,----------- ----------.
| *a| 1| 2 =|Backspa|
|----------- ----------|
|Tab | Q| | ]|Retur|
|----------- -----` |
|CapsLo| A| '| *c| |
|----------- ----------|
|Shif| *b| Shift |
`----------- ----------'
ADB Keyboard scan code:
ADB scan code USB usage
------------- ---------
Key ANSI ISO ANSI ISO
---------------------------------------------
*a 0x32 0x0A 0x35 0x35
*b ---- 0x32 ---- 0x64
*c 0x2A 0x2A 0x31 0x31(or 0x32)
TMK ADB-USB mapping:
ADB USB(ANSI) USB(ISO)
---------------------------------
0x32 0x35 0x64
0x0A ---- 0x35
0x2A 0x31 0x31(or 0x32)
Note that mappings of ADB code 0x32 are diffrent between ANSI and ISO keyboard.
https://github.com/tmk/tmk_keyboard/issues/35
*/

View File

@@ -1,58 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default Layer: plain keymap
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| | |
* `---' `---------------' `---------------' `---------------' `-----------' `---'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Fn0| |Del|End|PgD| | 7| 8| 9| -|
* |-----------------------------------------------------------| `-----------' |---------------|
* |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| +|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Ctrl |Gui |Alt | Space |Alt |Gui |Ctrl | |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP_EXT_ANSI(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, NO,
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,EQL, PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,FN0, DEL, END, PGDN, P7, P8, P9, PMNS,
LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
LCTL,LGUI,LALT, SPC, RGUI,RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
/* Default Layer: plain keymap
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
* |` | |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| | |
* `---' `---------------' `---------------' `---------------' `-----------' `---'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* |Esc|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | |Ins|Hom|PgU| |NmL|Mb1|Mb2|Mb3|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U|PrS|ScL|Pau|Up |Ins| Fn0| |Del|End|PgD| |MwD|McU|MwU|MwD|
* |-----------------------------------------------------------| `-----------' |---------------|
* |CapsLo|VoD|VoU|Mut| F| G| H| J|Hom|PgU|Lef|Rig|Return | |McL|McD|McR|MwU|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M|End|PgD|Dow|Shift | |PgU| |MwL|McD|MwR| |
* |-----------------------------------------------------------| ,-----------. |-----------|Mb3|
* |Ctrl |Gui |Alt | Space |Alt |Gui |Ctrl | |Hom|PgD|End| | Mb1|Mb2| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP_EXT_ANSI(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, NO,
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, INS, HOME,PGUP, NLCK,BTN1,BTN2,BTN3,
TAB, Q, W, E, R, T, Y, U, PSCR,SLCK,PAUS,UP, INS, FN0, DEL, END, PGDN, WH_D,MS_U,WH_U,WH_D,
LCAP,VOLD,VOLU,MUTE,F, G, H, J, HOME,PGUP,LEFT,RGHT, ENT, MS_L,MS_D,MS_R,WH_U,
LSFT,Z, X, C, V, B, N, M, END, PGDN,DOWN, RSFT, PGUP, WH_L,MS_D,WH_R,
LCTL,LGUI,LALT, SPC, RGUI,RCTL, HOME,PGDN,END, BTN1, BTN2,BTN3
),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_TAP_KEY(1, KC_BSLS),
};

View File

@@ -1,16 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEYMAP_EXT_ISO(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, NO,
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PEQL,PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,ENT, DEL, END, PGDN, P7, P8, P9, PMNS,
LCAP,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NUHS, P4, P5, P6, PPLS,
LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
LCTL,LALT,LGUI, SPC, RALT,RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -1,27 +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 <util/delay.h>
#include "adb.h"
#include "led.h"
void led_set(uint8_t usb_led)
{
adb_host_kbd_led(~usb_led);
}

View File

@@ -1,296 +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/>.
*/
/*
* scan matrix
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "util.h"
#include "debug.h"
#include "adb.h"
#include "matrix.h"
#include "report.h"
#include "host.h"
#if (MATRIX_COLS > 16)
# error "MATRIX_COLS must not exceed 16"
#endif
#if (MATRIX_ROWS > 255)
# error "MATRIX_ROWS must not exceed 255"
#endif
static bool is_modified = false;
static report_mouse_t mouse_report = {};
// matrix state buffer(1:on, 0:off)
#if (MATRIX_COLS <= 8)
static uint8_t matrix[MATRIX_ROWS];
#else
static uint16_t matrix[MATRIX_ROWS];
#endif
#ifdef MATRIX_HAS_GHOST
static bool matrix_has_ghost_in_row(uint8_t row);
#endif
static void register_key(uint8_t key);
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
adb_host_init();
// wait for keyboard to boot up and receive command
_delay_ms(1000);
// Enable keyboard left/right modifier distinction
// Addr:Keyboard(0010), Cmd:Listen(10), Register3(11)
// upper byte: reserved bits 0000, device address 0010
// lower byte: device handler 00000011
adb_host_listen(0x2B,0x02,0x03);
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
debug_enable = true;
//debug_matrix = true;
//debug_keyboard = true;
//debug_mouse = true;
print("debug enabled.\n");
return;
}
#ifdef ADB_MOUSE_ENABLE
#ifdef MAX
#undef MAX
#endif
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
void adb_mouse_task(void)
{
uint16_t codes;
int16_t x, y;
static int8_t mouseacc;
_delay_ms(12); // delay for preventing overload of poor ADB keyboard controller
codes = adb_host_mouse_recv();
// If nothing received reset mouse acceleration, and quit.
if (!codes) {
mouseacc = 1;
return;
};
// Bit sixteen is button.
if (~codes & (1 << 15))
mouse_report.buttons |= MOUSE_BTN1;
if (codes & (1 << 15))
mouse_report.buttons &= ~MOUSE_BTN1;
// lower seven bits are movement, as signed int_7.
// low byte is X-axis, high byte is Y.
y = (codes>>8 & 0x3F);
x = (codes>>0 & 0x3F);
// bit seven and fifteen is negative
// usb does not use int_8, but int_7 (measuring distance) with sign-bit.
if (codes & (1 << 6))
x = (x-0x40);
if (codes & (1 << 14))
y = (y-0x40);
// Accelerate mouse. (They weren't meant to be used on screens larger than 320x200).
x *= mouseacc;
y *= mouseacc;
// Cap our two bytes per axis to one byte.
// Easier with a MIN-function, but since -MAX(-a,-b) = MIN(a,b)...
// I.E. MIN(MAX(x,-127),127) = -MAX(-MAX(x, -127), -127) = MIN(-MIN(-x,127),127)
mouse_report.x = -MAX(-MAX(x, -127), -127);
mouse_report.y = -MAX(-MAX(y, -127), -127);
if (debug_mouse) {
print("adb_host_mouse_recv: "); print_bin16(codes); print("\n");
print("adb_mouse raw: [");
phex(mouseacc); print(" ");
phex(mouse_report.buttons); print("|");
print_decs(mouse_report.x); print(" ");
print_decs(mouse_report.y); print("]\n");
}
// Send result by usb.
host_mouse_send(&mouse_report);
// increase acceleration of mouse
mouseacc += ( mouseacc < ADB_MOUSE_MAXACC ? 1 : 0 );
return;
}
#endif
uint8_t matrix_scan(void)
{
/* extra_key is volatile and more convoluted than necessary because gcc refused
to generate valid code otherwise. Making extra_key uint8_t and constructing codes
here via codes = extra_key<<8 | 0xFF; would consistently fail to even LOAD
extra_key from memory, and leave garbage in the high byte of codes. I tried
dozens of code variations and it kept generating broken assembly output. So
beware if attempting to make extra_key code more logical and efficient. */
static volatile uint16_t extra_key = 0xFFFF;
uint16_t codes;
uint8_t key0, key1;
is_modified = false;
codes = extra_key;
extra_key = 0xFFFF;
if ( codes == 0xFFFF )
{
_delay_ms(12); // delay for preventing overload of poor ADB keyboard controller
codes = adb_host_kbd_recv();
}
key0 = codes>>8;
key1 = codes&0xFF;
if (debug_matrix && codes) {
print("adb_host_kbd_recv: "); phex16(codes); print("\n");
}
if (codes == 0) { // no keys
return 0;
} else if (codes == 0x7F7F) { // power key press
register_key(0x7F);
} else if (codes == 0xFFFF) { // power key release
register_key(0xFF);
} else if (key0 == 0xFF) { // error
xprintf("adb_host_kbd_recv: ERROR(%d)\n", codes);
return key1;
} else {
register_key(key0);
if (key1 != 0xFF) // key1 is 0xFF when no second key.
extra_key = key1<<8 | 0xFF; // process in a separate call
}
return 1;
}
bool matrix_is_modified(void)
{
return is_modified;
}
inline
bool matrix_has_ghost(void)
{
#ifdef MATRIX_HAS_GHOST
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
if (matrix_has_ghost_in_row(i))
return true;
}
#endif
return false;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
inline
#if (MATRIX_COLS <= 8)
uint8_t matrix_get_row(uint8_t row)
#else
uint16_t matrix_get_row(uint8_t row)
#endif
{
return matrix[row];
}
void matrix_print(void)
{
if (!debug_matrix) return;
#if (MATRIX_COLS <= 8)
print("r/c 01234567\n");
#else
print("r/c 0123456789ABCDEF\n");
#endif
for (uint8_t row = 0; row < matrix_rows(); row++) {
phex(row); print(": ");
#if (MATRIX_COLS <= 8)
pbin_reverse(matrix_get_row(row));
#else
pbin_reverse16(matrix_get_row(row));
#endif
#ifdef MATRIX_HAS_GHOST
if (matrix_has_ghost_in_row(row)) {
print(" <ghost");
}
#endif
print("\n");
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
#if (MATRIX_COLS <= 8)
count += bitpop(matrix[i]);
#else
count += bitpop16(matrix[i]);
#endif
}
return count;
}
#ifdef MATRIX_HAS_GHOST
inline
static bool matrix_has_ghost_in_row(uint8_t row)
{
// no ghost exists in case less than 2 keys on
if (((matrix[row] - 1) & matrix[row]) == 0)
return false;
// ghost exists in case same state as other row
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
if (i != row && (matrix[i] & matrix[row]) == matrix[row])
return true;
}
return false;
}
#endif
inline
static void register_key(uint8_t key)
{
uint8_t col, row;
col = key&0x07;
row = (key>>3)&0x0F;
if (key&0x80) {
matrix[row] &= ~(1<<col);
} else {
matrix[row] |= (1<<col);
}
is_modified = true;
}

View File

@@ -1,82 +0,0 @@
# Target file name (without extension).
TARGET = ascii_usb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap.c \
matrix.c \
led.c \
protocol/serial_uart.c
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Build Options
# *Comment out* to disable the options.
#
#MOUSEKEY_ENABLE = yes # Mouse keys
#EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
#NKRO_ENABLE = yes # USB Nkey Rollover
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,38 +0,0 @@
ASCII to USB keyboard protocol converter
========================================
This converts serial console terminal into USB keyboard, tested with TRS-80 model 100 TELCOM application.
Target MCU is ATMega32u4 but other USB capable AVR will also work.
Hardware
--------
Connect RX, TX and GND to UART pin of AVR. Note that you may need line driver/level shifter like MAX232 to interface high voltage of RS-232C.
Build Firmware
--------------
Configure UART setting and Just use 'make'
$ cd ascii_usb
$ make
Then, load the binary to MCU with your favorite programmer.
Limitation
----------
- This cannot see key up event, you cannot hold a key.
- Alt, Gui(Win/Mac) modifier key are not available.
TRS-80 model 100
----------------
Use TELCOM program with setting: 19200bps/8bit/odd parity/1stop bit
To set this configuration push Stat(F3) and input '9801D,10'. Then push Term(F4) to connect.

View File

@@ -1,70 +0,0 @@
/*
Copyright 2014 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x5C01
#define DEVICE_VER 0x0100
#define MANUFACTURER t.m.k.
#define PRODUCT ASCII keyboard converter
#define DESCRIPTION converts Serial Console Terminal into USB keyboard
/* matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 16
/* key combination for command */
#define IS_COMMAND() ( \
host_get_first_key() == KC_BRK \
)
/*
* Serial(USART) configuration
* asynchronous, positive logic, 19200baud, bit order: LSB first
* 1-start bit, 8-data bit, odd parity, 1-stop bit
*/
#ifdef __AVR_ATmega32U4__
#define SERIAL_UART_BAUD 19200
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
#define SERIAL_UART_RXD_VECT USART1_RX_vect
#define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
#define SERIAL_UART_INIT() do { \
UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); /* RX interrupt, RX: enable */ \
UCSR1B |= (0<<TXCIE1) | (1<<TXEN1); /* TX interrupt, TX: enable */ \
UCSR1C |= (1<<UPM11) | (1<<UPM10); /* parity: none(00), even(01), odd(11) */ \
sei(); \
} while(0)
#else
#error "USART configuration is needed."
#endif
/* disable action features */
#define NO_ACTION_LAYER
#define NO_ACTION_TAPPING
#define NO_ACTION_ONESHOT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#endif

View File

@@ -1,42 +0,0 @@
/*
Copyright 2012 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 <stdbool.h>
#include <avr/pgmspace.h>
#include "keycode.h"
#include "action.h"
#include "action_macro.h"
#include "action_util.h"
#include "util.h"
#include "print.h"
#include "keymap.h"
// Keymap is not used. See matrix.c.
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
return KC_NO;
}
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
return (action_t) { .code = ACTION_NO };
}

View File

@@ -1,25 +0,0 @@
/*
Copyright 2012 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 "serial.h"
#include "led.h"
void led_set(uint8_t usb_led)
{
}

View File

@@ -1,195 +0,0 @@
/*
Copyright 2014 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 <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "util.h"
#include "matrix.h"
#include "debug.h"
#include "action_util.h"
#include "protocol/serial.h"
/*
* Not use Matrix.
*
* ROW: 16(4bits)
* COL: 16(4bits)
*
* 8bit wide
* +---------+
* 0|00 ... 0F|
* 1|08 ... 1F|
* :| ... |
* :| ... |
* E|E0 ... EF|
* F|F0 ... FF|
* +---------+
*/
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
debug_matrix = true;
serial_init();
debug("init\n");
return;
}
static void type_key(uint16_t keycode)
{
if (keycode == 0) return;
uint8_t mods = keycode>>8;
uint8_t key = keycode&0xFF;
if (mods) {
add_mods(mods);
send_keyboard_report();
}
add_key(key);
send_keyboard_report();
del_key(key);
send_keyboard_report();
if (mods) {
del_mods(mods);
send_keyboard_report();
}
}
static uint16_t code2key(uint8_t code)
{
// ASCII to key combination in US laout
switch (code) {
case 0x01 ... 0x08: // Ctrl-[a-z]
return MOD_BIT(KC_LCTRL)<<8 | (KC_A + (code-0x01));
case 0x09: return KC_TAB; // TAB(Ctrl-i)
case 0x0A ... 0x0C: // Ctrl-[a-z]
return MOD_BIT(KC_LCTRL)<<8 | (KC_A + (code-0x01));
case 0x0D: return KC_ENTER; // Enter(Ctrl-m)
case 0x0E ... 0x1A: // Ctrl-[a-z]
return MOD_BIT(KC_LCTRL)<<8 | (KC_A + (code-0x01));
case 0x1B: return KC_ESC;
case 0x1C: return KC_RIGHT;
case 0x1D: return KC_LEFT;
case 0x1E: return KC_UP;
case 0x1F: return KC_DOWN;
case 0x20: return KC_SPACE;
case 0x21: return MOD_BIT(KC_LSHIFT)<<8 | KC_1; // !
case 0x22: return MOD_BIT(KC_LSHIFT)<<8 | KC_QUOTE; // "
case 0x23: return MOD_BIT(KC_LSHIFT)<<8 | KC_3; // #
case 0x24: return MOD_BIT(KC_LSHIFT)<<8 | KC_4; // $
case 0x25: return MOD_BIT(KC_LSHIFT)<<8 | KC_5; // %
case 0x26: return MOD_BIT(KC_LSHIFT)<<8 | KC_7; // &
case 0x27: return KC_QUOTE; // '
case 0x28: return MOD_BIT(KC_LSHIFT)<<8 | KC_9; // (
case 0x29: return MOD_BIT(KC_LSHIFT)<<8 | KC_0; // )
case 0x2A: return MOD_BIT(KC_LSHIFT)<<8 | KC_8; // *
case 0x2B: return MOD_BIT(KC_LSHIFT)<<8 | KC_EQUAL; // +
case 0x2C: return KC_COMMA; // ,
case 0x2D: return KC_MINUS; // -
case 0x2E: return KC_DOT; // .
case 0x2F: return KC_SLASH; // /
case 0x30: return KC_0;
case 0x31 ... 0x39: // 1-9
return KC_1 + (code-0x31);
case 0x3A: return MOD_BIT(KC_LSHIFT)<<8 | KC_SCLN; // :
case 0x3B: return KC_SCLN; // ;
case 0x3C: return MOD_BIT(KC_LSHIFT)<<8 | KC_COMMA; // <
case 0x3D: return KC_EQUAL; // =
case 0x3E: return MOD_BIT(KC_LSHIFT)<<8 | KC_DOT; // >
case 0x3F: return MOD_BIT(KC_LSHIFT)<<8 | KC_SLASH; // ?
case 0x40: return MOD_BIT(KC_LSHIFT)<<8 | KC_2; // @
case 0x41 ... 0x5A: // A-Z
return MOD_BIT(KC_LSHIFT)<<8 | (KC_A + (code-0x41));
case 0x5B: return KC_LBRACKET; // [
case 0x5C: return KC_BSLASH; //
case 0x5D: return KC_RBRACKET; // ]
case 0x5E: return MOD_BIT(KC_LSHIFT)<<8 | KC_6; // ^
case 0x5F: return MOD_BIT(KC_LSHIFT)<<8 | KC_MINUS; // _
case 0x61 ... 0x7A: // a-z
return KC_A + (code-0x61);
case 0x7B: return MOD_BIT(KC_LSHIFT)<<8 | KC_LBRACKET; // {
case 0x7C: return MOD_BIT(KC_LSHIFT)<<8 | KC_BSLASH; // |
case 0x7D: return MOD_BIT(KC_LSHIFT)<<8 | KC_RBRACKET; // }
case 0x7E: return MOD_BIT(KC_LSHIFT)<<8 | KC_GRAVE; // }
case 0x7F: return KC_DELETE; //
}
return 0;
}
uint8_t matrix_scan(void)
{
uint16_t code = serial_recv2();
if (code == -1) {
return 0;
}
print_hex8(code); print(" ");
// echo back
serial_send(code);
type_key(code2key(code));
return code;
}
inline
bool matrix_has_ghost(void)
{
return false;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return false;
}
inline
matrix_row_t matrix_get_row(uint8_t row)
{
return 0;
}
void matrix_print(void)
{
print("\nr/c 0123456789ABCDEF\n");
for (uint8_t row = 0; row < matrix_rows(); row++) {
phex(row); print(": ");
pbin_reverse(matrix_get_row(row));
print("\n");
}
}

View File

@@ -1,93 +0,0 @@
# Target file name (without extension).
TARGET = ibm4704_usb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = keymap_common.c \
matrix.c \
led.c \
protocol/ibm4704.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_plain.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,72 +0,0 @@
IBM 4704 to USB keyboard converter
==================================
This firmware converts IBM 4704 keyboard protocol to USB HID.
Keyboard initialization process takes a few seconds at start up. During that you will hear buzzer from the keyboard. **You need to plug USB cable after hooking up your keyboard to the converter.**
Update
------
2015/09/07 Added keymap for Alps 102-key. Thanks, tai @ geekhack!
2015/05/05 Added keymaps for 107-key, 77-key and 50-key. Thanks, orihalcon @ geekhack!
2015/05/19 Fixed a protocol handling bug.
Supported Keyboard
------------------
### IBM capacitive switch models:
- 6019273 Model 100 50-key (grid layout) http://kishy.ca/?p=894
- 6019284 Model 200 62-key Alpha(60% layout) http://kishy.ca/?p=894
- 6019303 Model 300 77-key Expanded Alpha http://deskthority.net/photos-f62/ibm-6019303-t8502.html
- 6020218 Model 400 107-key Full key http://kishy.ca/?p=894
### Alps switch(vintage Green) models:
- 5954339 Japanese 102-key http://deskthority.net/post87127.html#p87127
- 6112883 Japanese 102-key http://geekhack.org/index.php?topic=52888.msg1194489#msg1194489
- 6112884 Japanese 102-key http://geekhack.org/index.php?topic=50437.msg1193047#msg1193047
- 6341739 Chinese 102-key http://geekhack.org/index.php?topic=52888.msg1176566#msg1176566
Connector
---------
Keyboard Plug from front:
DSUB-9
-------------
\ N 2 3 4 5 /
\ N N N N /
---------
2 GND
3 VCC 5V
4 DATA
5 CLOCK
N No connection/No pin.
Connection
----------
In case of using ATMega32U4(Teensy2.0):
1. Supply power with VCC and GND.
2. Connect CLOCK to PD1 and DATA to PD0. You can change pin with config.h.
3. Optionally you may need pull-up register. 1KOhm probably work.
Build Firmware
--------------
Just run `make`:
$ make
To select keymap:
$ make KEYMAP=[plain|...]
Keymap
------
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files.
Use `KEYMAP_ALPS102()` to define your keymap for Alps models.

View File

@@ -1,61 +0,0 @@
/*
Copyright 2014 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include <avr/interrupt.h>
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x4707
#define DEVICE_VER 0x0001
#define MANUFACTURER t.m.k.
#define PRODUCT IBM 4704 keyboard converter
#define DESCRIPTION convert IBM 4704 keyboard to USB
/* matrix size */
#define MATRIX_ROWS 16 // keycode bit3-6
#define MATRIX_COLS 8 // keycode bit0-2
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) || \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* Pin configuration */
#define IBM4704_CLOCK_PORT PORTD
#define IBM4704_CLOCK_PIN PIND
#define IBM4704_CLOCK_DDR DDRD
#define IBM4704_CLOCK_BIT 1
#define IBM4704_DATA_PORT PORTD
#define IBM4704_DATA_PIN PIND
#define IBM4704_DATA_DDR DDRD
#define IBM4704_DATA_BIT 0
/* Pin interrupt on rising edge of clock */
#define IBM4704_INT_INIT() do { EICRA |= ((1<<ISC11)|(1<<ISC10)); } while (0)
#define IBM4704_INT_ON() do { EIFR |= (1<<INTF1); EIMSK |= (1<<INT1); } while (0)
#define IBM4704_INT_OFF() do { EIMSK &= ~(1<<INT1); } while (0)
#define IBM4704_INT_VECT INT1_vect
#endif

View File

@@ -1,182 +0,0 @@
IBM 4704 Keyboard
=================
IBM capacitive switch models:
6019273 Model 100 50-key (grid layout) http://kishy.ca/?p=894
6019284 Model 200 62-key Alpha(60% layout) http://kishy.ca/?p=894
6019303 Model 300 77-key Expanded Alpha http://deskthority.net/photos-f62/ibm-6019303-t8502.html
6020218 Model 400 107-key Full key http://kishy.ca/?p=894
Alps switch(vintage Green) models:
5954339 Japanese 102-key http://deskthority.net/post87127.html#p87127
6112883 Japanese 102-key http://geekhack.org/index.php?topic=52888.msg1194489#msg1194489
6112884 Japanese 102-key http://geekhack.org/index.php?topic=50437.msg1193047#msg1193047
6341739 Chinese 102-key http://geekhack.org/index.php?topic=52888.msg1176566#msg1176566
Resourse
--------
The IBM 4704: lots of pictures and info
http://kishy.dyndns.org/?p=648#more-648
Brochure:
http://ed-thelen.org/comp-hist/IBM-ProdAnn/4700.pdf
IBM 4704 Keyboard Protocol
==========================
On powering up keyboard sends keyboard ID; A3h for 6019284(62-key), for example.
After that the keyboard enters FC command mode and waits for parameter data from host
so that it doesn't send any scancode until you send 'FF'(End of FC command mode).
Keyboard ID
-------------------------------
Model 100 50-key A2h
Model 200 62-key A3h
Model 300 77-key A4h
Model 400 107-key A5h
Japanese/Chinese 102-key A6h
Connector
---------
Keyboard Plug from front
DSUB-9
-------------
\ N 2 3 4 5 /
\ N N N N /
---------
2 GND
3 VCC 5V
4 DATA
5 CLOCK
N No connection/No pin.
Keyboard to Host
----------------
Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us low part.
____ __ __ __ __ __ __ __ __ __ _______
Clock \_____/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
Data ____/ X____X____X____X____X____X____X____X____X____X________
Start 0 1 2 3 4 5 6 7 P Stop
Start bit: can be long as 300-350us.
Inhibit: Pull Data line down to inhibit keyboard to send.
Timing: Host reads bit while Clock is hi.(rising edge)
Stop bit: Keyboard pulls down Data line to lo after 9th clock.
Host to Keyboard
----------------
Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us low part.
____ __ __ __ __ __ __ __ __ __ ________
Clock \______/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
^ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___
Data ____|__/ X____X____X____X____X____X____X____X____X____X \___
| Start 0 1 2 3 4 5 6 7 P Stop
Request by host
Start bit: can be long as 300-350us.
Request: Host pulls Clock line down to request to send a command.
Timing: After Request keyboard pull up Data and down Clock line to low for start bit.
After request host release Clock line once Data line becomes hi.
Host wirtes a bit while Clock is hi and Keyboard reads while low.
Stop bit: Host releases or pulls up Data line to hi after 9th clock and waits for keybaord pull down the line to lo.
Scancodes
---------
Keyboard doesn't send Break code for all keys except for Alt by default.
6019284 62-key:
,-----------------------------------------------------------.
| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|???|BS |
|-----------------------------------------------------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| ¢| \| PD2|
|-----------------------------------------------------------|
|Ctrl | A| S| D| F| G| H| J| K| L| ;| '| {}| PD3|
|-----------------------------------------------------------|
|Shif| <>| Z| X| C| V| B| N| M| ,| ,| /|???|Shift |
|-----------------------------------------------------------|
|Reset|blk|Alt | Space |Alt |blk|Enter|
`-----------------------------------------------------------'
+----------+---------------------+----------+----------+
|` 00|PD1 04|Caps 20|LShift 30|Reset 31|
|1 18|q 05|a 21|<> 3E|Rblank 41|
|2 19|w 06|s 22|z 32|Alt 3F|
|3 1A|e 13|d 23|x 33|Space 40|
|4 10|r 14|f 24|c 34|Alt 3F|
|5 11|t 15|g 25|v 35|Lblank 42|
|6 12|y 16|h 26|b 36|Enter 2F|
|7 08|u 17|j 27|n 37| |
|8 09|i 01|k 28|m 38| |
|9 0A|o 02|l 29|, 39| |
|0 0F|p 03|; 2A|. 3A| |
|- 1F|¢ 1B|' 2B|/ 3B| |
|= 0D|\ 1C|{} 2C|??? 3C| |
|??? 0C|PD2 1D|PD3 2D|RShift 3D| |
|BS 0E| | | | |
+----------+---------------------+----------+----------+
Bit7 is 'press flag' which set 1 on press and 0 on release when break code is enabled.
NOTE: When break code is enabled the key sends scancode with setting 7th bit on press
and without it on release. That is, '`' sends 80h on press and 00h on release.
Keyboard command
----------------
Keyboard accepts these commands from host.
Description Entry point
-----------------------------------------------------------
FF Soft Reset 0008h
FE Resend 00e8h
FD Buzzer(emits a short beep) 00edh
FC Set Key Flag 00f6h
FB Soft Reset 0008h
FA Reset 0000h
Keyboard response
-----------------
Keyobard sends these bytes to host.
Description Entry point
-----------------------------------------------------------
FE Overflow(key event/receive data) 00c5h, 0346h
Memory test error 0224h
FD Command out of bound 00d8h
Key out of bound
7E Read/Parity error in receive from host 00bch
Set Key Flag command(FC)
------------------------
After 'Power on Reset' firmware enters this command mode and waits for data from host,
so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF'.
Data sent from host:
bit: 7 6 ... 0
en | |
| `-----`--- scan code
`------------- enable bit(0: enable repeat, 1: enable break)
00-79 Enable repeat
80-F9 Enable break(FA-FF are used as other commands, see above.)
FE Resend(011ah) no need to use
FF End(0114h) exits FC command mode.
Response from keyboard:
FD Out of bound - Invalid scancode
-- OK - No response means that command is accepted.
Examples:
To enable break code of all keys.
FC 80 81 ... F7 FF

View File

@@ -1,17 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEYMAP_50(
F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, \
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, \
Q, W, E, R, T, Y, U, I, O, P, \
A, S, D, F, G, H, J, K, L, SCLN, \
Z, X, C, V, B, N, M, COMM,DOT, SLSH \
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -1,50 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0:
* ,---------------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|BS |BS |F21| |PSC|SLK|PAU| |F1 |F2 |F3 |F4 |
* |---------------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|F22| |Ins|Hom|PgU| |F5 |F6 |F7 |F8 |
* |---------------------------------------------------------------| |-----------| |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Ret|Ret |F23| |Del|End|PgD| |F9 |F10|F11|F12|
* |---------------------------------------------------------------| |-----------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shf|Shift |F24| | |Up | | |F13|F14|F15|F16|
* |---------------------------------------------------------------| |-----------| |---------------|
* |Fn0 |Gui|Alt | Space |Alt* |Gui|Fn0 | |Lef|Dow|Rig| |F17|F18|F19|F20|
* `---------------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP_ALPS102(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC,BSPC,F21, PSCR,SLCK,PAUS, F1, F2, F3, F4, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, F22, INS, HOME,PGUP, F5, F6, F7, F8, \
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,GRV, ENT, F23, DEL, END, PGDN, F9, F10, F11, F12, \
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,RSFT, F24, NO, UP, NO, F13, F14, F15, F16, \
FN0, LGUI,LALT, SPC, RALT,RGUI, FN0, LEFT,DOWN,RGHT, F17, F18, F19, F20 \
),
/* Layer 1:
* ,---------------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|BS |BS |F21| |VoD|VoU|Mut| |F1 |F2 |F3 |F4 |
* |---------------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|F22| |Ins|Hom|PgU| |F5 |F6 |F7 |F8 |
* |---------------------------------------------------------------| |-----------| |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Ret|Ret |F23| |Del|End|PgD| |F9 |F10|F11|F12|
* |---------------------------------------------------------------| |-----------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shf|Shift |F24| | |PgU| | |F13|F14|F15|F16|
* |---------------------------------------------------------------| |-----------| |---------------|
* |Fn0 |Gui|Alt | Space |Alt* |Gui|Fn0 | |Hom|PgD|End| |F17|F18|F19|F20|
* `---------------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP_ALPS102(
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, VOLD,VOLU,MUTE, TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,PGUP,TRNS, TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS, TRNS, HOME,PGDN,END, TRNS,TRNS,TRNS,TRNS \
),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(1),
};

View File

@@ -1,30 +0,0 @@
/*
Copyright 2011,2012,2013 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 "keymap_common.h"
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
}
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
}

View File

@@ -1,146 +0,0 @@
/*
Copyright 2011,2012,2013 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/>.
*/
#ifndef KEYMAP_COMMON_H
#define KEYMAP_COMMON_H
#include <stdint.h>
#include <stdbool.h>
#include <avr/pgmspace.h>
#include "keycode.h"
#include "action.h"
#include "action_macro.h"
#include "report.h"
#include "print.h"
#include "debug.h"
#include "keymap.h"
// 32*8(256) byte array which converts PS/2 code into USB code
extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
extern const uint16_t fn_actions[];
/* 107-key */
#define KEYMAP( \
K46,K64, K00,K18,K19,K1A,K10,K11,K12,K08,K09,K0A,K0F,K1F,K0D,K0C,K0E, K6A,K6B,K6C, K47,K48,K49,K4A, \
K56,K66, K04,K05,K06,K13,K14,K15,K16,K17,K01,K02,K03,K1B,K1C,K1D, K6D,K6E,K6F, K4B,K4C,K4D,K4E, \
K71,K77, K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K2A,K2B,K2C,K2D, K70,K65,K72, K50,K51,K52,K53, \
K44,K45, K30,K3E,K32,K33,K34,K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D, K74,K75,K76, K5E,K58,K59,K5A, \
K54,K55, K31,K41,K3F, K40, K42,K2F, K78,K67,K79, K5B,K5C,K5D,K57 \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_NO }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_NO, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_NO, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_NO, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
{ KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_NO }, \
{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
{ KC_NO, KC_NO, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \
{ KC_##K70, KC_##K71, KC_##K72, KC_NO, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
{ KC_##K78, KC_##K79, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
}
/* 77-key */
#define KEYMAP_77( \
K00,K18,K19,K1A,K10,K11,K12,K08,K09,K0A,K0F,K1F,K0D,K0C,K0E, K6A,K6B,K6C, \
K04,K05,K06,K13,K14,K15,K16,K17,K01,K02,K03,K1B,K1C,K1D, K6D,K6E,K6F, \
K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K2A,K2B,K2C,K2D, K70,K65,K72, \
K30,K3E,K32,K33,K34,K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D, K74,K75,K76, \
K31,K41,K3F, K40, K42,K2F, K78,K67,K79 \
) KEYMAP( \
F1, F2, K00,K18,K19,K1A,K10,K11,K12,K08,K09,K0A,K0F,K1F,K0D,K0C,K0E, K6A,K6B,K6C, NLCK,PSLS,PAST,PMNS, \
F3, F4, K04,K05,K06,K13,K14,K15,K16,K17,K01,K02,K03,K1B,K1C,K1D, K6D,K6E,K6F, P7, P8, P9, PPLS, \
F5, F6, K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K2A,K2B,K2C,K2D, K70,K65,K72, P4, P5, P6, PPLS, \
F7, F8, K30,K3E,K32,K33,K34,K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D, K74,K75,K76, P1, P2, P3, PENT, \
F9, F10, K31,K41,K3F, K40, K42,K2F, K78,K67,K79 P0, P0, PDOT,PENT \
)
/* 62-key */
#define KEYMAP_62( \
K00,K18,K19,K1A,K10,K11,K12,K08,K09,K0A,K0F,K1F,K0D,K0C,K0E, \
K04,K05,K06,K13,K14,K15,K16,K17,K01,K02,K03,K1B,K1C,K1D, \
K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K2A,K2B,K2C,K2D, \
K30,K3E,K32,K33,K34,K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D, \
K31,K41,K3F, K40, K42,K2F \
) KEYMAP( \
F1, F2, K00,K18,K19,K1A,K10,K11,K12,K08,K09,K0A,K0F,K1F,K0D,K0C,K0E, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, \
F3, F4, K04,K05,K06,K13,K14,K15,K16,K17,K01,K02,K03,K1B,K1C,K1D, DEL, END, PGDN, P7, P8, P9, PPLS, \
F5, F6, K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K2A,K2B,K2C,K2D, PSCR,SLCK,PAUS, P4, P5, P6, PPLS, \
F7, F8, K30,K3E,K32,K33,K34,K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D, F11, UP, F12, P1, P2, P3, PENT, \
F9, F10, K31,K41,K3F, K40, K42,K2F, LEFT,DOWN,RGHT, P0, P0, PDOT,PENT \
)
/* 50-key */
#define KEYMAP_50( \
K00,K01,K02, K03,K04,K05, K20,K21,K22,K23, \
K08,K09,K0A, K0B,K0C,K0D, K28,K29,K2A,K35, \
K10,K11,K12, K13,K14,K15, K30,K31,K32,K36, \
K18,K19,K1A, K1B,K1C,K1D, K38,K39,K3A,K37, \
K16,K1E,K0E, K0F,K1F,K17, K33,K3B,K2B,K3F \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_NO, KC_NO, }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_NO, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_NO, KC_NO, KC_NO, KC_##K3F }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, } \
}
/* Alps 102-key */
#define KEYMAP_ALPS102( \
K00, K0F, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K44, K45, K46, K43, K41, K42, K4A, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K54, K55, K56, K50, K51, K52, K5A, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K64, K65, K66, K60, K61, K62, K6B, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K74, K75, K76, K70, K71, K72, K7B, \
K31, K47, K3F, K40, K4F, K48, K2F, K77, K67, K57, K73, K63, K53, K4E \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_NO, }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
{ KC_##K48, KC_NO, KC_##K4A, KC_NO, KC_NO, KC_NO, KC_##K4E, KC_##K4F }, \
{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_NO, KC_NO, KC_##K5A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
{ KC_NO, KC_NO, KC_NO, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
{ KC_NO, KC_NO, KC_NO, KC_##K7B, KC_NO, KC_NO, KC_NO, KC_NO, } \
}
#endif

View File

@@ -1,85 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: default
* ,-----------------------------------------------------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|???|BS |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
* |-----------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|xxx|Ret |
* |-----------------------------------------------------------|
* |Shif|xxx| Z| X| C| V| B| N| M| ,| ,| /|xxx|Shift |
* |-----------------------------------------------------------|
* |Ctrl |Gui|Alt | Space |Alt |Gui|Ctrl |
* `-----------------------------------------------------------'
*/
KEYMAP_62(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
LCTL,A, S, D, F, G, H, J, K, L, FN1, QUOT,NO, ENT, \
LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, FN2, NO, FN0, \
LCTL,LGUI,LALT, FN3, RGUI,RCTL \
),
KEYMAP_62(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \
LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,NO, ENT, \
LSFT,NO, NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,NO, TRNS, \
LCTL,LGUI,LALT, SPC, RGUI,RCTL \
),
KEYMAP_62(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
TAB, NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,WSTP,WBAK,WFWD,BSPC, \
LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,TRNS,NO, NO, ENT, \
LSFT,NO, NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, NO, RSFT,\
LCTL,LGUI,LALT, BTN1, RGUI,RCTL \
),
KEYMAP_62(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC, \
LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, NO, ENT, \
LSFT,NO, NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, TRNS,NO, RSFT, \
LCTL,LGUI,LALT, SPC, RGUI,RCTL \
),
KEYMAP_62(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
TAB, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN4, \
LCTL,VOLD,VOLU,MUTE,NO, NO, BTN2,MS_L,MS_D,MS_R,BTN1,NO, NO, ENT, \
LSFT,NO, NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, NO, NO, \
LCTL,LGUI,LALT, TRNS, RGUI,RCTL \
),
};
enum macro_id {
ALT_TAB,
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(1),
[1] = ACTION_LAYER_TAP_KEY(2, KC_SCLN),
[2] = ACTION_LAYER_TAP_KEY(3, KC_SLASH),
[3] = ACTION_LAYER_TAP_KEY(4, KC_SPC),
[4] = ACTION_MACRO(ALT_TAB),
};
/*
* Macro definition
*/
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
keyevent_t event = record->event;
switch (id) {
case ALT_TAB:
return (event.pressed ?
MACRO( D(LALT), D(TAB), END ) :
MACRO( U(TAB), END ));
}
return MACRO_NONE;
}

View File

@@ -1,50 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: default
* ,-----------------------------------------------------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|???|BS |
* |-----------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
* |-----------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Ret|Ret |
* |-----------------------------------------------------------|
* |Shif|Shf| Z| X| C| V| B| N| M| ,| ,| /|???|Shift |
* |-----------------------------------------------------------|
* |Ctrl |Gui|Alt | Space |Alt* |Gui|Fn |
* `-----------------------------------------------------------'
*/
KEYMAP(
F1, F2, GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, \
F3, F4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, \
F5, F6, LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, ENT, PSCR,SLCK,PAUS, P4, P5, P6, PPLS, \
F7, F8, LSFT,LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, F11, UP, F12, P1, P2, P3, PENT, \
F9, F10, LCTL,LGUI,LALT, SPC, RGUI,FN0, LEFT,DOWN,RGHT, P0, P0, PDOT,PENT \
),
/* 1: HHKB
* ,-----------------------------------------------------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|???|Del|
* |-----------------------------------------------------------|
* |Caps | | | | | | | |Psc|Slk|Pau| Up| | Ins|
* |-----------------------------------------------------------|
* |Ctrl |VoD|VoU|VoM| | | *| /|Hom|PgU|Lef|Rig|Ret|Ret |
* |-----------------------------------------------------------|
* |Shif|Shi| | | | | | +| -|End|PgD|Dow|???|Shift |
* |-----------------------------------------------------------|
* |Ctrl |Gui|Alt | Space |Alt* |Gui|Fn |
* `-----------------------------------------------------------'
*/
KEYMAP(
F1, F2, ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, NO, DEL, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, \
F3, F4, CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, INS, DEL, END, PGDN, P7, P8, P9, PPLS, \
F5, F6, TRNS,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, ENT, PSCR,SLCK,PAUS, P4, P5, P6, PPLS, \
F7, F8, TRNS,TRNS,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,NO, TRNS, F11, UP, F12, P1, P2, P3, PENT, \
F9, F10, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS, LEFT,DOWN,RGHT, P0, P0, PDOT,PENT \
),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(1),
};

View File

@@ -1,24 +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 "led.h"
void led_set(uint8_t usb_led)
{
}

View File

@@ -1,162 +0,0 @@
/*
Copyright 2014 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 <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "action.h"
#include "print.h"
#include "debug.h"
#include "util.h"
#include "ibm4704.h"
#include "matrix.h"
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
static void matrix_clear(void);
/*
* Matrix Array usage:
* IBM 4704 scan codes are assigned into 128(16x8)-cell matrix.
*
* 8bit wide
* +---------+
* 0| |
* :| XX | 00-7F
* f| |
* +---------+
*
* Exceptions:
*/
static uint8_t matrix[MATRIX_ROWS];
// scan code bits 7654 3210
// R:row/C:column -RRR RCCC
#define ROW(code) ((code>>3)&0x0f)
#define COL(code) (code&0x07)
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
static void enable_break(void)
{
print("Enable break: ");
while (ibm4704_send(0xFC)) { _delay_ms(10); }
// valid scancode: 00-79h
for (uint8_t code = 0; code < 0x7F; code++) {
while (ibm4704_send(0x80|code)) _delay_ms(10);
_delay_ms(5); // wait for response
// No response(FF) when ok, FD when out of bound
xprintf("s%02X:r%02X ", code, ibm4704_recv());
}
while (ibm4704_send(0xFF)) { _delay_ms(10); } // End
print("End\n");
}
void matrix_setup(void)
{
ibm4704_init();
}
void matrix_init(void)
{
debug_enable = true;
print("IBM 4704 converter\n");
matrix_clear();
_delay_ms(2000); // wait for keyboard starting up
xprintf("Keyboard ID: %02X\n", ibm4704_recv());
enable_break();
}
/*
* IBM 4704 Scan Code
*/
uint8_t matrix_scan(void)
{
uint8_t code = ibm4704_recv();
if (code==0xFF) {
// Not receivd
return 0;
} else if ((code&0x7F) >= 0x7A) {
// 0xFF-FA and 0x7F-7A is not scancode
xprintf("Error: %02X\n", code);
matrix_clear();
return 0;
} else if (code&0x80) {
dprintf("%02X\n", code);
matrix_make(code);
} else {
dprintf("%02X\n", code);
matrix_break(code);
}
return 1;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
inline
uint8_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 01234567\n");
for (uint8_t row = 0; row < matrix_rows(); row++) {
xprintf("%02X: %08b\n", row, bitrev(matrix_get_row(row)));
}
}
inline
static void matrix_make(uint8_t code)
{
matrix[ROW(code)] |= 1<<COL(code);
}
inline
static void matrix_break(uint8_t code)
{
matrix[ROW(code)] &= ~(1<<COL(code));
}
inline
static void matrix_clear(void)
{
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
}

View File

@@ -1,96 +0,0 @@
# Target file name (without extension).
TARGET = m0110_lufa
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = matrix.c \
led.c \
keymap_common.c \
m0110.c
# To use own keymap file run make like: make keymap=hasu
ifdef KEYMAP
SRC += keymap_$(KEYMAP).c
else
SRC += keymap_default.c
endif
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
MCU = atmega32u2 # TMK converter rev2
#MCU = atmega32u4 # TMK converter rev1
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,98 +0,0 @@
# Target file name (without extension).
TARGET = m0110_lufa
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = matrix.c \
led.c \
keymap_common.c \
m0110.c
# To use own keymap file run make like: make keymap=hasu
ifdef KEYMAP
SRC += keymap_$(KEYMAP).c
else
SRC += keymap_default.c
endif
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,96 +0,0 @@
# Target file name (without extension).
TARGET = m0110_lufa
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = matrix.c \
led.c \
keymap_common.c \
m0110.c
# To use own keymap file run make like: make keymap=hasu
ifdef KEYMAP
SRC += keymap_$(KEYMAP).c
else
SRC += keymap_default.c
endif
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = atmega32u2 # TMK converter rev2
MCU = atmega32u4 # TMK converter rev1
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,96 +0,0 @@
# Target file name (without extension).
TARGET = m0110_lufa
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = matrix.c \
led.c \
keymap_common.c \
m0110.c
# To use own keymap file run make like: make keymap=hasu
ifdef KEYMAP
SRC += keymap_$(KEYMAP).c
else
SRC += keymap_default.c
endif
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
MCU = atmega32u2 # TMK converter rev2
#MCU = atmega32u4 # TMK converter rev1
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,79 +0,0 @@
M0110/M0110A to USB keyboard converter
======================================
This firmware converts the protocol of Apple Macintosh keyboard **M0110**, **M0110A** and **M0120** into USB. Target of this project is USB AVR controller like **ATmega32U2** and **ATmega32U4**. Using this converter you can revive these retro keyboards with modern computer.
Read README of top directory too.
Pictures of **M0110 + M0120** and **M0110A**.
![M0110+M0120](http://i.imgur.com/dyvXb2Tm.jpg)
![M0110A](http://i.imgur.com/HuHOEoHm.jpg)
- M0110A support was contributed by [skagon@github](https://github.com/skagon).
- M0120 also is supported. keys(+ * / and ,) on M0120 are recognized as cursor keys.
Update
------
- 2013/08: Change port for signals `PF` to `PD`
- 2013/09: Change port again, it uses inversely `PD0` for data and `PD1` for clock line now.
- 2014/06: Change keymaps
- 2015/03: Add support for "International"(ISO) keyboard(keymap_intl.c)
Building Hardware
-----------------
You need [TMK converter] or AVR dev board like PJRC [Teensy]. Port of the MCU `PD1` is assigned to `CLOCK` line and `PD0` to `DATA` by default, you can change pin configuration with editing `config.h`.
[![M0110 Converter](http://i.imgur.com/4G2ZOegm.jpg)](http://i.imgur.com/4G2ZOeg.jpg)
### 4P4C phone handset cable
Note that original cable used with Mac is **straight** while phone handset cable is **crossover**.
<http://en.wikipedia.org/wiki/Modular_connector#4P4C>
Close-up picture of handset cable. You can see one end of plug has reverse color codes against the other. Click to enlarge.
[![4P4C cable](http://i.imgur.com/3S9P1mYm.jpg?1)](http://i.imgur.com/3S9P1mY.jpg?1)
[Teensy]: http://www.pjrc.com/teensy/
[TMK converter]: https://github.com/tmk/keyboard_converter
### Socket Pinout
- <http://pinouts.ru/Inputs/MacKeyboard_pinout.shtml>
![Jack fig](http://www.kbdbabel.org/conn/kbd_connector_macplus.png)
### Pull-up Resistor
You may need pull-up resistors on signal lines(`CLOCK`, `DATA`) in particular when you have long or coiled cable. **1k-10k Ohm** will be OK for this purpose. In that case the converter may not read signal from keyboard correctly without pull-up resistors.
Building Firmware
-----------------
To compile firmware you need AVR GCC. You can edit *Makefile* and *config.h* to change compile options and pin configuration. Also `KEYMAP` option can be used to select keymap.
$ git clone git://github.com/tmk/tmk_keyboard.git (or download source)
$ cd m0110_usb
$ make -f Makefile.rev2 clean
$ make -f Makefile.rev2 [KEYMAP={default|intl|spacefn|hasu}]
Use `Maefile.tmk_rev1` for TMK converter Rev.1, `Makefile.teensy` for Teensy instead.
Keymap
------
To create your own keymap copy existent keymap file to `keymap_name.c` and edit it.
Debug
-----
You can use [PJRC HID listen](http://www.pjrc.com/teensy/hid_listen.html) to see debug output. The converter has some functions for debug, press `<Magic>+H` simultaneously to get help.
- Magic combo: `Shift+Option+⌘` or `Shift+Option+Ctrl`(`Shift+Alt+Gui` or `Shift+Alt+Control`)

View File

@@ -1,62 +0,0 @@
/*
Copyright 2011,2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0110
#define DEVICE_VER 0x0101
#define MANUFACTURER t.m.k.
#define PRODUCT M0110 keyboard converter
#define DESCRIPTION convert M0110 keyboard to USB
/* matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 8
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* magic key */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LGUI)) || \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LCTL)) \
)
/* boot magic key */
#define BOOTMAGIC_KEY_SALT KC_FN0
#define BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL KC_LCAP
/* ports */
#define M0110_CLOCK_PORT PORTD
#define M0110_CLOCK_PIN PIND
#define M0110_CLOCK_DDR DDRD
#define M0110_CLOCK_BIT 1
#define M0110_DATA_PORT PORTD
#define M0110_DATA_PIN PIND
#define M0110_DATA_DDR DDRD
#define M0110_DATA_BIT 0
#endif

View File

@@ -1,37 +0,0 @@
/*
Copyright 2011,2012,2014 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/pgmspace.h>
#include "action.h"
#include "keycode.h"
#include "keymap.h"
#include "keymap_common.h"
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
}
/* translates Fn index to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
action_t action;
action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
return action;
}

View File

@@ -1,133 +0,0 @@
/*
Copyright 2011,2012,2014,2015 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/pgmspace.h>
#include "keycode.h"
#include "keymap.h"
extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
extern const uint16_t fn_actions[];
/* Common layout for M0110 and M0110A
* This keymap works with both keyboards. As you can see, the M0110A is
* a superset of M0110 keyboard, only one exception is 'Enter'(34) of M0110
* does not exist on the M0110A.
*
* ,---------------------------------------------------------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Clr| =| /| *|
* |---------------------------------------------------------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -|
* |-----------------------------------------------------' | |---------------|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| +|
* |---------------------------------------------------------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shft|Up | | 1| 2| 3| |
* |---------------------------------------------------------| |-----------|Ent|
* |Opt |Mac | Space |Ent| \|Lft|Rgt|Dn | | 0| .| |
* `---------------------------------------------------------' `---------------'
*
* M0110A scan codes
* ,---------------------------------------------------------. ,---------------.
* | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62|
* |---------------------------------------------------------| |---------------|
* | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| | | 59| 5B| 5C| 4E|
* |-----------------------------------------------------' | |---------------|
* | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | 56| 57| 58| 66|
* |---------------------------------------------------------| |---------------|
* | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 38| 4D| | 53| 54| 55| |
* `---------------------------------------------------------' |-----------| 4C|
* | 3A| 37| 31 | 2A| 46| 42| 48| | 52| 41| |
* `---------------------------------------------------------' `---------------'
*
* M0110 + M0120 scan codes
* ,---------------------------------------------------------. ,---------------.
* | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62|
* |---------------------------------------------------------| |---------------|
* | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E|
* |---------------------------------------------------------| |---------------|
* | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | 56| 57| 58| 66|
* |---------------------------------------------------------| |---------------|
* | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 38| | 53| 54| 55| |
* `---------------------------------------------------------' |-----------| 4C|
* | 3A| 37| 31 | 34| 3A| | 52| 41| |
* `------------------------------------------------' `---------------'
* Two right and left keys of 38 and 3A are identical, you cannot discriminate those two.
*/
#define KEYMAP( \
K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K68,K6D,K62, \
K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K4E, \
K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K66, \
K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K4D, K53,K54,K55,K4C, \
K3A,K37, K31, K34,K2A,K46,K42,K48, K52, K41 \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_NO, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_NO, KC_NO, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_NO, KC_##K46, KC_##K47 }, \
{ KC_##K48, KC_NO, KC_NO, KC_NO, KC_##K4C, KC_##K4D, KC_##K4E, KC_NO }, \
{ KC_NO, KC_NO, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_NO, KC_##K5B, KC_##K5C, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_##K62, KC_NO, KC_NO, KC_NO, KC_##K66, KC_NO }, \
{ KC_##K68, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K6D, KC_NO, KC_NO }, \
}
/* International keyboard layout for M0110 + M0120
* https://en.wikipedia.org/wiki/File:Apple_Macintosh_Plus_Keyboard.jpg
* Probably International keyboard layout of M0110A doesn't exist.
*
* M0110 + M0120 scan codes
* ,---------------------------------------------------------. ,---------------.
* | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| | 47| 68| 6D| 62|
* |---------------------------------------------------------| |---------------|
* | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A| | 59| 5B| 5C| 4E|
* |------------------------------------------------------, | |---------------|
* | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | | 56| 57| 58| 66|
* |---------------------------------------------------------| |---------------|
* | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 0A| 38| | 53| 54| 55| |
* `---------------------------------------------------------' |-----------| 4C|
* | 3A| 37| 34 | 31| 3A| | 52| 41| |
* `------------------------------------------------' `---------------'
* Two right and left keys of 38 and 3A are identical, you cannot discriminate those two.
*/
#define KEYMAP_INTL( \
K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K68,K6D,K62, \
K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K59,K5B,K5C,K4E, \
K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,K24, K56,K57,K58,K66, \
K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C,K0A, K53,K54,K55,K4C, \
K3A,K37, K34, K31, K52, K41 \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_NO, KC_NO, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_##K41, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K47 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_##K4C, KC_NO, KC_##K4E, KC_NO }, \
{ KC_NO, KC_NO, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_NO, KC_##K5B, KC_##K5C, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_##K62, KC_NO, KC_NO, KC_NO, KC_##K66, KC_NO }, \
{ KC_##K68, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K6D, KC_NO, KC_NO }, \
}

View File

@@ -1,137 +0,0 @@
/*
Copyright 2011,2012,2015 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 "keycode.h"
#include "keymap_common.h"
#ifdef KEYMAP_SECTION_ENABLE
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
#else
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
#endif
/* Default:
* M0110 M0120
* ,---------------------------------------------------------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Nlk| =| /| *|
* |---------------------------------------------------------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | 7| 8| 9| -|
* |---------------------------------------------------------| |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| +|
* |---------------------------------------------------------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | | 1| 2| 3| |
* `---------------------------------------------------------' |-----------|Ent|
* |Opt|Mac | Space |Fn |Opt| | 0| .| |
* `-----------------------------------------------' `---------------'
* M0110A
* ,---------------------------------------------------------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Nlk| =| /| *|
* |---------------------------------------------------------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -|
* |-----------------------------------------------------' | |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| +|
* |---------------------------------------------------------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shft|Up | | 1| 2| 3| |
* |---------------------------------------------------------| |-----------|Ent|
* |Opt |Mac | Space | \|Lft|Rgt|Dn | | 0| .| |
* `---------------------------------------------------------' `---------------'
*/
[0] = KEYMAP(
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,EQL, PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, P7, P8, P9, PMNS,
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, UP, P1, P2, P3, PENT,
LALT,LGUI, SPC, FN0, FN13,LEFT,RGHT,DOWN, P0, PDOT
),
/* Cursor Layer:
* M0110 M0120
* ,---------------------------------------------------------. ,---------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *|
* |---------------------------------------------------------| |---------------|
* |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |INS| | | 7| 8| 9| -|
* |---------------------------------------------------------| |---------------|
* |Ctrl |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Return| | 4| 5| 6| +|
* |---------------------------------------------------------| |---------------|
* |Shift |End| |PgD| | | | |End|PgD|Dow|Shift | | 1| 2| 3| |
* `---------------------------------------------------------' |-----------|Ent|
* |Opt|Mac | Space |Fn |Opt| | 0| .| |
* `-----------------------------------------------' `---------------'
* M0110A
* ,---------------------------------------------------------. ,---------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *|
* |---------------------------------------------------------| |---------------|
* |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |INS| | | 7| 8| 9| -|
* |-----------------------------------------------------' | |---------------|
* |Ctrl |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Return| | 4| 5| 6| +|
* |---------------------------------------------------------| |---------------|
* |Shift |End| |PgD| | | | |End|PgD|Dow|Shft|PgU| | 1| 2| 3| |
* |---------------------------------------------------------| |-----------|Ent|
* |Opt |Mac | Space | \|Hom|End|PgD| | 0| .| |
* `---------------------------------------------------------' `---------------'
*/
[1] = KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
CAPS,HOME,UP, PGUP,NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, INS, P7, P8, P9, PMNS,
LCTL,LEFT,DOWN,RGHT,NO, NO, NO, NO, HOME,PGUP,LEFT,RGHT, ENT, P4, P5, P6, PPLS,
LSFT,END, NO, PGDN,NO, NO, NO, NO, END, PGDN,DOWN, PGUP, P1, P2, P3, PENT,
LALT,LGUI, SPC, FN0, FN13,HOME,END, PGDN, P0, PDOT
),
};
/*
* Fn action definition
*/
#ifdef KEYMAP_SECTION_ENABLE
const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
#else
const uint16_t fn_actions[] PROGMEM = {
#endif
[0] = ACTION_LAYER_MOMENTARY(1),
[1] = ACTION_LAYER_MOMENTARY(2),
[2] = ACTION_LAYER_MOMENTARY(3),
[3] = ACTION_LAYER_MOMENTARY(4),
[4] = ACTION_LAYER_MOMENTARY(5),
[5] = ACTION_LAYER_MOMENTARY(6),
[6] = ACTION_LAYER_MOMENTARY(7),
[7] = ACTION_LAYER_TOGGLE(1),
[8] = ACTION_LAYER_TOGGLE(2),
[9] = ACTION_LAYER_TOGGLE(3),
[10] = ACTION_LAYER_TAP_TOGGLE(1),
[11] = ACTION_LAYER_TAP_TOGGLE(2),
[12] = ACTION_LAYER_TAP_TOGGLE(3),
[13] = ACTION_LAYER_TAP_KEY(1, KC_BSLASH),
[14] = ACTION_LAYER_TAP_KEY(2, KC_TAB),
[15] = ACTION_LAYER_TAP_KEY(3, KC_ENTER),
[16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
[17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
[18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
[19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
[20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
[21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
[22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
[23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
[24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
[25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
[26] = ACTION_MODS_ONESHOT(MOD_LCTL),
[27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
[28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
[29] = ACTION_MODS_ONESHOT(MOD_LSFT),
[30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRAVE),
[31] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_BSLASH),
};

View File

@@ -1,87 +0,0 @@
/*
Copyright 2014 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 "keycode.h"
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default:
* M0110
* ,---------------------------------------------------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs|
* |---------------------------------------------------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
* |---------------------------------------------------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| Fn| '|Return|
* |---------------------------------------------------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| Fn|Shift |
* `---------------------------------------------------------'
* |Fn |alt | Fn |Gui |Fn |
* `-----------------------------------------------'
*/
[0] = KEYMAP(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,EQL, PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, P7, P8, P9, PMNS,
LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN1, UP, P1, P2, P3, PENT,
FN0, LALT, FN2, LGUI,BSLS,LEFT,RGHT,DOWN, P0, PDOT
),
// IJKL cursor
[1] = KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
CAPS,NO, NO, NO, NO, NO, HOME,PGDN,UP, PGUP,END, NO, NO, P7, P8, P9, PMNS,
LCTL,VOLD,VOLU,MUTE,NO, NO, HOME,LEFT,DOWN,RGHT,END, NO, ENT, P4, P5, P6, PPLS,
LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, NO, PGUP, P1, P2, P3, PENT,
TRNS,LALT, SPC, LGUI,BSLS,HOME,END, PGDN, P0, PDOT
),
// HJKL cursor
[2] = KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
CAPS,NO, NO, NO, NO, NO, HOME,PGDN,UP, PGUP,END, NO, NO, P7, P8, P9, PMNS,
LCTL,VOLD,VOLU,MUTE,NO, NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, P4, P5, P6, PPLS,
LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, TRNS, PGUP, P1, P2, P3, PENT,
TRNS,LALT, SPC, LGUI,BSLS,HOME,END, PGDN, P0, PDOT
),
// Mousekey
[3] = KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
CAPS,Q, W, E, R, T, WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD, P7, P8, P9, PMNS,
LCTL,VOLD,VOLU,MUTE,NO, NO, BTN2,MS_L,MS_D,MS_R,BTN1,NO, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, BTN2,BTN1,BTN4,BTN5,NO, PGUP, P1, P2, P3, PENT,
NO, LALT, TRNS, LGUI,BSLS,HOME,END, PGDN, P0, PDOT
),
// Mousekey
[4] = KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
CAPS,Q, W, E, R, T, WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD, P7, P8, P9, PMNS,
LCTL,VOLD,VOLU,MUTE,NO, NO, BTN2,MS_L,MS_D,MS_R,TRNS,NO, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, BTN2,BTN1,BTN4,BTN5,NO, PGUP, P1, P2, P3, PENT,
NO, LALT, BTN1, LGUI,BSLS,HOME,END, PGDN, P0, PDOT
),
};
/*
* Fn action definition
*/
const uint16_t fn_actions[] PROGMEM = {
[0] = ACTION_LAYER_MOMENTARY(1),
[1] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),
[2] = ACTION_LAYER_TAP_KEY(3, KC_SPACE),
[3] = ACTION_LAYER_TAP_KEY(4, KC_SCOLON),
};

View File

@@ -1,73 +0,0 @@
/*
Copyright 2015 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 "keycode.h"
#include "keymap_common.h"
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
/* International keyboard
* M0110 M0120
* ,---------------------------------------------------------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Nlk| -| +| *|
* |---------------------------------------------------------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Ret| | 7| 8| 9| /|
* |------------------------------------------------------, | |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| \| | | 4| 5| 6| ,|
* |---------------------------------------------------------| |---------------|
* |Shif| <| Z| X| C| V| B| N| M| ,| ,| /| | | 1| 2| 3| |
* `---------------------------------------------------------' |-----------|Ent|
* |Opt|Mac | Space |Fn | | | 0| .| |
* `-----------------------------------------------' `---------------'
*/
[0] = KEYMAP_INTL(
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,EQL, PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,ENT, P7, P8, P9, PMNS,
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS, P4, P5, P6, PPLS,
LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, P1, P2, P3, PENT,
LALT,LGUI, SPC, FN0, P0, PDOT
),
/* Cursor Layer
* ,---------------------------------------------------------. ,---------------.
* |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| -| +| *|
* |---------------------------------------------------------| |---------------|
* |Caps |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up | |Ret| | 7| 8| 9| /|
* |------------------------------------------------------, | |---------------|
* |Ctrl |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Ins| | | 4| 5| 6| ,|
* |---------------------------------------------------------| |---------------|
* |Shif| <|End| |PgD| | | | |End|PgD|Dow| | | 1| 2| 3| |
* `---------------------------------------------------------' |-----------|Ent|
* |Opt|Mac | Space |Fn | | | 0| .| |
* `-----------------------------------------------' `---------------'
*/
[1] = KEYMAP_INTL(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
CAPS,HOME,UP, PGUP,NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, ENT, P7, P8, P9, PMNS,
LCTL,LEFT,DOWN,RGHT,NO, NO, NO, NO, HOME,PGUP,LEFT,RGHT,INS, P4, P5, P6, PPLS,
LSFT,NO, END, NO, PGDN,NO, NO, NO, NO, END, PGDN,DOWN, P1, P2, P3, PENT,
LALT,LGUI, SPC, FN0, P0, PDOT
),
};
/*
* Fn action definition
*/
const uint16_t fn_actions[] PROGMEM = {
[0] = ACTION_LAYER_MOMENTARY(1),
};

View File

@@ -1,71 +0,0 @@
/*
Copyright 2014 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 "keycode.h"
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default:
* M0110 M0120
* ,---------------------------------------------------------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Nlk| -| +| *|
* |---------------------------------------------------------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | 7| 8| 9| /|
* |---------------------------------------------------------| |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| ,|
* |---------------------------------------------------------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | | 1| 2| 3| |
* `---------------------------------------------------------' |-----------|Ent|
* |Opt|Mac | Space |Mac |Opt| | 0| .| |
* `-----------------------------------------------' `---------------'
* M0110A
* ,---------------------------------------------------------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Bcksp| |Nlk| =| /| *|
* |---------------------------------------------------------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -|
* |-----------------------------------------------------' | |---------------|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| +|
* |---------------------------------------------------------| |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shft|Up | | 1| 2| 3| |
* |---------------------------------------------------------' |-----------|Ent|
* |Opt |Mac | Space | \|Lft|Rgt|Dn | | 0| .| |
* `---------------------------------------------------------' `---------------'
*/
[0] = KEYMAP(
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, NLCK,PEQL,PSLS,PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, P7, P8, P9, PMNS,
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, UP, P1, P2, P3, PENT,
LALT,LGUI, FN0, RGUI,BSLS,LEFT,RGHT,DOWN, P0, PDOT
),
[1] = KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, NLCK,EQL, PSLS,PAST,
TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS, P7, P8, P9, PMNS,
LCTL,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS, P4, P5, P6, PPLS,
TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,APP, PGUP, P1, P2, P3, PENT,
TRNS,TRNS, TRNS, TRNS,INS, HOME,END, PGDN, P0, PDOT
),
};
/*
* Fn action definition
*/
const uint16_t fn_actions[] PROGMEM = {
[0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
[1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde
};

View File

@@ -1,32 +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/io.h>
#include "led.h"
void led_set(uint8_t usb_led)
{
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
DDRD |= (1<<6);
PORTD |= (1<<6);
} else {
DDRD |= (1<<6);
PORTD &= ~(1<<6);
}
}

View File

@@ -1,142 +0,0 @@
/*
Copyright 2011,2012 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/>.
*/
/*
* scan matrix
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "util.h"
#include "debug.h"
#include "host.h"
#include "led.h"
#include "m0110.h"
#include "matrix.h"
#define CAPS 0x39
#define CAPS_BREAK (CAPS | 0x80)
#define ROW(key) ((key)>>3&0x0F)
#define COL(key) ((key)&0x07)
static bool is_modified = false;
// matrix state buffer(1:on, 0:off)
static uint8_t *matrix;
static uint8_t _matrix0[MATRIX_ROWS];
static void register_key(uint8_t key);
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
m0110_init();
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0x00;
matrix = _matrix0;
return;
}
uint8_t matrix_scan(void)
{
uint8_t key;
is_modified = false;
key = m0110_recv_key();
if (key == M0110_NULL) {
return 0;
} else if (key == M0110_ERROR) {
return 0;
} else {
is_modified = true;
register_key(key);
}
if (debug_enable) {
print("["); phex(key); print("]\n");
}
return 1;
}
bool matrix_is_modified(void)
{
return is_modified;
}
inline
bool matrix_has_ghost(void)
{
return false;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
inline
uint8_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 01234567\n");
for (uint8_t row = 0; row < matrix_rows(); row++) {
phex(row); print(": ");
pbin_reverse(matrix_get_row(row));
print("\n");
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop(matrix[i]);
}
return count;
}
inline
static void register_key(uint8_t key)
{
if (key&0x80) {
matrix[ROW(key)] &= ~(1<<COL(key));
} else {
matrix[ROW(key)] |= (1<<COL(key));
}
}

View File

@@ -1,74 +0,0 @@
#
# Makefile for PJRC Teensy
#
# Target file name (without extension).
TARGET = news_usb_pjrc
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap.c \
matrix.c \
led.c \
news.c
CONFIG_H = config_pjrc.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+5000)
EXTRAKEY_ENABLE = yes # Audio control and System control(+600)
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover(+500)
#---------------- Programming Options --------------------------
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/pjrc.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,62 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x5021
#define MANUFACTURER t.m.k.
#define PRODUCT SONY NEWS keyboard converter
#define DESCRIPTION converts SONY NEWS protocol into USB
/* matrix size */
#define MATRIX_ROWS 16 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
/* legacy keymap support */
#define USE_LEGACY_KEYMAP
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \
keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
)
/* Asynchronous USART
* 8-data bit, non parity, 1-stop bit, no flow control
*/
#ifdef __AVR_ATmega32U4__
# define NEWS_KBD_RX_VECT USART1_RX_vect
# define NEWS_KBD_RX_DATA UDR1
# define NEWS_KBD_RX_BAUD 9600
# define NEWS_KBD_RX_UBBR ((F_CPU/(16UL*NEWS_KBD_RX_BAUD))-1)
# define NEWS_KBD_RX_INIT() do { \
UBRR1L = (uint8_t) NEWS_KBD_RX_UBBR; \
UBRR1H = (uint8_t) (NEWS_KBD_RX_UBBR>>8); \
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); \
} while(0)
#else
# error "USART configuration is needed."
#endif
#endif

View File

@@ -1,125 +0,0 @@
/*
Copyright 2012 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 <stdbool.h>
#include <avr/pgmspace.h>
#include "keycode.h"
#include "util.h"
#include "keymap.h"
// Following macros help you to define a keymap with the form of actual keyboard layout.
/* SONY NEWS NWP-5461 */
#define KEYMAP( \
K7A, K01,K02,K03,K04,K05, K06,K07,K08,K09,K0A, K68,K69, K64,K65,K52, \
K0B,K0C,K0D,K0E,K0F,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19, K6A, K4B,K4C,K4D,K4E, \
K1A,K1B,K1C,K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27, K6B, K4F,K50,K51,K56, \
K28,K29,K2A,K2B,K2C,K2D,K2E,K2F,K30,K31,K32,K33,K34, K35, K6C, K53,K54,K55,K5A, \
K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K42, K6D, K57,K59,K58, \
K43,K44,K45, K46, K47, K48,K49,K4A, K6E, K66,K5B,K5C,K5D \
) { \
{ KC_NO, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
{ KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \
{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_##K64, KC_##K65, KC_##K66, KC_NO }, \
{ KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
{ KC_NO, KC_NO, KC_##K7A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
}
// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
static const uint8_t PROGMEM fn_layer[] = {
0, // Fn0
0, // Fn1
0, // Fn2
0, // Fn3
0, // Fn4
0, // Fn5
0, // Fn6
0 // Fn7
};
// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
// See layer.c for details.
static const uint8_t PROGMEM fn_keycode[] = {
KC_NO, // Fn0
KC_NO, // Fn1
KC_NO, // Fn2
KC_NO, // Fn3
KC_NO, // Fn4
KC_NO, // Fn5
KC_NO, // Fn6
KC_NO // Fn7
};
static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: default
* ,---. ,------------------------, ,------------------------. ,---------.
* |Pow| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| ,-----------.
* `---' `------------------------' `------------------------' `---------' | *| /| +|
* ,-------------------------------------------------------------. ,---. ,---------------|
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS | |Hlp| | 7| 8| 9| -|
* |-------------------------------------------------------------| |---| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Del| | |Ins| | 4| 5| 6| ,|
* |---------------------------------------------------------' | |---| |---------------|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `|Return| |Clr| | 1| 2| 3| |
* |-------------------------------------------------------------| |---| |-----------|Ent|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /| |Shift | |PgU| | 0| .| Up| |
* |-------------------------------------------------------------| |---| |---------------|
* |Alt |Gui |Alt | Space | |Gui|App|Ctrl | |PgD| |Tab|Lef|Dow|Rig|
* `-------------------------------------------------------------' `---' `---------------'
*/
KEYMAP(
PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PAST,PSLS,PPLS,
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,BSPC, HELP, P7, P8, P9, PMNS,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,DEL, INS, P4, P5, P6, PCMM,
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,GRV, ENT, CLR, P1, P2, P3, PENT,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, RSFT, PGUP, P0, PDOT,UP,
LALT,CAPS,LALT, SPC, ERAS, RALT,RGUI,RCTL, PGDN, TAB, LEFT,DOWN,RGHT
),
};
uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col)
{
return pgm_read_byte(&keymaps[(layer)][(row)][(col)]);
}
uint8_t keymap_fn_layer(uint8_t index)
{
return pgm_read_byte(&fn_layer[index]);
}
uint8_t keymap_fn_keycode(uint8_t index)
{
return pgm_read_byte(&fn_keycode[index]);
}

View File

@@ -1,26 +0,0 @@
/*
Copyright 2012 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 "news.h"
#include "led.h"
void led_set(uint8_t usb_led)
{
// not supported now
}

View File

@@ -1,142 +0,0 @@
/*
Copyright 2012 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 <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "util.h"
#include "news.h"
#include "matrix.h"
#include "debug.h"
/*
* Matrix Array usage:
*
* ROW: 16
* COL:8
*
* 8bit wide
* +---------+
* 0|00 ... 07|
* 1|08 ... 0F|
* :| ... |
* :| ... |
* E|70 ... 77|
* F|78 ... 7F|
* +---------+
*
*/
static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) ((code>>3)&0xF)
#define COL(code) (code&0x07)
static bool is_modified = false;
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
news_init();
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
return;
}
uint8_t matrix_scan(void)
{
is_modified = false;
uint8_t code;
code = news_recv();
if (code == 0) {
return 0;
}
phex(code); print(" ");
if (code&0x80) {
// break code
if (matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] &= ~(1<<COL(code));
is_modified = true;
}
} else {
// make code
if (!matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] |= (1<<COL(code));
is_modified = true;
}
}
return code;
}
bool matrix_is_modified(void)
{
return is_modified;
}
inline
bool matrix_has_ghost(void)
{
return false;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
inline
uint8_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 01234567\n");
for (uint8_t row = 0; row < matrix_rows(); row++) {
phex(row); print(": ");
pbin_reverse(matrix_get_row(row));
print("\n");
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop(matrix[i]);
}
return count;
}

View File

@@ -1,87 +0,0 @@
# Target file name (without extension).
TARGET = next_usb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap.c \
matrix.c \
led.c
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
#MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
MCU = atmega32u2 # TMK converter
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#NKRO_ENABLE = yes # USB Nkey Rollover
SRC += next_kbd.c
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,63 +0,0 @@
# Target file name (without extension).
TARGET = next_usb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap.c \
matrix.c \
led.c
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#NKRO_ENABLE = yes # USB Nkey Rollover
SRC += next_kbd.c
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/pjrc.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,45 +0,0 @@
NeXT non-ADB Keyboard Converter
-------------------------------
Cable connector inside keyboard case:
+-----+
|Black|\
|Green|-\
|Yello|--\-------- to computer via Mini-Din 5a Connector
|Orang|--/--------
|Red |-/
|Brown|/
+-----+
Black - Ground to outer metal part of Mini Din 5a connector (not used)
Green - Ground
Yellow - Power button signal
Orange - Keyboard Out
Red - Keyboard In
Brown - Vcc
ATmega32u4 connections (pinout provided for Arduino Pro Micro):
Keyboard out (orange) : PD0 (pin 3)
Keyboard in (red) : PD1 (pin 2)
Power Button (yellow) : PD4 (pin 4)
Ground (black) : GND
Vcc (brown) : VCC
See attached next_timings.jpg file for a detailed illustration of NeXT keyboard protocol timings.
Power button signal line is normally high when the keyboard is powered/initialized. It is pulled to ground when pressed. The converter automatically translates this to a "normal" keypress with code 0x5A. This connection is technically optional, the only side effect of not making this connection is the power key will do nothing.
Converter is based heavily on Ladyada's original "USB NeXT Keyboard with Arduino Micro" tutorial (http://learn.adafruit.com/usb-next-keyboard-with-arduino-micro/overview). If you build this converter, show Adafruit some love and do it using an Arduino Micro (http://www.adafruit.com/products/1315) or their ATmega 32u4 Breakout Board (http://www.adafruit.com/products/296). Arduino Micro should work fine using the Arduino Pro Micro configuration above, same pins numbers and everything.
TODO:
-----
I believe it might be possible to run the keyboard off of 3V; during testing I observed that the keyboard could sometimes function even without Vcc connected as long as the ground connection was good and the Keyboard In line was connected. If that works it should be easy to do a Bluetooth conversion and run the keyboard right off of a LiPo battery without a boost circuit
Utilize second LED as status indicator for good initialization; also try to make hot plugging much more robust.
Figure a better use for the Power button. Too easy to hit it by mistake to use for Suspend or Power Off - maybe move cap to different part of the board and consider that
Figure out a better use for the lock LEDs. Right now they just light up when you press shift. Lame. Maybe implement proper Caps/Num/Scroll Locks

View File

@@ -1,190 +0,0 @@
/*
NeXT non-ADB Keyboard USB Converter
Copyright 2013, Benjamin Gould (bgould@github.com)
Based on:
TMK firmware code Copyright 2011,2012 Jun WAKO <wakojun@gmail.com>
Arduino code by "Ladyada" Limor Fried (http://ladyada.net/, http://adafruit.com/), released under BSD license
Timing reference thanks to http://m0115.web.fc2.com/ (dead link), http://cfile7.uf.tistory.com/image/14448E464F410BF22380BB
Pinouts thanks to http://www.68k.org/~degs/nextkeyboard.html
Keycodes from http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-6/src/sys/arch/next68k/dev/
This software is licensed with a Modified BSD License.
All of this is supposed to be Free Software, Open Source, DFSG-free,
GPL-compatible, and OK to use in both free and proprietary applications.
Additions and corrections to this file are welcome.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the copyright holders nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0xBCBC
#define DEVICE_VER 0x0500
#define MANUFACTURER t.m.k.
#define PRODUCT NeXT Keyboard to USB converter
#define DESCRIPTION USB converter for NeXT non-ADB Keyboard
/* matrix size */
#define MATRIX_ROWS 12 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
#define DEBUG_ON_INIT 1
//#define TEENSY_CONFIG 1
//#define PRO_MICRO_CONFIG 1
#define TMK_CONFIG 1
// comment out if you don't want the keyboard's LEDs to flash upon initialization or pressing shift
//#define NEXT_KBD_INIT_FLASH_LEDS
//#define NEXT_KBD_SHIFT_FLASH_LEDS
//============= Start of Arduino Pro Micro Configuration ==============
#ifdef PRO_MICRO_CONFIG
// this is the debugging LED that flashes when a key is being pressed
// comment out in order to disable debugging LED
#define NEXT_KBD_LED1_PORT PORTD
#define NEXT_KBD_LED1_PIN PIND
#define NEXT_KBD_LED1_DDR DDRD
#define NEXT_KBD_LED1_BIT 5
#define NEXT_KBD_LED1_ON NEXT_KBD_LED1_PORT &= ~(1<<NEXT_KBD_LED1_BIT);
#define NEXT_KBD_LED1_OFF NEXT_KBD_LED1_PORT |= (1<<NEXT_KBD_LED1_BIT);
// reserved for future use
#define NEXT_KBD_LED2_PORT PORTB
#define NEXT_KBD_LED2_PIN PINB
#define NEXT_KBD_LED2_DDR DDRB
#define NEXT_KBD_LED2_BIT 6
#define NEXT_KBD_LED2_ON NEXT_KBD_LED2_PORT &= ~(1<<NEXT_KBD_LED2_BIT);
#define NEXT_KBD_LED2_OFF NEXT_KBD_LED2_PORT |= (1<<NEXT_KBD_LED2_BIT);
// corresponds to the Keyboard In wire on the NeXT connector
// (red wire in NeXT connector) - pin 2 on the Pro Micro
#define NEXT_KBD_OUT_PORT PORTD
#define NEXT_KBD_OUT_PIN PIND
#define NEXT_KBD_OUT_DDR DDRD
#define NEXT_KBD_OUT_BIT 1
// corresponds to the Keyboard Out wire on the NeXT connector
// (orange wire in NeXT connector) - pin 3 on the Pro Micro
#define NEXT_KBD_IN_PORT PORTD
#define NEXT_KBD_IN_PIN PIND
#define NEXT_KBD_IN_DDR DDRD
#define NEXT_KBD_IN_BIT 0
// this pin is an input for the power key on the NeXT keyboard
// as the keyboard is powered on this should be normally high;
// if it is pulled low it means the power button is being preseed
// (yellow wire in NeXT connector) - pin 4 on the Pro Micro
#define NEXT_KBD_PWR_PORT PORTD
#define NEXT_KBD_PWR_PIN PIND
#define NEXT_KBD_PWR_DDR DDRD
#define NEXT_KBD_PWR_BIT 4
#endif
//============== End of Arduino Pro Micro Configuration ===============
//================ Start of Teensy 2.0 Configuration =================
#ifdef TEENSY_CONFIG
// this is the debugging LED that flashes when a key is being pressed
// comment out in order to disable debugging LED
#define NEXT_KBD_LED_PORT PORTD
#define NEXT_KBD_LED_PIN PIND
#define NEXT_KBD_LED_DDR DDRD
#define NEXT_KBD_LED_BIT 6
#define NEXT_KBD_LED_ON NEXT_KBD_LED_PORT |= (1<<NEXT_KBD_LED_BIT);
#define NEXT_KBD_LED_OFF NEXT_KBD_LED_PORT &= ~(1<<NEXT_KBD_LED_BIT);
// corresponds to the Keyboard In wire on the NeXT connector
// (red wire in NeXT connector)
#define NEXT_KBD_OUT_PORT PORTB
#define NEXT_KBD_OUT_PIN PINB
#define NEXT_KBD_OUT_DDR DDRB
#define NEXT_KBD_OUT_BIT 1
// corresponds to the Keyboard Out wire on the NeXT connector
// (orange wire in NeXT connector)
#define NEXT_KBD_IN_PORT PORTB
#define NEXT_KBD_IN_PIN PINB
#define NEXT_KBD_IN_DDR DDRB
#define NEXT_KBD_IN_BIT 0
#endif
//================= End of Teensy 2.0 Configuration ==================
//================ Start of TMK converter Configuration =================
#ifdef TMK_CONFIG
// this is the debugging LED that flashes when a key is being pressed
// comment out in order to disable debugging LED
#define NEXT_KBD_LED1_PORT PORTD
#define NEXT_KBD_LED1_PIN PIND
#define NEXT_KBD_LED1_DDR DDRD
#define NEXT_KBD_LED1_BIT 6
#define NEXT_KBD_LED1_ON NEXT_KBD_LED1_PORT |= (1<<NEXT_KBD_LED1_BIT);
#define NEXT_KBD_LED1_OFF NEXT_KBD_LED1_PORT &= ~(1<<NEXT_KBD_LED1_BIT);
// corresponds to the Keyboard In wire on the NeXT connector
#define NEXT_KBD_OUT_PORT PORTD
#define NEXT_KBD_OUT_PIN PIND
#define NEXT_KBD_OUT_DDR DDRD
#define NEXT_KBD_OUT_BIT 1
// corresponds to the Keyboard Out wire on the NeXT connector
#define NEXT_KBD_IN_PORT PORTD
#define NEXT_KBD_IN_PIN PIND
#define NEXT_KBD_IN_DDR DDRD
#define NEXT_KBD_IN_BIT 0
// this pin is an input for the power key on the NeXT keyboard
// as the keyboard is powered on this should be normally high;
// if it is pulled low it means the power button is being preseed
#define NEXT_KBD_PWR_PORT PORTD
#define NEXT_KBD_PWR_PIN PIND
#define NEXT_KBD_PWR_DDR DDRD
#define NEXT_KBD_PWR_BIT 4
#endif
//================= End of TMK converter Configuration ==================
/* key combination for command */
#define IS_COMMAND() ( \
(keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) || \
(keyboard_report->mods == (MOD_BIT(KC_RALT) | MOD_BIT(KC_RALT))) || \
(keyboard_report->mods == (MOD_BIT(KC_RGUI) | MOD_BIT(KC_RGUI))) \
)

View File

@@ -1,177 +0,0 @@
/*
NeXT non-ADB Keyboard USB Converter
Copyright 2013, Benjamin Gould (bgould@github.com)
Based on:
---------
* TMK firmware code Copyright 2011,2012 Jun WAKO <wakojun@gmail.com>
* Arduino code by "Ladyada" Limor Fried (http://ladyada.net/, http://adafruit.com/) \
released under BSD license \
https://github.com/adafruit/USB-NeXT-Keyboard
Timing reference thanks to http://m0115.web.fc2.com/ (dead link), http://cfile7.uf.tistory.com/image/14448E464F410BF22380BB
Pinouts thanks to http://www.68k.org/~degs/nextkeyboard.html
Keycodes from http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-6/src/sys/arch/next68k/dev/
This software is licensed with a Modified BSD License.
All of this is supposed to be Free Software, Open Source, DFSG-free,
GPL-compatible, and OK to use in both free and proprietary applications.
Additions and corrections to this file are welcome.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the copyright holders nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/pgmspace.h>
#include "keycode.h"
#include "print.h"
#include "debug.h"
#include "util.h"
#include "keymap.h"
#include "keycode.h"
// 32*8(256) byte array which converts PS/2 code into USB code
static const uint16_t PROGMEM fn_actions[] = {
ACTION_LAYER_MOMENTARY(1), // FN0 - left command key
ACTION_LAYER_MOMENTARY(1), // FN1 - right command key
ACTION_KEY(KC_BSLS), // FN2 - number pad slash & backslash
ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN3 - number pad equals & pipe
ACTION_MODS_KEY(MOD_LCTL, KC_Z), // FN4 - cmd+undo on layer 1
ACTION_MODS_KEY(MOD_LCTL, KC_X), // FN5 - cmd+cut on layer 1
ACTION_MODS_KEY(MOD_LCTL, KC_C), // FN6 - cmd+copy on layer 1
ACTION_MODS_KEY(MOD_LCTL, KC_V), // FN7 - cmd+paste on layer 1
};
/* This is the physical layout that I am starting with:
* Note: there is some strangeness on the number pad;
* the equal sign shifts to pipe and forward slash shifts to backslash
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS | |VUp|Pwr|BrU| |` | =| /| *|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |VDn| |BrD| | 7| 8| 9| -|
* |------------------------------------------------------ | `---' `---' |-----------|---|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| +|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Alt |Cmd | Space |Cmd |Alt | |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*
* Keymap array:
* 8 bytes
* +---------+
* 0| |
* :| | 0x00-0x87
* ;| |
* 11| |
* +---------+
*/
#define KEYMAP( \
K49,K4A,K4B,K4C,K4D,K50,K4F,K4E,K1E,K1F,K20,K1D,K1C,K1B, K1A,K58,K19, K26,K27,K28,K25, \
K41,K42,K43,K44,K45,K48,K47,K46,K06,K07,K08,K05,K04,K03, K02, K01, K21,K22,K23,K24, \
K57,K39,K3A,K3B,K3C,K3D,K40,K3F,K3E,K2D,K2C,K2B, K2A, K12,K18,K13,K15, \
K56, K31,K32,K33,K34,K35,K37,K36,K2E,K2F,K30, K55, K16, K11,K17,K14, \
K52,K54, K38, K53,K51, K09,K0F,K10, K0B, K0C,K0D \
) { \
{ KC_NO, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K10, KC_##K0B, KC_##K0C, KC_##K0D, KC_NO, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_NO, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
{ KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \
{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
{ KC_##K58, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \
}
static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0: default
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS | |Ins|Ref|Hom| |` | =| /| *|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |Del| |End| | 7| 8| 9| -|
* |-----------------------------------------------------' | `---' `---' |-----------|---|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| +|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Fn0 |Alt | Space |LGui |Fn1 | |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP(
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, WREF,HOME, GRV, FN3, FN2, PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,NO, DEL, END, P7, P8, P9, PMNS,
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
FN0, LALT, SPC, LGUI,FN1, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
/* Layer 1: extra keys
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* |Grv| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| BS | |VUp|VMu|PgU| |` | =| /| *|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab |Pau| W| E| R| T| Y| U| I| O|PSc| \| ]| | |VDn| |PgD| | 7| 8| 9| -|
* |-----------------------------------------------------' | `---' `---' |-----------|---|
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| +|
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift |UND|CUT|COP|PST| B| N| M| ,| .| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Fn0 |Alt | Space |RGui |Fn1 | |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, VOLU,MUTE,PGUP, TRNS,TRNS,TRNS,TRNS,
TRNS,PAUS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,FN3, BSLS,TRNS, VOLD, PGDN, BTN1,MS_U,BTN2,WH_U,
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, MS_L,MS_D,MS_R,WH_D,
TRNS, FN4, FN5, FN6, FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS, TRNS,TRNS,TRNS,
TRNS,TRNS, TRNS, TRNS,TRNS, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS
)
};
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
}
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
}

View File

@@ -1,60 +0,0 @@
/*
NeXT non-ADB Keyboard USB Converter
Copyright 2013, Benjamin Gould (bgould@github.com)
Based on:
TMK firmware code Copyright 2011,2012 Jun WAKO <wakojun@gmail.com>
Arduino code by "Ladyada" Limor Fried (http://ladyada.net/, http://adafruit.com/), released under BSD license
Timing reference thanks to http://m0115.web.fc2.com/ (dead link), http://cfile7.uf.tistory.com/image/14448E464F410BF22380BB
Pinouts thanks to http://www.68k.org/~degs/nextkeyboard.html
Keycodes from http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-6/src/sys/arch/next68k/dev/
This software is licensed with a Modified BSD License.
All of this is supposed to be Free Software, Open Source, DFSG-free,
GPL-compatible, and OK to use in both free and proprietary applications.
Additions and corrections to this file are welcome.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the copyright holders nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include "stdint.h"
#include "led.h"
#include "next_kbd.h"
void led_set(uint8_t usb_led)
{
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
next_kbd_set_leds(true, true);
} else {
next_kbd_set_leds(false, false);
}
}

View File

@@ -1,271 +0,0 @@
/*
NeXT non-ADB Keyboard USB Converter
Copyright 2013, Benjamin Gould (bgould@github.com)
Based on:
TMK firmware code Copyright 2011,2012 Jun WAKO <wakojun@gmail.com>
Arduino code by "Ladyada" Limor Fried (http://ladyada.net/, http://adafruit.com/), released under BSD license
Timing reference thanks to http://m0115.web.fc2.com/ (dead link), http://cfile7.uf.tistory.com/image/14448E464F410BF22380BB
Pinouts thanks to http://www.68k.org/~degs/nextkeyboard.html
Keycodes from http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-6/src/sys/arch/next68k/dev/
This software is licensed with a Modified BSD License.
All of this is supposed to be Free Software, Open Source, DFSG-free,
GPL-compatible, and OK to use in both free and proprietary applications.
Additions and corrections to this file are welcome.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the copyright holders nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "util.h"
#include "serial.h"
#include "matrix.h"
#include "debug.h"
#include "matrix.h"
#include "next_kbd.h"
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) ((code>>3)&0xF)
#define COL(code) (code&0x07)
static bool is_modified = false;
/* number of matrix rows */
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
/* number of matrix columns */
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
#ifndef NEXT_KBD_LED1_ON
#define NEXT_KBD_LED1_ON
#endif
#ifndef NEXT_KBD_LED1_OFF
#define NEXT_KBD_LED1_OFF
#endif
#define NEXT_KBD_PWR_READ (NEXT_KBD_PWR_PIN&(1<<NEXT_KBD_PWR_BIT))
static bool power_state = false;
/* intialize matrix for scanning. should be called once. */
void matrix_init(void)
{
#ifdef DEBUG_ON_INIT
debug_enable = true;
#endif
// I've found that the matrix likes a little while for things to
// settle down before it gets started. Not sure why :)
_delay_ms(250);
dprintf("[ Intializing NeXT keyboard ]\n");
NEXT_KBD_LED1_DDR |= (1<<NEXT_KBD_LED1_BIT); // LED pin to output
NEXT_KBD_LED1_ON;
NEXT_KBD_PWR_DDR &= ~(1<<NEXT_KBD_PWR_BIT); // Power Button pin to input
NEXT_KBD_PWR_PIN |= (1<<NEXT_KBD_PWR_BIT); // KBD_PWR pull up
power_state = NEXT_KBD_PWR_READ ? false : true;
dprintf("Initial power button state: %b\n", power_state);
next_kbd_init();
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
#ifdef NEXT_KBD_INIT_FLASH_LEDS
dprintf("flashing LEDs:");
// flash the LEDs after initialization
bool leds_on = true;
for (uint8_t i = 0; i <= 6; i++)
{
leds_on = leds_on ? false : true;
dprintf(" %b", leds_on);
next_kbd_set_leds(leds_on, leds_on);
_delay_ms(250);
}
dprintf("\n");
#endif
dprintf("[ NeXT keyboard initialized ]\n");
return;
}
#define NEXT_KBD_KEYCODE(response) (uint8_t)((response&0xFF)>>1)
#define NEXT_KBD_PRESSED_KEYCODE(response) (uint8_t)(((response)&0xF00)==0x400)
#define NEXT_KBD_PRESSED(response, mask) (uint8_t)(((response)&mask)>0)
#define NEXT_KBD_PRESSED_CONTROL(response) NEXT_KBD_PRESSED(response,0x01000)
#define NEXT_KBD_PRESSED_SHIFT_LEFT(response) NEXT_KBD_PRESSED(response,0x02000)
#define NEXT_KBD_PRESSED_SHIFT_RGHT(response) NEXT_KBD_PRESSED(response,0x04000)
#define NEXT_KBD_PRESSED_CMD_LEFT(response) NEXT_KBD_PRESSED(response,0x08000)
#define NEXT_KBD_PRESSED_CMD_RGHT(response) NEXT_KBD_PRESSED(response,0x10000)
#define NEXT_KBD_PRESSED_ALT_LEFT(response) NEXT_KBD_PRESSED(response,0x20000)
#define NEXT_KBD_PRESSED_ALT_RGHT(response) NEXT_KBD_PRESSED(response,0x40000)
#define NEXT_KBD_MAKE_OR_BREAK(key, code) \
do { \
if (NEXT_KBD_PRESSED_##key(resp) > 0) \
matrix_make(code); \
else \
matrix_break(code); \
} while (0);
#define NEXT_KBD_PWR_KEYCODE 0x58
/* scan all key states on matrix */
uint8_t matrix_scan(void)
{
_delay_ms(5);
//next_kbd_set_leds(false, false);
NEXT_KBD_LED1_OFF;
is_modified = false;
if (!NEXT_KBD_PWR_READ) {
matrix_make(NEXT_KBD_PWR_KEYCODE);
power_state = 1;
if (is_modified)
{
dprintf("Power state 1\n");
}
} else {
matrix_break(NEXT_KBD_PWR_KEYCODE);
power_state = 0;
if (is_modified)
{
dprintf("Power state 0\n");
}
}
uint32_t resp = (next_kbd_recv());
if (resp == NEXT_KBD_KMBUS_IDLE)
{
return 0;
}
NEXT_KBD_LED1_ON;
#ifdef NEXT_KBD_SHIFT_FLASH_LEDS
next_kbd_set_leds(
NEXT_KBD_PRESSED_SHIFT_LEFT(resp) ? true : false,
NEXT_KBD_PRESSED_SHIFT_RGHT(resp) ? true : false
);
#endif
dprintf("[ r=%04lX keycode=%02X pressed=%X CTRL=%X SHIFT_LEFT=%X SHIFT_RGHT=%X CMD_LEFT=%X CMD_RGHT=%X ALT_LEFT=%X ALT_RGHT=%X ]\n", \
resp, \
NEXT_KBD_KEYCODE(resp), \
NEXT_KBD_PRESSED_KEYCODE(resp), \
NEXT_KBD_PRESSED_CONTROL(resp), \
NEXT_KBD_PRESSED_SHIFT_LEFT(resp), \
NEXT_KBD_PRESSED_SHIFT_RGHT(resp), \
NEXT_KBD_PRESSED_CMD_LEFT(resp), \
NEXT_KBD_PRESSED_CMD_RGHT(resp), \
NEXT_KBD_PRESSED_ALT_LEFT(resp), \
NEXT_KBD_PRESSED_ALT_RGHT(resp) \
);
// Modifier keys don't return keycode; have to check the upper bits
NEXT_KBD_MAKE_OR_BREAK(ALT_RGHT, 0x51);
NEXT_KBD_MAKE_OR_BREAK(ALT_LEFT, 0x52);
NEXT_KBD_MAKE_OR_BREAK(CMD_RGHT, 0x53);
NEXT_KBD_MAKE_OR_BREAK(CMD_LEFT, 0x54);
NEXT_KBD_MAKE_OR_BREAK(SHIFT_RGHT, 0x55);
NEXT_KBD_MAKE_OR_BREAK(SHIFT_LEFT, 0x56);
NEXT_KBD_MAKE_OR_BREAK(CONTROL, 0x57);
NEXT_KBD_MAKE_OR_BREAK(KEYCODE, NEXT_KBD_KEYCODE(resp));
return 1;
}
/* whether modified from previous scan. used after matrix_scan. */
bool matrix_is_modified()
{
return is_modified;
}
/* whether a switch is on */
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
/* matrix state on row */
inline
uint8_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
/* print matrix for debug */
void matrix_print(void)
{
}
inline
static void matrix_make(uint8_t code)
{
if (!matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] |= 1<<COL(code);
is_modified = true;
}
}
inline
static void matrix_break(uint8_t code)
{
if (matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] &= ~(1<<COL(code));
is_modified = true;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

View File

@@ -1,83 +0,0 @@
# Target file name (without extension).
TARGET = pc98_usb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap.c \
matrix.c \
led.c \
protocol/serial_uart.c
# protocol/serial_soft.c
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Build Options
# *Comment out* to disable the options.
#
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
#NKRO_ENABLE = yes # USB Nkey Rollover
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,67 +0,0 @@
PC98 to USB keyboard protocol converter
=======================================
Target MCU is ATMega32u4 but other USB capable AVR will also work.
Connector
---------
8Pin mini DIN
___ ___
/ |_| \
/ 8 7 6 \
| 5 4 3 |
\_ 2 1 _/
\_____/
(receptacle)
Wiring: You can change this with editing config.h.
Pin mini DIN MCU
----------------------------------
1 ~RST(TXD) PD3
2 GND GND
3 ~RDY PD4
4 RXD PD2
5 ~RTY PD5
6 NC
7 NC
8 5V VCC
Protocol
--------
Signal: Asynchronous, Positive logic, 19200baud, Least bit first
Frame format: 1-Start bit(Lo), 8-Data bits, Odd-Parity, 1-Stop bit
Build Firmware
--------------
Just use 'make'
$ cd pc98_usb
$ make
Then, load the binary to MCU with your favorite programmer.
Other PC98 converter projects and resource
------------------------------------------
PC98 to USB
http://davy.nyacom.net/kbd98usb/
PC98 to PS/2
http://www.tsp.ne.jp/~sawada/mago/c_gka98at.htm
http://www.tsp.ne.jp/~sawada/mago/src/gka98at.asm
PC98 keyboard commands
http://www.webtech.co.jp/company/doc/undocumented_mem/io_kb.txt
Inhibit repeating key:
0x9C, 0x70

View File

@@ -1,123 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x9898
#define DEVICE_VER 0x0100
#define MANUFACTURER t.m.k.
#define PRODUCT PC98 keyboard converter
#define DESCRIPTION converts PC98 keyboard protocol into USB
/* matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
/* key combination for command */
#define IS_COMMAND() ( \
host_get_first_key() == KC_CANCEL \
)
/* PC98 Reset Port shared with TXD */
#define PC98_RST_DDR DDRD
#define PC98_RST_PORT PORTD
#define PC98_RST_BIT 3
/* PC98 Ready Port */
#define PC98_RDY_DDR DDRD
#define PC98_RDY_PORT PORTD
#define PC98_RDY_BIT 4
/* PC98 Retry Port */
#define PC98_RTY_DDR DDRD
#define PC98_RTY_PORT PORTD
#define PC98_RTY_BIT 5
/*
* PC98 Serial(USART) configuration
* asynchronous, positive logic, 19200baud, bit order: LSB first
* 1-start bit, 8-data bit, odd parity, 1-stop bit
*/
/*
* Software Serial
*/
#define SERIAL_SOFT_BAUD 19200
#define SERIAL_SOFT_PARITY_ODD
#define SERIAL_SOFT_BIT_ORDER_LSB
#define SERIAL_SOFT_LOGIC_POSITIVE
/* RXD Port */
#define SERIAL_SOFT_RXD_DDR DDRD
#define SERIAL_SOFT_RXD_PORT PORTD
#define SERIAL_SOFT_RXD_PIN PIND
#define SERIAL_SOFT_RXD_BIT 2
#define SERIAL_SOFT_RXD_READ() (SERIAL_SOFT_RXD_PIN&(1<<SERIAL_SOFT_RXD_BIT))
/* RXD Interupt */
#define SERIAL_SOFT_RXD_VECT INT2_vect
#define SERIAL_SOFT_RXD_INIT() do { \
/* pin configuration: input with pull-up */ \
SERIAL_SOFT_RXD_DDR &= ~(1<<SERIAL_SOFT_RXD_BIT); \
SERIAL_SOFT_RXD_PORT |= (1<<SERIAL_SOFT_RXD_BIT); \
/* enable interrupt: INT2(falling edge) */ \
EICRA |= ((1<<ISC21)|(0<<ISC20)); \
EIMSK |= (1<<INT2); \
sei(); \
} while (0)
#define SERIAL_SOFT_RXD_INT_ENTER()
#define SERIAL_SOFT_RXD_INT_EXIT() do { \
/* clear interrupt flag */ \
EIFR = (1<<INTF2); \
} while (0)
/* TXD Port */
#define SERIAL_SOFT_TXD_DDR DDRD
#define SERIAL_SOFT_TXD_PORT PORTD
#define SERIAL_SOFT_TXD_PIN PIND
#define SERIAL_SOFT_TXD_BIT 3
#define SERIAL_SOFT_TXD_HI() do { SERIAL_SOFT_TXD_PORT |= (1<<SERIAL_SOFT_TXD_BIT); } while (0)
#define SERIAL_SOFT_TXD_LO() do { SERIAL_SOFT_TXD_PORT &= ~(1<<SERIAL_SOFT_TXD_BIT); } while (0)
#define SERIAL_SOFT_TXD_INIT() do { \
/* pin configuration: output */ \
SERIAL_SOFT_TXD_DDR |= (1<<SERIAL_SOFT_TXD_BIT); \
/* idle */ \
SERIAL_SOFT_TXD_ON(); \
} while (0)
/*
* Hardware Serial(UART)
*/
#ifdef __AVR_ATmega32U4__
#define SERIAL_UART_BAUD 19200
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
#define SERIAL_UART_RXD_VECT USART1_RX_vect
#define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
#define SERIAL_UART_INIT() do { \
UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); /* RX interrupt, RX: enable */ \
UCSR1B |= (0<<TXCIE1) | (1<<TXEN1); /* TX interrupt, TX: enable */ \
UCSR1C |= (1<<UPM11) | (1<<UPM10); /* parity: none(00), even(01), odd(11) */ \
sei(); \
} while(0)
#else
#error "USART configuration is needed."
#endif
#endif

View File

@@ -1,208 +0,0 @@
/*
Copyright 2012 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 <stdbool.h>
#include <avr/pgmspace.h>
#include "keycode.h"
#include "action.h"
#include "action_macro.h"
#include "util.h"
#include "keymap.h"
/* PC-9801-98-S02 Raku Raku keyboard(Luckyboard) Normal Mode
,---------------------------------------------------------------.
| 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
`---------------------------------------------------------------'
,---------------------------------------------------------------.
| 00| 01| 02| 03| 04| 05| 58| 71| 06| 07| 08| 09| 0A| 0E|
|---------------------------------------------------------------|
| 0F| 10| 11| 12| 13| 14| 3A | 15| 16| 17| 18| 19| 1C|
|---------------------------------------------------------'. |
| 74| 20| 21| 22| 23| 24| 3B | 3C | 25| 26| 27| 28| 29| |
|---------------------------------------------------------------|
| 70| 2A| 2B| 2C| 2D| 2E| 38| 3D | 39| 2F| 30| 31| 32| 33| 70|
`---------------------------------------------------------------'
| 73| 51| 5B| 59| 34| 5A| 35| xx|
`-----------------------------------------------'
xx: 74 35 F4 B5
*/
#define KEYMAP( \
K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \
K00, K01, K02, K03, K04, K05, K58, K71, K06, K07, K08, K09, K0A, K0E, \
K0F, K10, K11, K12, K13, K14, K3A, K15, K16, K17, K18, K19, K1C, \
K74, K20, K21, K22, K23, K24, K3B, K3C, K25, K26, K27, K28, K29, \
K70,K2A, K2B, K2C, K2D, K2E, K38, K3D, K39, K2F, K30, K31, K32, K33, \
K73, K51, K5B, K59, K34, K5A, K35 \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_NO, KC_NO, KC_NO, KC_##K0E, KC_##K0F }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
{ KC_##K18, KC_##K19, KC_NO, KC_NO, KC_##K1C, KC_NO, KC_NO, KC_NO }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
{ KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
{ KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_##K70, KC_##K71, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
}
static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
,---------------------------------------------------------------.
| 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
`---------------------------------------------------------------'
,---------------------------------------------------------------.
| 00| 01| 02| 03| 04| 05| 58| 71| 06| 07| 08| 09| 0A| 0E|
|---------------------------------------------------------------|
| 0F| 10| 11| 12| 13| 14| 3A | 15| 16| 17| 18| 19| 1C|
|---------------------------------------------------------------|
| 74| 20| 21| 22| 23| 24| MINS| EQL| 25| 26| 27| 28| 29| |
|---------------------------------------------------------------|
| 70| 2A| 2B| 2C| 2D| 2E| 38| 3D | 39| 2F| 30| 31| 32| 33| 70|
`---------------------------------------------------------------'
| 73| 51| 5B| 59| 34| 5A| 35| xx|
`-----------------------------------------------'
*/
KEYMAP(
CANCEL,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, FN6,
ESC, 1, 2, 3, 4, 5, FN4, FN5, 6, 7, 8, 9, 0, BSPC,
TAB, Q, W, E, R, T, UP, Y, U, I, O, P, ENT,
LCTL, A, S, D, F, G, MINS, EQL, H, J, K, L, FN2,
LSFT, Z, X, C, V, B, GRV, BSLS, QUOT, N, M,COMM, DOT, FN1,
LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT
),
KEYMAP(
PAUS,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14,
GRV, F1, F2, F3, F4, F5, NO, NO, F6, F7, F8, F9, F10, DEL,
TAB, Q, W, E, R, T, UP, HOME,PGDN,PGUP, END, P, ENT,
LCTL, A, S, D, F, G, MINS, EQL, LEFT,DOWN, UP,RGHT,SCLN,
LSFT, Z, X, C, V, B, INS, DOWN, DEL,HOME,PGDN,PGUP, END,TRNS,
LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT
),
KEYMAP(
PAUS,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14,
GRV, F1, F2, F3, F4, F5, NO, NO, F6, F7, F8, F9, F10, DEL,
TAB, Q, W, E, R, T, UP, WH_L,WH_D,WH_U,WH_R, P, ENT,
LCTL, A, S, D, F, G, MINS, EQL, MS_L,MS_D,MS_U,MS_R,TRNS,
LSFT, Z, X, C, V, B, INS, DOWN, BTN3,BTN2,BTN1,BTN4,BTN5,TRNS,
LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT
),
};
static const uint8_t PROGMEM overlays[][MATRIX_ROWS][MATRIX_COLS] = {};
/*
* Macro definition
*/
enum macro_id {
LBRACKET,
RBRACKET,
DUMMY,
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
keyevent_t event = record->event;
//uint8_t tap_count = record->tap_count;
switch (id) {
case LBRACKET:
return (event.pressed ?
MACRO( T(LBRC), END ) :
MACRO( T(LBRC), END ) );
case RBRACKET:
return (event.pressed ?
MACRO( T(RBRC), END ) :
MACRO( T(RBRC), END ) );
}
return MACRO_NONE;
}
/*
* Action function
*/
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
/*
keyevent_t event = record->event;
uint8_t tap_count = record->tap_count;
switch (id) {
case 0xFF:
action_macro_play(get_macro(opt, event.pressed));
break;
}
*/
}
/*
* Fn actions
*/
static const uint16_t PROGMEM fn_actions[] = {
ACTION_LAYER_TAP_TOGGLE(0), // FN0
ACTION_LAYER_TAP_KEY(1, KC_SLASH), // FN1
ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN2
ACTION_LAYER_MOMENTARY(2), // FN3
ACTION_MACRO(LBRACKET), // FN4
ACTION_MACRO(RBRACKET), // FN5
ACTION_MACRO(DUMMY), // FN6
};
/*
* No need to edit.
*/
#define KEYMAPS_SIZE (sizeof(keymaps) / sizeof(keymaps[0]))
#define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0]))
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
if (layer < KEYMAPS_SIZE) {
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
} else {
// fall back to layer 0
return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]);
}
}
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
action_t action;
if (FN_INDEX(keycode) < FN_ACTIONS_SIZE) {
action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
} else {
action.code = ACTION_NO;
}
return action;
}

View File

@@ -1,33 +0,0 @@
/*
Copyright 2012 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 "serial.h"
#include "led.h"
void led_set(uint8_t usb_led)
{
uint8_t sun_led = 0;
if (usb_led & (1<<USB_LED_NUM_LOCK)) sun_led |= (1<<0);
if (usb_led & (1<<USB_LED_COMPOSE)) sun_led |= (1<<1);
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) sun_led |= (1<<2);
if (usb_led & (1<<USB_LED_CAPS_LOCK)) sun_led |= (1<<3);
serial_send(0x0E);
serial_send(sun_led);
}

View File

@@ -1,211 +0,0 @@
/*
Copyright 2012 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 <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "util.h"
#include "matrix.h"
#include "debug.h"
#include "protocol/serial.h"
/*
* Matrix Array usage:
*
* ROW: 16(4bits)
* COL: 8(3bits)
*
* 8bit wide
* +---------+
* 0|00 ... 07|
* 1|08 ... 0F|
* :| ... |
* :| ... |
* E|70 ... 77|
* F|78 ... 7F|
* +---------+
*/
static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) ((code>>3)&0xF)
#define COL(code) (code&0x07)
static bool is_modified = false;
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
static void pc98_inhibit_repeat(void)
{
uint8_t code;
while (serial_recv()) ;
RETRY:
PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
_delay_ms(500);
serial_send(0x9C);
PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
_delay_ms(100);
while (!(code = serial_recv())) ;
print("PC98: send 9C: "); print_hex8(code); print("\n");
if (code != 0xFA) goto RETRY;
PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
_delay_ms(100);
serial_send(0x70);
PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
_delay_ms(100);
//code = serial_recv();
while (!(code = serial_recv())) ;
print("PC98: send 70: "); print_hex8(code); print("\n");
if (code != 0xFA) goto RETRY;
}
void matrix_init(void)
{
PC98_RST_DDR |= (1<<PC98_RST_BIT);
PC98_RDY_DDR |= (1<<PC98_RDY_BIT);
PC98_RTY_DDR |= (1<<PC98_RTY_BIT);
PC98_RST_PORT |= (1<<PC98_RST_BIT);
PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
PC98_RTY_PORT |= (1<<PC98_RTY_BIT);
serial_init();
// PC98 reset
/*
PC98_RST_PORT &= ~(1<<PC98_RST_BIT);
_delay_us(15);
PC98_RST_PORT |= (1<<PC98_RST_BIT);
_delay_us(13);
PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
*/
_delay_ms(500);
pc98_inhibit_repeat();
// PC98 ready
PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
debug("init\n");
return;
}
uint8_t matrix_scan(void)
{
is_modified = false;
uint16_t code;
PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
_delay_us(30);
code = serial_recv2();
PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
if (code == -1) return 0;
if (code == 0x60) {
pc98_inhibit_repeat();
/*
PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
_delay_ms(100);
serial_send(0x96);
PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
*/
return 0;
}
print_hex8(code); print(" ");
if (code&0x80) {
// break code
if (matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] &= ~(1<<COL(code));
is_modified = true;
}
} else {
// make code
if (!matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] |= (1<<COL(code));
is_modified = true;
}
}
return code;
}
bool matrix_is_modified(void)
{
return is_modified;
}
inline
bool matrix_has_ghost(void)
{
return false;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
inline
uint8_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 01234567\n");
for (uint8_t row = 0; row < matrix_rows(); row++) {
phex(row); print(": ");
pbin_reverse(matrix_get_row(row));
print("\n");
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop(matrix[i]);
}
return count;
}

View File

@@ -1,105 +0,0 @@
#
# Makefile for Teensy
#
# Target file name (without extension).
TARGET = ps2_usb_lufa
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = keymap_common.c \
matrix.c \
led.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_plain.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# PS/2 Options
#
#PS2_USE_USART = yes # uses hardware USART engine for PS/2 signal receive(recomened)
PS2_USE_INT = yes # uses external interrupt for falling edge of PS/2 clock pin
#PS2_USE_BUSYWAIT = yes # uses primitive reference code
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,46 +0,0 @@
PROJECT = ps2_usb
TMK_DIR = ../../tmk_core
MBED_DIR = $(TMK_DIR)/tool/mbed/mbed-sdk
#VPATH += $(MBED_DIR):$(TMK_DIR)
vpath %.s .:$(MBED_DIR):$(TMK_DIR)
vpath %.c .:$(MBED_DIR):$(TMK_DIR)
vpath %.cpp .:$(MBED_DIR):$(TMK_DIR)
OBJDIR = ./build
OBJECTS = \
$(OBJDIR)/protocol/ps2_busywait.o \
$(OBJDIR)/protocol/ps2_io_mbed.o \
$(OBJDIR)/./keymap_common.o \
$(OBJDIR)/./matrix.o \
$(OBJDIR)/./led.o \
$(OBJDIR)/./main.o
ifdef KEYMAP
OBJECTS := $(OBJDIR)/keymap_$(KEYMAP).o $(OBJECTS)
else
OBJECTS := $(OBJDIR)/keymap_plain.o $(OBJECTS)
endif
CONFIG_H = config_mbed.h
SYS_OBJECTS =
INCLUDE_PATHS = -I.
LIBRARY_PATHS =
LIBRARIES =
# Build Options
# Comment out to disable
#BOOTMAGIC_ENABLE = yes
MOUSEKEY_ENABLE = yes
#include $(TMK_DIR)/tool/mbed/mk20d50m.mk
include $(TMK_DIR)/tool/mbed/lpc11u35_501.mk
include $(TMK_DIR)/tool/mbed/mbed.mk
include $(TMK_DIR)/tool/mbed/common.mk
include $(TMK_DIR)/tool/mbed/gcc.mk

View File

@@ -1,75 +0,0 @@
# Target file name (without extension).
TARGET = ps2_usb_pjrc
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap_common.c \
matrix.c \
led.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_plain.c $(SRC)
endif
CONFIG_H = config.h
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 16000000
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# *Comment out* to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
# PS/2 Options
#
#PS2_USE_USART = yes # uses hardware USART engine for PS/2 signal receive(recomened)
#PS2_USE_INT = yes # uses external interrupt for falling edge of PS/2 clock pin
PS2_USE_BUSYWAIT = yes # uses primitive reference code
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/pjrc.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,98 +0,0 @@
#
# Makefile for TMK keyboard converter rev2
# https://github.com/tmk/keyboard_converter#pcb-rev1
#
# Target file name (without extension).
TARGET = ps2_usb_tmk_rev1
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = keymap_common.c \
matrix.c \
led.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_plain.c $(SRC)
endif
CONFIG_H = config_tmk_rev1.h
# MCU name
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# PS/2 Options
#
PS2_USE_USART = yes # uses hardware USART engine for PS/2 signal receive(recomened)
#PS2_USE_BUSYWAIT = yes # uses primitive reference code
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,98 +0,0 @@
#
# Makefile for TMK keyboard converter rev2
# https://github.com/tmk/keyboard_converter#pcb-rev2
#
# Target file name (without extension).
TARGET = ps2_usb_tmk_rev2
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = keymap_common.c \
matrix.c \
led.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_plain.c $(SRC)
endif
CONFIG_H = config_tmk_rev2.h
# MCU name
MCU = atmega32u2
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# PS/2 Options
#
PS2_USE_INT = yes # uses external interrupt for falling edge of PS/2 clock pin
#PS2_USE_BUSYWAIT = yes # uses primitive reference code
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,107 +0,0 @@
# Target file name (without extension).
TARGET = ps2_usb_vusb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# keyboard dependent files
SRC = keymap_common.c \
matrix.c \
led.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
else
SRC := keymap_plain.c $(SRC)
endif
CONFIG_H = config.h
# Use USART for PS/2. With V-USB INT and BUSYWAIT code is not useful.
PS2_USE_USART = yes
# V-USB debug level: To use ps2_usart.c level must be 0
# ps2_usart.c requires USART to receive PS/2 signal.
OPT_DEFS += -DDEBUG_LEVEL=0
# MCU name, you MUST set this to match the board you are using
# type "make clean" after changing this, so all files will be rebuilt
#MCU = at90usb162 # Teensy 1.0
#MCU = atmega32u4 # Teensy 2.0
#MCU = at90usb646 # Teensy++ 1.0
#MCU = at90usb1286 # Teensy++ 2.0
MCU = atmega168
# Processor frequency.
# Normally the first thing your program should do is set the clock prescaler,
# so your program will run at the correct speed. You should also set this
# variable to same clock speed. The _delay_ms() macro uses this, and many
# examples use this variable to calculate timings. Do not add a "UL" here.
F_CPU = 20000000
# Build Options
# comment out to disable the options.
#
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
#NKRO_ENABLE = yes # USB Nkey Rollover
NO_UART = yes # UART is unavailable
#---------------- Programming Options --------------------------
AVRDUDE = avrdude
# Type: avrdude -c ? to get a full listing.
AVRDUDE_PROGRAMMER = usbasp
AVRDUDE_PORT =
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE_COUNTER = -y
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
#AVRDUDE_NO_VERIFY = -V
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_VERBOSE = -v -v
#AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS = -p $(MCU) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
PROGRAM_CMD = $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
# Boot Section Size in bytes
# Teensy halfKay 512
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBasp 2048
OPT_DEFS += -DBOOTLOADER_SIZE=2048
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/protocol/vusb.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,84 +0,0 @@
PS/2 to USB keyboard converter
==============================
This firmware converts PS/2 keyboard protocol to USB.(It supports Scan Code Set 2.)
Connect Wires
-------------
In case of Teensy2.0(ATMega32U4):
1. Connect **Vcc** and **GND**.
2. Connect **Clock** and **Data** line.
- **Interrupt**: **Clock** is on `PD1` and **Data** on `PD0`.(Recommended. Soarer's converter compatible)
- **Busywait**: **Clock** is on `PD1` and **Data** on `PD0`.
- **USART**: **Clock** is on `PD5` and **Data** on `PD2`.
3. Optionally you need pull-up resistor. 1K-10K Ohm is OK.
To change pin configuration edit **config.h** and **Makefile**.
Build Firmware
--------------
For **PJRC Teensy** just run `make`:
$ make clean
$ make
To select keymap:
$ make clean
$ make KEYMAP=[plain|jis|spacefn|...]
After that you will find HEX file `ps2_usb_lufa.hex` in current directory.
- For **TMK converter Rev.1** use `make -f Makefile.tmk_rev1` instead of `make` and HEX file is `ps2_usb_tmk_rev1.hex`.
- For **TMK converter Rev.2** use `make -f Makefile.tmk_rev2` instead of `make` and HEX file is `ps2_usb_tmk_rev2.hex`.
Keymap
------
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in README.md of top directory) and existent keymap files.
PS/2 signal handling implementations
------------------------------------
Following three methods can be used to implement PS/2 signal handling.
### Simple and stupid busy-wait(ps2_busywait.c)
This is expected to implemented with portable C code for reference.
### Interrupt driven(ps2_interrupt.c)
Uses pin interrupt to detect falling edge of clock line.
### USART hardware module(ps2_usart.c)
Uses AVR USART engine to receive PS/2 signal.
To select method edit Makefile.
V-USB Support
-------------
With V-USB you can use this converter on ATmega(168/328) but it doesn't support NKRO at this time.
Circuit:
+---+ +---------------+
USB GND | | ATmega168 |
=== C3 | |
5V <-------+--------+---|Vcc,AVCC | PS/2
R1 | | ====
D- <----+--+-----R2-----|INT1 RXD|------->DATA
D+ <----|---+----R3-----|INT0 XCK|------->CLOCK
Z1 Z2 | | ->5V
GND<----+---+--+--+-----|GND | ->GND
| | | |
| C2-+--|XTAL1 |
| X1 | |
+--C3-+--|XTAL2 |
+---------------+
R1: 1.5K Ohm
R2,R3: 68 Ohm
Z1,Z2: Zenner 3.6V
C1,C2: 22pF
C3: 0.1uF
X1: Crystal 20MHz(16MHz/12MHz)

View File

@@ -1,173 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include <avr/interrupt.h>
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6512
#define DEVICE_VER 0x0001
#define MANUFACTURER t.m.k.
#define PRODUCT PS/2 keyboard converter
#define DESCRIPTION convert PS/2 keyboard to USB
/* matrix size */
#define MATRIX_ROWS 32 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \
keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
)
//#define NO_SUSPEND_POWER_DOWN
/*
* PS/2 Busywait
*/
#ifdef PS2_USE_BUSYWAIT
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 1
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 0
#endif
/*
* PS/2 Pin interrupt
*/
#ifdef PS2_USE_INT
/* uses INT1 for clock line(ATMega32U4) */
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 1
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 0
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC11) | \
(0<<ISC10)); \
} while (0)
#define PS2_INT_ON() do { \
EIMSK |= (1<<INT1); \
} while (0)
#define PS2_INT_OFF() do { \
EIMSK &= ~(1<<INT1); \
} while (0)
#define PS2_INT_VECT INT1_vect
#endif
/*
* PS/2 USART
*/
#ifdef PS2_USE_USART
#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)
/* XCK for clock line and RXD for data line */
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 5
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
#define PS2_USART_INIT() do { \
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
UCSR1C = ((1 << UMSEL10) | \
(3 << UPM10) | \
(0 << USBS1) | \
(3 << UCSZ10) | \
(0 << UCPOL1)); \
UCSR1A = 0; \
UBRR1H = 0; \
UBRR1L = 0; \
} while (0)
#define PS2_USART_RX_INT_ON() do { \
UCSR1B = ((1 << RXCIE1) | \
(1 << RXEN1)); \
} while (0)
#define PS2_USART_RX_POLL_ON() do { \
UCSR1B = (1 << RXEN1); \
} while (0)
#define PS2_USART_OFF() do { \
UCSR1C = 0; \
UCSR1B &= ~((1 << RXEN1) | \
(1 << TXEN1)); \
} while (0)
#define PS2_USART_RX_READY (UCSR1A & (1<<RXC1))
#define PS2_USART_RX_DATA UDR1
#define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
#define PS2_USART_RX_VECT USART1_RX_vect
#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
/* XCK for clock line and RXD for data line */
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 4
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 0
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
#define PS2_USART_INIT() do { \
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
UCSR0C = ((1 << UMSEL00) | \
(3 << UPM00) | \
(0 << USBS0) | \
(3 << UCSZ00) | \
(0 << UCPOL0)); \
UCSR0A = 0; \
UBRR0H = 0; \
UBRR0L = 0; \
} while (0)
#define PS2_USART_RX_INT_ON() do { \
UCSR0B = ((1 << RXCIE0) | \
(1 << RXEN0)); \
} while (0)
#define PS2_USART_RX_POLL_ON() do { \
UCSR0B = (1 << RXEN0); \
} while (0)
#define PS2_USART_OFF() do { \
UCSR0C = 0; \
UCSR0B &= ~((1 << RXEN0) | \
(1 << TXEN0)); \
} while (0)
#define PS2_USART_RX_READY (UCSR0A & (1<<RXC0))
#define PS2_USART_RX_DATA UDR0
#define PS2_USART_ERROR (UCSR0A & ((1<<FE0) | (1<<DOR0) | (1<<UPE0)))
#define PS2_USART_RX_VECT USART_RX_vect
#endif
#endif
#endif

View File

@@ -1,60 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_MBED_H
#define CONFIG_MBED_H
#if 0
// duplicated name against mbed USBDeivce
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6512
#endif
#define DEVICE_VER 0x0001
#define MANUFACTURER t.m.k.
#define PRODUCT PS/2 keyboard converter
#define DESCRIPTION convert PS/2 keyboard to USB
/* matrix size */
#define MATRIX_ROWS 32 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \
keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
)
/*
* PS/2 Busywait
*/
#ifdef PS2_USE_BUSYWAIT
# define PS2_CLOCK_PORT PORTD
# define PS2_CLOCK_PIN PIND
# define PS2_CLOCK_DDR DDRD
# define PS2_CLOCK_BIT 5
# define PS2_DATA_PORT PORTD
# define PS2_DATA_PIN PIND
# define PS2_DATA_DDR DDRD
# define PS2_DATA_BIT 2
#endif
#endif

View File

@@ -1,147 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include <avr/interrupt.h>
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6512
#define DEVICE_VER 0x0001
#define MANUFACTURER t.m.k.
#define PRODUCT PS/2 keyboard converter
#define DESCRIPTION convert PS/2 keyboard to USB
/* matrix size */
#define MATRIX_ROWS 32 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \
keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
)
//#define NO_SUSPEND_POWER_DOWN
/*
* PS/2 Busywait
*/
#ifdef PS2_USE_BUSYWAIT
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 5
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
#endif
/*
* PS/2 USART
*/
#ifdef PS2_USE_USART
#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)
/* XCK for clock line and RXD for data line */
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 5
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
#define PS2_USART_INIT() do { \
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
UCSR1C = ((1 << UMSEL10) | \
(3 << UPM10) | \
(0 << USBS1) | \
(3 << UCSZ10) | \
(0 << UCPOL1)); \
UCSR1A = 0; \
UBRR1H = 0; \
UBRR1L = 0; \
} while (0)
#define PS2_USART_RX_INT_ON() do { \
UCSR1B = ((1 << RXCIE1) | \
(1 << RXEN1)); \
} while (0)
#define PS2_USART_RX_POLL_ON() do { \
UCSR1B = (1 << RXEN1); \
} while (0)
#define PS2_USART_OFF() do { \
UCSR1C = 0; \
UCSR1B &= ~((1 << RXEN1) | \
(1 << TXEN1)); \
} while (0)
#define PS2_USART_RX_READY (UCSR1A & (1<<RXC1))
#define PS2_USART_RX_DATA UDR1
#define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
#define PS2_USART_RX_VECT USART1_RX_vect
#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
/* XCK for clock line and RXD for data line */
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 4
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 0
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
#define PS2_USART_INIT() do { \
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
UCSR0C = ((1 << UMSEL00) | \
(3 << UPM00) | \
(0 << USBS0) | \
(3 << UCSZ00) | \
(0 << UCPOL0)); \
UCSR0A = 0; \
UBRR0H = 0; \
UBRR0L = 0; \
} while (0)
#define PS2_USART_RX_INT_ON() do { \
UCSR0B = ((1 << RXCIE0) | \
(1 << RXEN0)); \
} while (0)
#define PS2_USART_RX_POLL_ON() do { \
UCSR0B = (1 << RXEN0); \
} while (0)
#define PS2_USART_OFF() do { \
UCSR0C = 0; \
UCSR0B &= ~((1 << RXEN0) | \
(1 << TXEN0)); \
} while (0)
#define PS2_USART_RX_READY (UCSR0A & (1<<RXC0))
#define PS2_USART_RX_DATA UDR0
#define PS2_USART_ERROR (UCSR0A & ((1<<FE0) | (1<<DOR0) | (1<<UPE0)))
#define PS2_USART_RX_VECT USART_RX_vect
#endif
#endif
#endif

View File

@@ -1,85 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include <avr/interrupt.h>
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6512
#define DEVICE_VER 0x0001
#define MANUFACTURER t.m.k.
#define PRODUCT PS/2 keyboard converter
#define DESCRIPTION convert PS/2 keyboard to USB
/* matrix size */
#define MATRIX_ROWS 32 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
//#define NO_SUSPEND_POWER_DOWN
/*
* PS/2 Busywait
*/
#ifdef PS2_USE_BUSYWAIT
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 1
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 0
#endif
/*
* PS/2 Pin interrupt
*/
#ifdef PS2_USE_INT
/* uses INT1 for clock line(ATMega32U4) */
#define PS2_CLOCK_PORT PORTD
#define PS2_CLOCK_PIN PIND
#define PS2_CLOCK_DDR DDRD
#define PS2_CLOCK_BIT 1
#define PS2_DATA_PORT PORTD
#define PS2_DATA_PIN PIND
#define PS2_DATA_DDR DDRD
#define PS2_DATA_BIT 0
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC11) | \
(0<<ISC10)); \
} while (0)
#define PS2_INT_ON() do { \
EIMSK |= (1<<INT1); \
} while (0)
#define PS2_INT_OFF() do { \
EIMSK &= ~(1<<INT1); \
} while (0)
#define PS2_INT_VECT INT1_vect
#endif
#endif

View File

@@ -1,31 +0,0 @@
/*
Copyright 2011,2012,2013 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 "keymap_common.h"
#include "progmem.h"
/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
}
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
}

View File

@@ -1,173 +0,0 @@
/*
Copyright 2011,2012,2013 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/>.
*/
#ifndef KEYMAP_COMMON_H
#define KEYMAP_COMMON_H
#include <stdint.h>
#include <stdbool.h>
#include "keycode.h"
#include "action.h"
#include "action_macro.h"
#include "report.h"
#include "print.h"
#include "debug.h"
#include "keymap.h"
// 32*8(256) byte array which converts PS/2 code into USB code
extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
extern const uint16_t fn_actions[];
/* All keys */
#define KEYMAP_ALL( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \
K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \
\
K61, /* for European ISO */ \
K51, K13, K6A, K64, K67, /* for Japanese JIS */ \
K08, K10, K18, K20, K28, K30, K38, K40, K48, K50, K57, K5F, /* F13-24 */ \
KB7, KBF, KDE, /* System Power, Sleep, Wake */ \
KA3, KB2, KA1, /* Mute, Volume Up, Volume Down */ \
KCD, K95, KBB, KB4, KD0, /* Next, Previous, Stop, Pause, Media Select */ \
KC8, KAB, KC0, /* Mail, Calculator, My Computer */ \
K90, KBA, KB8, KB0, /* WWW Search, Home, Back, Forward */ \
KA8, KA0, K98 /* WWW Stop, Refresh, Favorites */ \
) { \
{ KC_NO, KC_##K01, KC_NO, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_NO }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_NO }, \
{ KC_##K18, KC_NO, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_NO }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_NO }, \
{ KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_NO }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_NO }, \
{ KC_##K38, KC_NO, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_NO }, \
{ KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_NO }, \
{ KC_##K50, KC_##K51, KC_##K52, KC_NO, KC_##K54, KC_##K55, KC_NO, KC_##K57 }, \
{ KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_NO, KC_##K5D, KC_NO, KC_##K5F }, \
{ KC_NO, KC_##K61, KC_NO, KC_NO, KC_##K64, KC_NO, KC_##K66, KC_##K67 }, \
{ KC_NO, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_NO, KC_NO, KC_NO }, \
{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
{ KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_##K83, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_##K90, KC_##K91, KC_NO, KC_NO, KC_##K94, KC_##K95, KC_NO, KC_NO }, \
{ KC_##K98, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K9F }, \
{ KC_##KA0, KC_##KA1, KC_NO, KC_##KA3, KC_NO, KC_NO, KC_NO, KC_##KA7 }, \
{ KC_##KA8, KC_NO, KC_NO, KC_##KAB, KC_NO, KC_NO, KC_NO, KC_##KAF }, \
{ KC_##KB0, KC_NO, KC_##KB2, KC_NO, KC_##KB4, KC_NO, KC_NO, KC_##KB7 }, \
{ KC_##KB8, KC_NO, KC_##KBA, KC_##KBB, KC_NO, KC_NO, KC_NO, KC_##KBF }, \
{ KC_##KC0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_##KC8, KC_NO, KC_##KCA, KC_NO, KC_NO, KC_##KCD, KC_NO, KC_NO }, \
{ KC_##KD0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_##KDA, KC_NO, KC_NO, KC_NO, KC_##KDE, KC_NO }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_##KE9, KC_NO, KC_##KEB, KC_##KEC, KC_NO, KC_NO, KC_NO }, \
{ KC_##KF0, KC_##KF1, KC_##KF2, KC_NO, KC_##KF4, KC_##KF5, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, KC_##KFA, KC_NO, KC_##KFC, KC_##KFD, KC_##KFE, KC_NO }, \
}
/* US layout */
#define KEYMAP( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \
K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA \
) \
KEYMAP_ALL( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \
K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \
\
NUBS, \
RO, KANA, JYEN, HENK, MHEN, \
F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, \
SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \
AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \
MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \
MAIL, CALCULATOR, MY_COMPUTER, \
WWW_SEARCH, WWW_HOME, WWW_BACK, WWW_FORWARD, \
WWW_STOP, WWW_REFRESH, WWW_FAVORITES \
)
/* ISO layout */
#define KEYMAP_ISO( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,K5D,K5A, K6B,K73,K74,K79, \
K12,K61,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA \
) \
KEYMAP_ALL( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \
K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \
\
K61, \
RO, KANA, JYEN, HENK, MHEN, \
F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, \
SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \
AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \
MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \
MAIL, CALCULATOR, MY_COMPUTER, \
WWW_SEARCH, WWW_HOME, WWW_BACK, WWW_FORWARD, \
WWW_STOP, WWW_REFRESH, WWW_FAVORITES \
)
/* JIS layout */
#define KEYMAP_JIS( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K6A,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,K5D, K5A, K6B,K73,K74,K79, \
K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A,K51, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K67,K29,K64,K13, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA \
) \
KEYMAP_ALL( \
K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \
K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \
K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \
K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \
\
NUBS, \
K51, K13, K6A, K64, K67, \
F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, \
SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \
AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \
MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \
MAIL, CALCULATOR, MY_COMPUTER, \
WWW_SEARCH, WWW_HOME, WWW_BACK, WWW_FORWARD, \
WWW_STOP, WWW_REFRESH, WWW_FAVORITES \
)
#endif

View File

@@ -1,34 +0,0 @@
/*
* JIS layout Japanese keyboard
*/
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: JIS LAYOUT
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,-----------.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|Slp|Wak|
* `---' `---------------' `---------------' `---------------' `-----------' `-----------'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| JY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Ret | |Del|End|PgD| | 7| 8| 9| |
* |------------------------------------------------------` | `-----------' |-----------| +|
* |CapsLo| A| S| D| F| G| H| J| K| L| ;| :| \| | | 4| 5| 6| |
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Ctrl |Gui |Alt |MHEN| Space |HENK|KANA|Alt |Gui |Menu|Ctrl| |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP_JIS(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK,
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, DEL, END, PGDN, P7, P8, P9,
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, RSFT, UP, P1, P2, P3,
LCTL,LGUI,LALT, MHEN,SPC, HENK,KANA, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -1,32 +0,0 @@
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: default
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,-----------.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|Slp|Wak|
* `---' `---------------' `---------------' `---------------' `-----------' `-----------'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *| -|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| |
* |-----------------------------------------------------------| `-----------' |-----------| +|
* |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| |
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Ctrl |Gui |Alt | Space |Alt |Gui |Menu|Ctrl| |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK,
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9,
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
};
const uint16_t PROGMEM fn_actions[] = {
};

View File

@@ -1,61 +0,0 @@
/*
* SpaceFN layout
* http://geekhack.org/index.php?topic=51069.0
*/
#include "keymap_common.h"
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: default
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,-----------.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|Slp|Wak|
* `---' `---------------' `---------------' `---------------' `-----------' `-----------'
* ,-----------------------------------------------------------. ,-----------. ,---------------.
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *| -|
* |-----------------------------------------------------------| |-----------| |---------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| |
* |-----------------------------------------------------------| `-----------' |-----------| +|
* |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| |
* |-----------------------------------------------------------| ,---. |---------------|
* |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
* |-----------------------------------------------------------| ,-----------. |-----------|Ent|
* |Ctrl |Gui |Alt | Space |Alt |Gui |Menu|Ctrl| |Lef|Dow|Rig| | 0| .| |
* `-----------------------------------------------------------' `-----------' `---------------'
*/
KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK,
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9,
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
LCTL,LGUI,LALT, FN0, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
/* 1: SpaceFN
* ,-----------------------------------------------------------.
* |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
* |-----------------------------------------------------------|
* | | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins |
* |-----------------------------------------------------------|
* | | | | | | |PgU|Lef|Dow|Rig| | | |
* |-----------------------------------------------------------|
* | | | | | |Spc|PgD|` |~ | |Men| |
* |-----------------------------------------------------------|
* | | | | | | | | |
* `-----------------------------------------------------------'
*/
KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK,
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS,INS, DEL, END, PGDN, P7, P8, P9,
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS, P4, P5, P6, PPLS,
TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,APP, TRNS, UP, P1, P2, P3,
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, LEFT,DOWN,RGHT, P0, PDOT,PENT
),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
[1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde
};

View File

@@ -1,46 +0,0 @@
#include "mbed.h"
#include "debug.h"
#include "timer.h"
#include "action.h"
#include "keycode.h"
#include "host.h"
#include "host_driver.h"
#include "mbed_driver.h"
// Button and LEDs of LPC11U35 board
DigitalIn isp(P0_1); // ISP button
DigitalOut led_red(P0_20);
DigitalOut led_green(P0_21);
int main(void) {
isp.mode(PullUp);
led_red = 1;
led_green = 0;
timer_init();
host_set_driver(&mbed_driver);
keyboard_init();
//debug_enable = true;
xprintf("mbed_onekey ver.eee:\r\n");
bool last_isp = isp;
while (1) {
keyboard_task();
//led_green = !led_green;
if (last_isp == isp) continue;
last_isp = isp;
if (last_isp == 0) {
led_red = 0; // on
dprintf("timer: %i\r\n", timer_read());
//register_code(KC_A);
} else {
led_red = 1; // off
//unregister_code(KC_A);
}
}
}

View File

@@ -1,486 +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 <stdbool.h>
#include "action.h"
#include "print.h"
#include "util.h"
#include "debug.h"
#include "ps2.h"
#include "matrix.h"
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
static void matrix_clear(void);
#ifdef MATRIX_HAS_GHOST
static bool matrix_has_ghost_in_row(uint8_t row);
#endif
/*
* Matrix Array usage:
* 'Scan Code Set 2' is assigned into 256(32x8)cell matrix.
* Hmm, it is very sparse and not efficient :(
*
* Notes:
* Both 'Hanguel/English'(F1) and 'Hanja'(F2) collide with 'Delete'(E0 71) and 'Down'(E0 72).
* These two Korean keys need exceptional handling and are not supported for now. Sorry.
*
* 8bit wide
* +---------+
* 0| |
* :| XX | 00-7F for normal codes(without E0-prefix)
* f|_________|
* 10| |
* :| E0 YY | 80-FF for E0-prefixed codes
* 1f| | (<YY>|0x80) is used as matrix position.
* +---------+
*
* Exceptions:
* 0x83: F7(0x83) This is a normal code but beyond 0x7F.
* 0xFC: PrintScreen
* 0xFE: Pause
*/
static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) (code>>3)
#define COL(code) (code&0x07)
// matrix positions for exceptional keys
#define F7 (0x83)
#define PRINT_SCREEN (0xFC)
#define PAUSE (0xFE)
static bool is_modified = false;
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
debug_enable = true;
ps2_host_init();
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
return;
}
/*
* PS/2 Scan Code Set 2: Exceptional Handling
*
* There are several keys to be handled exceptionally.
* The scan code for these keys are varied or prefix/postfix'd
* depending on modifier key state.
*
* Keyboard Scan Code Specification:
* http://www.microsoft.com/whdc/archive/scancode.mspx
* http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc
*
*
* 1) Insert, Delete, Home, End, PageUp, PageDown, Up, Down, Right, Left
* a) when Num Lock is off
* modifiers | make | break
* ----------+---------------------------+----------------------
* Ohter | <make> | <break>
* LShift | E0 F0 12 <make> | <break> E0 12
* RShift | E0 F0 59 <make> | <break> E0 59
* L+RShift | E0 F0 12 E0 F0 59 <make> | <break> E0 59 E0 12
*
* b) when Num Lock is on
* modifiers | make | break
* ----------+---------------------------+----------------------
* Other | E0 12 <make> | <break> E0 F0 12
* Shift'd | <make> | <break>
*
* Handling: These prefix/postfix codes are ignored.
*
*
* 2) Keypad /
* modifiers | make | break
* ----------+---------------------------+----------------------
* Ohter | <make> | <break>
* LShift | E0 F0 12 <make> | <break> E0 12
* RShift | E0 F0 59 <make> | <break> E0 59
* L+RShift | E0 F0 12 E0 F0 59 <make> | <break> E0 59 E0 12
*
* Handling: These prefix/postfix codes are ignored.
*
*
* 3) PrintScreen
* modifiers | make | break
* ----------+--------------+-----------------------------------
* Other | E0 12 E0 7C | E0 F0 7C E0 F0 12
* Shift'd | E0 7C | E0 F0 7C
* Control'd | E0 7C | E0 F0 7C
* Alt'd | 84 | F0 84
*
* Handling: These prefix/postfix codes are ignored, and both scan codes
* 'E0 7C' and 84 are seen as PrintScreen.
*
* 4) Pause
* modifiers | make(no break code)
* ----------+--------------------------------------------------
* Other | E1 14 77 E1 F0 14 F0 77
* Control'd | E0 7E E0 F0 7E
*
* Handling: Both code sequences are treated as a whole.
* And we need a ad hoc 'pseudo break code' hack to get the key off
* because it has no break code.
*
*/
uint8_t matrix_scan(void)
{
// scan code reading states
static enum {
INIT,
F0,
E0,
E0_F0,
// Pause
E1,
E1_14,
E1_14_77,
E1_14_77_E1,
E1_14_77_E1_F0,
E1_14_77_E1_F0_14,
E1_14_77_E1_F0_14_F0,
// Control'd Pause
E0_7E,
E0_7E_E0,
E0_7E_E0_F0,
} state = INIT;
is_modified = false;
// 'pseudo break code' hack
if (matrix_is_on(ROW(PAUSE), COL(PAUSE))) {
matrix_break(PAUSE);
}
uint8_t code = ps2_host_recv();
if (code) xprintf("%i\r\n", code);
if (!ps2_error) {
switch (state) {
case INIT:
switch (code) {
case 0xE0:
state = E0;
break;
case 0xF0:
state = F0;
break;
case 0xE1:
state = E1;
break;
case 0x83: // F7
matrix_make(F7);
state = INIT;
break;
case 0x84: // Alt'd PrintScreen
matrix_make(PRINT_SCREEN);
state = INIT;
break;
case 0x00: // Overrun [3]p.25
matrix_clear();
clear_keyboard();
print("Overrun\n");
state = INIT;
break;
default: // normal key make
if (code < 0x80) {
matrix_make(code);
} else {
matrix_clear();
clear_keyboard();
xprintf("unexpected scan code at INIT: %02X\n", code);
}
state = INIT;
}
break;
case E0: // E0-Prefixed
switch (code) {
case 0x12: // to be ignored
case 0x59: // to be ignored
state = INIT;
break;
case 0x7E: // Control'd Pause
state = E0_7E;
break;
case 0xF0:
state = E0_F0;
break;
default:
if (code < 0x80) {
matrix_make(code|0x80);
} else {
matrix_clear();
clear_keyboard();
xprintf("unexpected scan code at E0: %02X\n", code);
}
state = INIT;
}
break;
case F0: // Break code
switch (code) {
case 0x83: // F7
matrix_break(F7);
state = INIT;
break;
case 0x84: // Alt'd PrintScreen
matrix_break(PRINT_SCREEN);
state = INIT;
break;
case 0xF0:
matrix_clear();
clear_keyboard();
xprintf("unexpected scan code at F0: F0(clear and cont.)\n");
break;
default:
if (code < 0x80) {
matrix_break(code);
} else {
matrix_clear();
clear_keyboard();
xprintf("unexpected scan code at F0: %02X\n", code);
}
state = INIT;
}
break;
case E0_F0: // Break code of E0-prefixed
switch (code) {
case 0x12: // to be ignored
case 0x59: // to be ignored
state = INIT;
break;
default:
if (code < 0x80) {
matrix_break(code|0x80);
} else {
matrix_clear();
clear_keyboard();
xprintf("unexpected scan code at E0_F0: %02X\n", code);
}
state = INIT;
}
break;
// following are states of Pause
case E1:
switch (code) {
case 0x14:
state = E1_14;
break;
default:
state = INIT;
}
break;
case E1_14:
switch (code) {
case 0x77:
state = E1_14_77;
break;
default:
state = INIT;
}
break;
case E1_14_77:
switch (code) {
case 0xE1:
state = E1_14_77_E1;
break;
default:
state = INIT;
}
break;
case E1_14_77_E1:
switch (code) {
case 0xF0:
state = E1_14_77_E1_F0;
break;
default:
state = INIT;
}
break;
case E1_14_77_E1_F0:
switch (code) {
case 0x14:
state = E1_14_77_E1_F0_14;
break;
default:
state = INIT;
}
break;
case E1_14_77_E1_F0_14:
switch (code) {
case 0xF0:
state = E1_14_77_E1_F0_14_F0;
break;
default:
state = INIT;
}
break;
case E1_14_77_E1_F0_14_F0:
switch (code) {
case 0x77:
matrix_make(PAUSE);
state = INIT;
break;
default:
state = INIT;
}
break;
// Following are states of Control'd Pause
case E0_7E:
if (code == 0xE0)
state = E0_7E_E0;
else
state = INIT;
break;
case E0_7E_E0:
if (code == 0xF0)
state = E0_7E_E0_F0;
else
state = INIT;
break;
case E0_7E_E0_F0:
if (code == 0x7E)
matrix_make(PAUSE);
state = INIT;
break;
default:
state = INIT;
}
}
// TODO: request RESEND when error occurs?
/*
if (PS2_IS_FAILED(ps2_error)) {
uint8_t ret = ps2_host_send(PS2_RESEND);
xprintf("Resend: %02X\n", ret);
}
*/
return 1;
}
bool matrix_is_modified(void)
{
return is_modified;
}
inline
bool matrix_has_ghost(void)
{
#ifdef MATRIX_HAS_GHOST
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
if (matrix_has_ghost_in_row(i))
return true;
}
#endif
return false;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & (1<<col));
}
inline
uint8_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 01234567\n");
for (uint8_t row = 0; row < matrix_rows(); row++) {
phex(row); print(": ");
pbin_reverse(matrix_get_row(row));
#ifdef MATRIX_HAS_GHOST
if (matrix_has_ghost_in_row(row)) {
print(" <ghost");
}
#endif
print("\n");
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop(matrix[i]);
}
return count;
}
#ifdef MATRIX_HAS_GHOST
inline
static bool matrix_has_ghost_in_row(uint8_t row)
{
// no ghost exists in case less than 2 keys on
if (((matrix[row] - 1) & matrix[row]) == 0)
return false;
// ghost exists in case same state as other row
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
if (i != row && (matrix[i] & matrix[row]) == matrix[row])
return true;
}
return false;
}
#endif
inline
static void matrix_make(uint8_t code)
{
if (!matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] |= 1<<COL(code);
is_modified = true;
}
}
inline
static void matrix_break(uint8_t code)
{
if (matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] &= ~(1<<COL(code));
is_modified = true;
}
}
inline
static void matrix_clear(void)
{
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
}

View File

@@ -1,377 +0,0 @@
/* Name: usbconfig.h
* Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers
* Author: Christian Starkjohann
* Creation Date: 2005-04-01
* Tabsize: 4
* Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
* License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
* This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
*/
#ifndef __usbconfig_h_included__
#define __usbconfig_h_included__
/*
General Description:
This file is an example configuration (with inline documentation) for the USB
driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is
also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may
wire the lines to any other port, as long as D+ is also wired to INT0 (or any
other hardware interrupt, as long as it is the highest level interrupt, see
section at the end of this file).
*/
/* ---------------------------- Hardware Config ---------------------------- */
#define USB_CFG_IOPORTNAME D
/* This is the port where the USB bus is connected. When you configure it to
* "B", the registers PORTB, PINB and DDRB will be used.
*/
#define USB_CFG_DMINUS_BIT 3
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
* This may be any bit in the port.
*/
#define USB_CFG_DPLUS_BIT 2
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
* This may be any bit in the port. Please note that D+ must also be connected
* to interrupt pin INT0! [You can also use other interrupts, see section
* "Optional MCU Description" below, or you can connect D- to the interrupt, as
* it is required if you use the USB_COUNT_SOF feature. If you use D- for the
* interrupt, the USB interrupt will also be triggered at Start-Of-Frame
* markers every millisecond.]
*/
#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
* 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
* require no crystal, they tolerate +/- 1% deviation from the nominal
* frequency. All other rates require a precision of 2000 ppm and thus a
* crystal!
* Since F_CPU should be defined to your actual clock rate anyway, you should
* not need to modify this setting.
*/
#define USB_CFG_CHECK_CRC 0
/* Define this to 1 if you want that the driver checks integrity of incoming
* data packets (CRC checks). CRC checks cost quite a bit of code size and are
* currently only available for 18 MHz crystal clock. You must choose
* USB_CFG_CLOCK_KHZ = 18000 if you enable this option.
*/
/* ----------------------- Optional Hardware Config ------------------------ */
/* #define USB_CFG_PULLUP_IOPORTNAME D */
/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
* V+, you can connect and disconnect the device from firmware by calling
* the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
* This constant defines the port on which the pullup resistor is connected.
*/
/* #define USB_CFG_PULLUP_BIT 4 */
/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
* above) where the 1.5k pullup resistor is connected. See description
* above for details.
*/
/* --------------------------- Functional Range ---------------------------- */
#define USB_CFG_HAVE_INTRIN_ENDPOINT 1
/* Define this to 1 if you want to compile a version with two endpoints: The
* default control endpoint 0 and an interrupt-in endpoint (any other endpoint
* number).
*/
#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
/* Define this to 1 if you want to compile a version with three endpoints: The
* default control endpoint 0, an interrupt-in endpoint 3 (or the number
* configured below) and a catch-all default interrupt-in endpoint as above.
* You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature.
*/
#define USB_CFG_EP3_NUMBER 3
/* If the so-called endpoint 3 is used, it can now be configured to any other
* endpoint number (except 0) with this macro. Default if undefined is 3.
*/
/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */
/* The above macro defines the startup condition for data toggling on the
* interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1.
* Since the token is toggled BEFORE sending any data, the first packet is
* sent with the oposite value of this configuration!
*/
#define USB_CFG_IMPLEMENT_HALT 0
/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
* for endpoint 1 (interrupt endpoint). Although you may not need this feature,
* it is required by the standard. We have made it a config option because it
* bloats the code considerably.
*/
#define USB_CFG_SUPPRESS_INTR_CODE 0
/* Define this to 1 if you want to declare interrupt-in endpoints, but don't
* want to send any data over them. If this macro is defined to 1, functions
* usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if
* you need the interrupt-in endpoints in order to comply to an interface
* (e.g. HID), but never want to send any data. This option saves a couple
* of bytes in flash memory and the transmit buffers in RAM.
*/
#define USB_CFG_INTR_POLL_INTERVAL 10
/* If you compile a version with endpoint 1 (interrupt-in), this is the poll
* interval. The value is in milliseconds and must not be less than 10 ms for
* low speed devices.
*/
#define USB_CFG_IS_SELF_POWERED 0
/* Define this to 1 if the device has its own power supply. Set it to 0 if the
* device is powered from the USB bus.
*/
#define USB_CFG_MAX_BUS_POWER 100
/* Set this variable to the maximum USB bus power consumption of your device.
* The value is in milliamperes. [It will be divided by two since USB
* communicates power requirements in units of 2 mA.]
*/
#define USB_CFG_IMPLEMENT_FN_WRITE 1
/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
* transfers. Set it to 0 if you don't need it and want to save a couple of
* bytes.
*/
#define USB_CFG_IMPLEMENT_FN_READ 0
/* Set this to 1 if you need to send control replies which are generated
* "on the fly" when usbFunctionRead() is called. If you only want to send
* data from a static buffer, set it to 0 and return the data from
* usbFunctionSetup(). This saves a couple of bytes.
*/
#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints.
* You must implement the function usbFunctionWriteOut() which receives all
* interrupt/bulk data sent to any endpoint other than 0. The endpoint number
* can be found in 'usbRxToken'.
*/
#define USB_CFG_HAVE_FLOWCONTROL 0
/* Define this to 1 if you want flowcontrol over USB data. See the definition
* of the macros usbDisableAllRequests() and usbEnableAllRequests() in
* usbdrv.h.
*/
#define USB_CFG_DRIVER_FLASH_PAGE 0
/* If the device has more than 64 kBytes of flash, define this to the 64 k page
* where the driver's constants (descriptors) are located. Or in other words:
* Define this to 1 for boot loaders on the ATMega128.
*/
#define USB_CFG_LONG_TRANSFERS 0
/* Define this to 1 if you want to send/receive blocks of more than 254 bytes
* in a single control-in or control-out transfer. Note that the capability
* for long transfers increases the driver size.
*/
/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */
/* This macro is a hook if you want to do unconventional things. If it is
* defined, it's inserted at the beginning of received message processing.
* If you eat the received message and don't want default processing to
* proceed, do a return after doing your things. One possible application
* (besides debugging) is to flash a status LED on each packet.
*/
/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */
/* This macro is a hook if you need to know when an USB RESET occurs. It has
* one parameter which distinguishes between the start of RESET state and its
* end.
*/
/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */
/* This macro (if defined) is executed when a USB SET_ADDRESS request was
* received.
*/
#define USB_COUNT_SOF 0
/* define this macro to 1 if you need the global variable "usbSofCount" which
* counts SOF packets. This feature requires that the hardware interrupt is
* connected to D- instead of D+.
*/
/* #ifdef __ASSEMBLER__
* macro myAssemblerMacro
* in YL, TCNT0
* sts timer0Snapshot, YL
* endm
* #endif
* #define USB_SOF_HOOK myAssemblerMacro
* This macro (if defined) is executed in the assembler module when a
* Start Of Frame condition is detected. It is recommended to define it to
* the name of an assembler macro which is defined here as well so that more
* than one assembler instruction can be used. The macro may use the register
* YL and modify SREG. If it lasts longer than a couple of cycles, USB messages
* immediately after an SOF pulse may be lost and must be retried by the host.
* What can you do with this hook? Since the SOF signal occurs exactly every
* 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in
* designs running on the internal RC oscillator.
* Please note that Start Of Frame detection works only if D- is wired to the
* interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES!
*/
#define USB_CFG_CHECK_DATA_TOGGLING 0
/* define this macro to 1 if you want to filter out duplicate data packets
* sent by the host. Duplicates occur only as a consequence of communication
* errors, when the host does not receive an ACK. Please note that you need to
* implement the filtering yourself in usbFunctionWriteOut() and
* usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable
* for each control- and out-endpoint to check for duplicate packets.
*/
#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0
/* define this macro to 1 if you want the function usbMeasureFrameLength()
* compiled in. This function can be used to calibrate the AVR's RC oscillator.
*/
#define USB_USE_FAST_CRC 0
/* The assembler module has two implementations for the CRC algorithm. One is
* faster, the other is smaller. This CRC routine is only used for transmitted
* messages where timing is not critical. The faster routine needs 31 cycles
* per byte while the smaller one needs 61 to 69 cycles. The faster routine
* may be worth the 32 bytes bigger code size if you transmit lots of data and
* run the AVR close to its limit.
*/
/* -------------------------- Device Description --------------------------- */
#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
/* USB vendor ID for the device, low byte first. If you have registered your
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
* *** IMPORTANT NOTE ***
* This template uses obdev's shared VID/PID pair for Vendor Class devices
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
/* This is the ID of the product, low byte first. It is interpreted in the
* scope of the vendor ID. If you have registered your own VID with usb.org
* or if you have licensed a PID from somebody else, define it here. Otherwise
* you may use one of obdev's free shared VID/PID pairs. See the file
* USB-IDs-for-free.txt for details!
* *** IMPORTANT NOTE ***
* This template uses obdev's shared VID/PID pair for Vendor Class devices
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
* the implications!
*/
#define USB_CFG_DEVICE_VERSION 0x00, 0x01
/* Version number of the device: Minor number first, then major number.
*/
#define USB_CFG_VENDOR_NAME 't', '.', 'm', '.', 'k', '.'
#define USB_CFG_VENDOR_NAME_LEN 6
/* These two values define the vendor name returned by the USB device. The name
* must be given as a list of characters under single quotes. The characters
* are interpreted as Unicode (UTF-16) entities.
* If you don't want a vendor name string, undefine these macros.
* ALWAYS define a vendor name containing your Internet domain name if you use
* obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
* details.
*/
#define USB_CFG_DEVICE_NAME 'P', 'S', '/', '2', ' ', 'k', 'e', 'y', 'b', 'o', 'a', 'r', 'd', ' ', 'c', 'o', 'n', 'v', 'e', 'r', 't', 'e', 'r'
#define USB_CFG_DEVICE_NAME_LEN 23
/* Same as above for the device name. If you don't want a device name, undefine
* the macros. See the file USB-IDs-for-free.txt before you assign a name if
* you use a shared VID/PID.
*/
/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
/* Same as above for the serial number. If you don't want a serial number,
* undefine the macros.
* It may be useful to provide the serial number through other means than at
* compile time. See the section about descriptor properties below for how
* to fine tune control over USB descriptors such as the string descriptor
* for the serial number.
*/
#define USB_CFG_DEVICE_CLASS 0
#define USB_CFG_DEVICE_SUBCLASS 0
/* See USB specification if you want to conform to an existing device class.
* Class 0xff is "vendor specific".
*/
#define USB_CFG_INTERFACE_CLASS 3 /* HID */
#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
/* See USB specification if you want to conform to an existing device class or
* protocol. The following classes must be set at interface level:
* HID class is 3, no subclass and protocol required (but may be useful!)
* CDC class is 2, use subclass 2 and protocol 1 for ACM
*/
#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
/* Define this to the length of the HID report descriptor, if you implement
* an HID device. Otherwise don't define it or define it to 0.
* If you use this define, you must add a PROGMEM character array named
* "usbHidReportDescriptor" to your code which contains the report descriptor.
* Don't forget to keep the array and this define in sync!
*/
/* #define USB_PUBLIC static */
/* Use the define above if you #include usbdrv.c instead of linking against it.
* This technique saves a couple of bytes in flash memory.
*/
/* ------------------- Fine Control over USB Descriptors ------------------- */
/* If you don't want to use the driver's default USB descriptors, you can
* provide our own. These can be provided as (1) fixed length static data in
* flash memory, (2) fixed length static data in RAM or (3) dynamically at
* runtime in the function usbFunctionDescriptor(). See usbdrv.h for more
* information about this function.
* Descriptor handling is configured through the descriptor's properties. If
* no properties are defined or if they are 0, the default descriptor is used.
* Possible properties are:
* + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched
* at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is
* used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if
* you want RAM pointers.
* + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found
* in static memory is in RAM, not in flash memory.
* + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),
* the driver must know the descriptor's length. The descriptor itself is
* found at the address of a well known identifier (see below).
* List of static descriptor names (must be declared PROGMEM if in flash):
* char usbDescriptorDevice[];
* char usbDescriptorConfiguration[];
* char usbDescriptorHidReport[];
* char usbDescriptorString0[];
* int usbDescriptorStringVendor[];
* int usbDescriptorStringDevice[];
* int usbDescriptorStringSerialNumber[];
* Other descriptors can't be provided statically, they must be provided
* dynamically at runtime.
*
* Descriptor properties are or-ed or added together, e.g.:
* #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18))
*
* The following descriptors are defined:
* USB_CFG_DESCR_PROPS_DEVICE
* USB_CFG_DESCR_PROPS_CONFIGURATION
* USB_CFG_DESCR_PROPS_STRINGS
* USB_CFG_DESCR_PROPS_STRING_0
* USB_CFG_DESCR_PROPS_STRING_VENDOR
* USB_CFG_DESCR_PROPS_STRING_PRODUCT
* USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
* USB_CFG_DESCR_PROPS_HID
* USB_CFG_DESCR_PROPS_HID_REPORT
* USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)
*
* Note about string descriptors: String descriptors are not just strings, they
* are Unicode strings prefixed with a 2 byte header. Example:
* int serialNumberDescriptor[] = {
* USB_STRING_DESCRIPTOR_HEADER(6),
* 'S', 'e', 'r', 'i', 'a', 'l'
* };
*/
#define USB_CFG_DESCR_PROPS_DEVICE 0
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
#define USB_CFG_DESCR_PROPS_STRINGS 0
#define USB_CFG_DESCR_PROPS_STRING_0 0
#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
//#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
#define USB_CFG_DESCR_PROPS_HID 0
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
/* ----------------------- Optional MCU Description ------------------------ */
/* The following configurations have working defaults in usbdrv.h. You
* usually don't need to set them explicitly. Only if you want to run
* the driver on a device which is not yet supported or with a compiler
* which is not fully supported (such as IAR C) or if you use a differnt
* interrupt than INT0, you may have to define some of these.
*/
/* #define USB_INTR_CFG MCUCR */
/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
/* #define USB_INTR_CFG_CLR 0 */
/* #define USB_INTR_ENABLE GIMSK */
/* #define USB_INTR_ENABLE_BIT INT0 */
/* #define USB_INTR_PENDING GIFR */
/* #define USB_INTR_PENDING_BIT INTF0 */
/* #define USB_INTR_VECTOR INT0_vect */
#endif /* __usbconfig_h_included__ */

View File

@@ -1,106 +0,0 @@
#
# Makefile for Teensy
#
# Target file name (without extension).
TARGET = serialmouse_usb
# Directory common source filess exist
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# project specific files
SRC = keymap.c \
matrix.c \
led.c
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
#MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
#EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
#COMMAND_ENABLE = yes # Commands for debug and configuration
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# Serial Mouse Options
# You can choose a mouse protocol and the implementation of
# the underlying serial connection.
#
SERIAL_MOUSE_MICROSOFT_ENABLE = yes # Enable support for Microsoft-compatible mice
#SERIAL_MOUSE_MOUSESYSTEMS_ENABLE = yes # Enable support for Mousesystems-compatible mice
#SERIAL_MOUSE_USE_UART = yes # use hardware UART for serial connection
SERIAL_MOUSE_USE_SOFT = yes # use software serial implementation
# Optional serial mouse driver features
# Support scrolling while holding the middle mouse button
# (currently only supported for Mousesystems mice):
#OPT_DEFS += -DSERIAL_MOUSE_CENTER_SCROLL
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TMK_DIR)
include $(TMK_DIR)/protocol.mk
include $(TMK_DIR)/protocol/lufa.mk
include $(TMK_DIR)/common.mk
include $(TMK_DIR)/rules.mk

View File

@@ -1,11 +0,0 @@
Serial mouse converter
======================
See https://github.com/tmk/tmk_keyboard/pull/131
Supported protocols
-------------------
### Microsoft
Not tested.
### Mousesystems

View File

@@ -1,119 +0,0 @@
/*
Copyright 2012 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include <avr/interrupt.h>
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x2222
#define DEVICE_VER 0x0001
#define MANUFACTURER t.m.k.
#define PRODUCT serial mouse converter
#define DESCRIPTION convert serial mouse into USB
/* matrix size */
#define MATRIX_ROWS 0
#define MATRIX_COLS 0
/* key combination for command */
#define IS_COMMAND() false
#ifdef SERIAL_MOUSE_MICROSOFT
/*
* Serial(USART) configuration (for Microsoft serial mice)
* asynchronous, positive logic, 1200baud, bit order: LSB first
* 1-start bit, 7-data bit, no parity, 1-stop bit
*/
#define SERIAL_UART_BAUD 1200
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
#define SERIAL_UART_RXD_VECT USART1_RX_vect
#define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
#define SERIAL_UART_INIT() do { \
UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); /* RX interrupt, RX: enable */ \
UCSR1C = (1<<UCSZ11) | (0<<UCSZ10); /* no parity, 1 stop bit, 7-bit characters */ \
sei(); \
} while(0)
// for Microsoft mouse protocol
/* Serial(USART) configuration
* asynchronous, negative logic, 1200baud, no flow control
* 1-start bit, 7-data bit, non parity, 1-stop bit
*/
#define SERIAL_SOFT_BAUD 1200
#define SERIAL_SOFT_DATA_7BIT
#define SERIAL_SOFT_PARITY_NONE
#define SERIAL_SOFT_BIT_ORDER_LSB
#define SERIAL_SOFT_LOGIC_NEGATIVE
/* RXD Port */
#define SERIAL_SOFT_RXD_DDR DDRD
#define SERIAL_SOFT_RXD_PORT PORTD
#define SERIAL_SOFT_RXD_PIN PIND
#define SERIAL_SOFT_RXD_BIT 2
#define SERIAL_SOFT_RXD_VECT INT2_vect
/* RXD Interupt */
#define SERIAL_SOFT_RXD_INIT() do { \
/* pin configuration: input with pull-up */ \
SERIAL_SOFT_RXD_DDR &= ~(1<<SERIAL_SOFT_RXD_BIT); \
SERIAL_SOFT_RXD_PORT |= (1<<SERIAL_SOFT_RXD_BIT); \
/* enable interrupt: INT2(rising edge) */ \
EICRA |= ((1<<ISC21)|(1<<ISC20)); \
EIMSK |= (1<<INT2); \
sei(); \
} while (0)
#define SERIAL_SOFT_RXD_INT_ENTER()
#define SERIAL_SOFT_RXD_INT_EXIT() do { \
/* clear interrupt flag */ \
EIFR = (1<<INTF2); \
} while (0)
#define SERIAL_SOFT_RXD_READ() (SERIAL_SOFT_RXD_PIN&(1<<SERIAL_SOFT_RXD_BIT))
/* TXD Port */
#define SERIAL_SOFT_TXD_HI()
#define SERIAL_SOFT_TXD_LO()
#define SERIAL_SOFT_TXD_INIT()
#elif defined(SERIAL_MOUSE_MOUSESYSTEMS)
/*
* Serial(USART) configuration (for Mousesystems serial mice)
* asynchronous, positive logic, 1200baud, bit order: LSB first
* 1-start bit, 8-data bit, no parity, 1-stop bit
*/
#define SERIAL_UART_BAUD 1200
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
#define SERIAL_UART_RXD_VECT USART1_RX_vect
#define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
#define SERIAL_UART_INIT() do { \
UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); /* RX interrupt, RX: enable */ \
UCSR1C = (1<<UCSZ11) | (1<<UCSZ10); /* no parity, 1 stop bit, 8-bit characters */ \
sei(); \
} while(0)
#endif
#endif

Some files were not shown because too many files have changed in this diff Show More