Compare commits
850 Commits
planck-4.1
...
0.5.2
Author | SHA1 | Date | |
---|---|---|---|
|
5c8cdfd2b5 | ||
|
246d2583ff | ||
|
ee386a29d1 | ||
|
cf8dac3538 | ||
|
98adda34c9 | ||
|
470c8436c2 | ||
|
3a76f24cbd | ||
|
835cacb031 | ||
|
f0633f2540 | ||
|
404f79ef14 | ||
|
f787f4291a | ||
|
45e5b32781 | ||
|
a5d10e8c2e | ||
|
02a95ee08c | ||
|
407f949e4b | ||
|
748316fc43 | ||
|
0081101c30 | ||
|
4c3630dc17 | ||
|
f70758622b | ||
|
f400ac1d7d | ||
|
d43f4a5f57 | ||
|
5a860b71a1 | ||
|
f644b9a07a | ||
|
ec05f65421 | ||
|
2fe18a50ec | ||
|
a28f689387 | ||
|
d7aa4724fb | ||
|
13fa63b192 | ||
|
712f3de16f | ||
|
fffe76a7b7 | ||
|
8a645aa9ad | ||
|
c9ca368008 | ||
|
aac7c0aa4d | ||
|
0212a30aa6 | ||
|
1b20243092 | ||
|
6546dddddb | ||
|
7e3962f36a | ||
|
938422ce99 | ||
|
8af48194f2 | ||
|
51fe4f0d34 | ||
|
b3cf96ec2e | ||
|
d0db044164 | ||
|
37ed3d13a4 | ||
|
3c32e38036 | ||
|
71137deba2 | ||
|
9111cc00f5 | ||
|
2b3859937b | ||
|
a777495683 | ||
|
245f77b863 | ||
|
841d7e6a1d | ||
|
6d377bcc9c | ||
|
372af5e3f6 | ||
|
0026f4ec09 | ||
|
89461e743e | ||
|
79a823d802 | ||
|
a8a1fbbac8 | ||
|
a54944ac33 | ||
|
405b2ae267 | ||
|
99d548c4fb | ||
|
a00957abca | ||
|
efa526f570 | ||
|
9d24943ec1 | ||
|
84661ac44b | ||
|
08c192caea | ||
|
afd2c2ee9e | ||
|
c2c8a12022 | ||
|
5c4a73d788 | ||
|
3fd9aa3660 | ||
|
803a861b4e | ||
|
642d0acef5 | ||
|
bfbab75292 | ||
|
9ce38cbccf | ||
|
eb6abb6305 | ||
|
6b5cd656fd | ||
|
250628de04 | ||
|
c26c81c7f3 | ||
|
461dfd4462 | ||
|
f7462aaa61 | ||
|
4cf0f7dd16 | ||
|
bf0b355bc8 | ||
|
cbb1927d6f | ||
|
01e750a372 | ||
|
dc3937d485 | ||
|
072237bce8 | ||
|
10ff962321 | ||
|
489d0ab581 | ||
|
9eb8d05246 | ||
|
3d264adfc5 | ||
|
0815c7ae17 | ||
|
1ac15e6b3a | ||
|
6f44885615 | ||
|
81b89f8b2b | ||
|
99d0b54e5e | ||
|
b2dcac9655 | ||
|
ff76ee8377 | ||
|
5036112d39 | ||
|
a896b300ec | ||
|
5521d854d0 | ||
|
b56ec38d5c | ||
|
aa0939b5ef | ||
|
0fde5a34e2 | ||
|
7288e5ab9c | ||
|
c6299a7859 | ||
|
c660d5f814 | ||
|
236a0b0b60 | ||
|
b2419b31d3 | ||
|
3717cf5864 | ||
|
8459bb97c1 | ||
|
ed975f2454 | ||
|
1bef7bf45a | ||
|
e491f5a4d0 | ||
|
3a453a03ed | ||
|
c4fca8b6bc | ||
|
1121753746 | ||
|
db1aec159d | ||
|
a55c5e3ea3 | ||
|
0b38204e62 | ||
|
49a00a535f | ||
|
a702f4631e | ||
|
ef2ebeb3ca | ||
|
9d4cc2f3f1 | ||
|
62f1c13c3a | ||
|
f74ff86f9c | ||
|
176b93d08e | ||
|
18d013b25b | ||
|
d8b445b03b | ||
|
30b80a23f3 | ||
|
02055406e8 | ||
|
3a71f3534a | ||
|
58b2536bf1 | ||
|
b0a9bd319b | ||
|
cfb45027bb | ||
|
8f8d104759 | ||
|
b7b44dc481 | ||
|
677ae86bde | ||
|
fe51724544 | ||
|
5ce7ec9ea5 | ||
|
6fba925f41 | ||
|
e7df488a92 | ||
|
402e6c13a1 | ||
|
0bd03d698c | ||
|
ca9a3dcb71 | ||
|
ccde1d8b5e | ||
|
e5c7b5d8fc | ||
|
6a59dfb4c6 | ||
|
ad290946f2 | ||
|
5fca9ff4d5 | ||
|
262d31c389 | ||
|
300c71a023 | ||
|
8377d5fdc5 | ||
|
a85aefd27a | ||
|
b23a963bec | ||
|
ffc1d97672 | ||
|
0de3a5d0b2 | ||
|
acffbb480f | ||
|
847377fb43 | ||
|
925ed44405 | ||
|
6dbcc50f56 | ||
|
f98062081b | ||
|
460bf008f5 | ||
|
07e266bbc6 | ||
|
2eced29675 | ||
|
8a76075ca7 | ||
|
b8e74c378b | ||
|
1d1f2b4ee2 | ||
|
2acfd2ab2b | ||
|
52430ef0d6 | ||
|
dd685eceb2 | ||
|
d8a608f3ff | ||
|
748181dccd | ||
|
eb588d630c | ||
|
223cffd92f | ||
|
d3ec88cd07 | ||
|
db48b28eeb | ||
|
033f0b92c4 | ||
|
273faa4d9c | ||
|
01038ab54c | ||
|
cae269b08b | ||
|
6be061c6d4 | ||
|
46ff5f3b90 | ||
|
9675e1357f | ||
|
a81279158b | ||
|
4e4f365c87 | ||
|
10864def46 | ||
|
5ee136a36f | ||
|
d6c545f471 | ||
|
2fa36e38cf | ||
|
438a5d685b | ||
|
b7696fb3b0 | ||
|
53ea854462 | ||
|
dd114e648e | ||
|
29c527f0f0 | ||
|
281aa1dad0 | ||
|
101416eb82 | ||
|
06c64bbff3 | ||
|
ea926369b8 | ||
|
a305da2bc9 | ||
|
29731588b7 | ||
|
8e28bf39d8 | ||
|
96cc053799 | ||
|
e05fd4fc66 | ||
|
5834d4b262 | ||
|
91913146db | ||
|
b49d7800ae | ||
|
e9f69ff46e | ||
|
c3469b8d21 | ||
|
c9803f78b2 | ||
|
df50bee5a8 | ||
|
46b93f02d5 | ||
|
8a65c640ec | ||
|
df32d5b769 | ||
|
34d6f07d2c | ||
|
b8e13167c8 | ||
|
c641e46567 | ||
|
61ab3018c7 | ||
|
826c929c49 | ||
|
36dddd45fb | ||
|
803040d4ee | ||
|
97f9b05efb | ||
|
2ba7f38bf4 | ||
|
83e613ad23 | ||
|
16483409cf | ||
|
ebe351a690 | ||
|
e58304c094 | ||
|
dc49231391 | ||
|
bd5f323bec | ||
|
e5b165c255 | ||
|
32e952bda9 | ||
|
0b54b32361 | ||
|
9838ddcead | ||
|
a747343b61 | ||
|
20892bf706 | ||
|
5dce74d0ff | ||
|
ae95834f5a | ||
|
0edfe55bfe | ||
|
0213acbdbe | ||
|
6cd55d89e6 | ||
|
f2e5ca25db | ||
|
a30591cd53 | ||
|
02fa4e3ce2 | ||
|
7bc1caa21c | ||
|
73d6018296 | ||
|
56515ba503 | ||
|
a6db20e518 | ||
|
434b286032 | ||
|
75d7eb9cb5 | ||
|
a3c8949627 | ||
|
9240f27ba9 | ||
|
dc4c8875ba | ||
|
901f29e3aa | ||
|
13c4080a1d | ||
|
9a59fee667 | ||
|
063ade6bb5 | ||
|
be2863e56d | ||
|
d5914a4dfe | ||
|
5d241479f5 | ||
|
1f52dbcac0 | ||
|
985a091a73 | ||
|
cd41355069 | ||
|
82922a4937 | ||
|
a05b6a72d9 | ||
|
c87d039839 | ||
|
1eec2b7277 | ||
|
b66845ca7f | ||
|
7e4341e437 | ||
|
d15d1d3833 | ||
|
c7d11fd001 | ||
|
e18a75609d | ||
|
dd2911151b | ||
|
082f7ed3d3 | ||
|
236c040859 | ||
|
07d29b7d29 | ||
|
d059624bfb | ||
|
73073f270b | ||
|
6ef3060b42 | ||
|
fc80aa9974 | ||
|
a8e5f61805 | ||
|
75b18773bd | ||
|
0f71c81df8 | ||
|
45b7718fb1 | ||
|
59c54d651b | ||
|
ae66f0d702 | ||
|
2186e5ae85 | ||
|
f39e1b5dfe | ||
|
d0c667c790 | ||
|
464f7d9687 | ||
|
f0768f8be9 | ||
|
8e2732edf3 | ||
|
9f41544e1d | ||
|
d639e08a31 | ||
|
044fa3ff85 | ||
|
7f88c9506c | ||
|
11d263118a | ||
|
cee0cf8a6e | ||
|
245c9508bd | ||
|
e14b0e8e7e | ||
|
78f8fe361f | ||
|
8f0a8cb7a6 | ||
|
ead68248c5 | ||
|
4bcec04c01 | ||
|
555e41d9e5 | ||
|
aa70aa3962 | ||
|
5d43a2aecf | ||
|
f6e86cd2c9 | ||
|
570e784140 | ||
|
95a160bf92 | ||
|
af4c44deef | ||
|
b787ed9dc6 | ||
|
1f290f6213 | ||
|
13eb2f826b | ||
|
66b13a66e9 | ||
|
fe001d46fd | ||
|
ff1b563e85 | ||
|
81ea909467 | ||
|
4094544d41 | ||
|
51ae6da99e | ||
|
7b219a7f60 | ||
|
f946d830f9 | ||
|
efbc205efd | ||
|
d0cefef946 | ||
|
06f18e95d4 | ||
|
6e0f994950 | ||
|
5776f39667 | ||
|
5a2501d90f | ||
|
f02eccbb29 | ||
|
84735836e3 | ||
|
d2b6438e39 | ||
|
9caf866618 | ||
|
2d0ada0190 | ||
|
3f1fca2eb8 | ||
|
e26a80508f | ||
|
712476cd28 | ||
|
8485bb34d2 | ||
|
be4e75423a | ||
|
d6d0b7eada | ||
|
a94eb16bd7 | ||
|
a849bdc581 | ||
|
7edac212c8 | ||
|
1585fc4b61 | ||
|
12c1314b02 | ||
|
b5c811bde5 | ||
|
637170d560 | ||
|
a182cbc031 | ||
|
6fee7e178f | ||
|
a1f88bf7bf | ||
|
0f39ab5219 | ||
|
7f3c9c6a39 | ||
|
b5019bef05 | ||
|
8ee389c9b6 | ||
|
746fd15638 | ||
|
fbd4c34c0f | ||
|
f2214ce1cb | ||
|
d9d67e7b76 | ||
|
f837406ace | ||
|
17acde94ee | ||
|
de1df63953 | ||
|
2cf9b93758 | ||
|
6313ec7ef9 | ||
|
b94e5b2aa6 | ||
|
7a1eca784f | ||
|
b5511b9a8a | ||
|
9a071f051c | ||
|
4b0d16cd7b | ||
|
e3c735e400 | ||
|
bf23ac96f6 | ||
|
97e7486d4c | ||
|
0c9d66eb59 | ||
|
03d6e165bb | ||
|
3be13d1ffb | ||
|
98d7ad6f49 | ||
|
f25596b8dc | ||
|
cefa8468fb | ||
|
2e23689b8e | ||
|
c05cbaf534 | ||
|
cf3926a8e1 | ||
|
3d7aaa31e4 | ||
|
5893f0fa1f | ||
|
2b3a3ca678 | ||
|
e131de3df6 | ||
|
d37becc0a9 | ||
|
2febf9b9f7 | ||
|
450a8fb5b6 | ||
|
06a2677b7e | ||
|
6390033e86 | ||
|
af119baf71 | ||
|
4bb0eaef26 | ||
|
be265decae | ||
|
377583d9f3 | ||
|
132c079534 | ||
|
e0fc186c28 | ||
|
ea472fb018 | ||
|
664c0a036b | ||
|
27ebacb15d | ||
|
c1037b1dc0 | ||
|
b57cf3c0c8 | ||
|
b75538c0bf | ||
|
390a1bda8b | ||
|
ccc34851f2 | ||
|
6f24344be7 | ||
|
23f63ed1b9 | ||
|
34aa59c6d5 | ||
|
11f17e3b23 | ||
|
a8b1c47f0f | ||
|
c86bbf474e | ||
|
3b990c08dc | ||
|
df8724ce08 | ||
|
74a1f00713 | ||
|
620e4f74d3 | ||
|
ac7d202d4f | ||
|
7f5e71d79f | ||
|
ffa5b1e7ea | ||
|
102a830bbd | ||
|
e356de2220 | ||
|
01736a502e | ||
|
a06115df19 | ||
|
ab6557c1a0 | ||
|
161bd5596b | ||
|
abee809298 | ||
|
285c5a91f2 | ||
|
9bbc9a7ce0 | ||
|
3774a7fcda | ||
|
6c5fce5c1a | ||
|
00d88b74ad | ||
|
c38b3e3be9 | ||
|
b085a34506 | ||
|
21b6b4e6c4 | ||
|
668c739702 | ||
|
5cac51a773 | ||
|
1dd6ceb45d | ||
|
72e78a017f | ||
|
5b88e7ab9a | ||
|
4da698fda3 | ||
|
9f1b27c5ba | ||
|
e025a94bc2 | ||
|
d85f6deb9b | ||
|
6dde65c2a9 | ||
|
17e1a4f825 | ||
|
7541122cad | ||
|
530dd3377e | ||
|
bce6e52391 | ||
|
dd22c787b8 | ||
|
702405f039 | ||
|
e9f7487518 | ||
|
162f603b1c | ||
|
aa76425395 | ||
|
34bf8558cd | ||
|
b2bc215934 | ||
|
28249498bc | ||
|
33e62c080c | ||
|
0a99cf300c | ||
|
3bc51065a4 | ||
|
19ebf6161f | ||
|
c609edc362 | ||
|
992ec01b5d | ||
|
de3117f483 | ||
|
ec0db2933c | ||
|
b5cecb4cc9 | ||
|
631b8999a7 | ||
|
79f82d3d80 | ||
|
6e27f6fbde | ||
|
f73a378f0f | ||
|
1803dbc6d5 | ||
|
64218f0f70 | ||
|
7aa31ad338 | ||
|
83b67b0cf3 | ||
|
cdad01b57a | ||
|
a9e0fd410c | ||
|
309d93184e | ||
|
0ba3e523a7 | ||
|
a377017c95 | ||
|
f519b94be7 | ||
|
1d766c596e | ||
|
a4255664ce | ||
|
4f1cb9fd5e | ||
|
c06e2486ab | ||
|
b8e204322a | ||
|
78a1dc84dd | ||
|
ff8b4a1d89 | ||
|
7697f23538 | ||
|
930ae4b7ff | ||
|
78976d8f7a | ||
|
9e6c57af2a | ||
|
d5270af111 | ||
|
7a9be2562d | ||
|
a6401076d5 | ||
|
bd40844e4e | ||
|
b90366285f | ||
|
964b8574ee | ||
|
d75de44551 | ||
|
b0317abe42 | ||
|
d956dd1248 | ||
|
f403028974 | ||
|
552f469dfc | ||
|
e40c33f754 | ||
|
32f88c0717 | ||
|
4c6960835c | ||
|
508eddf8ba | ||
|
a0fdb6b81a | ||
|
2082c6f110 | ||
|
2a2920d92c | ||
|
055247f35d | ||
|
41d7460f53 | ||
|
f44ead1462 | ||
|
67cf367a45 | ||
|
003cb9124c | ||
|
cbb7e95284 | ||
|
8d60354d5a | ||
|
108d0e89a6 | ||
|
3b34cf7e6c | ||
|
f2dd125a1e | ||
|
c66c86cace | ||
|
427ea7a889 | ||
|
e2916f8ab1 | ||
|
22cb73fad3 | ||
|
6bbb0b030e | ||
|
c0a9fa8eea | ||
|
1557d16562 | ||
|
7d698cc494 | ||
|
7550abbb7f | ||
|
ef8f618027 | ||
|
17170ba76d | ||
|
05ceef2350 | ||
|
0d26320cf3 | ||
|
6a0313ac26 | ||
|
ed8efcf86d | ||
|
b7611d5037 | ||
|
c6f6172fd5 | ||
|
4a666c2010 | ||
|
919caaccb7 | ||
|
e7d5dc89f2 | ||
|
dbcbd8ee3c | ||
|
83b2149885 | ||
|
a625c2201a | ||
|
14ac397d5d | ||
|
64ac74cab6 | ||
|
97e3106848 | ||
|
e0c9ec54dd | ||
|
bc8092245c | ||
|
53a2bf9215 | ||
|
5fa44c594f | ||
|
8727976a1a | ||
|
976136a0b2 | ||
|
2e2b9962cd | ||
|
c3dee2bb66 | ||
|
4ebbb3c297 | ||
|
7090c99adf | ||
|
6e003b1e3f | ||
|
464af700eb | ||
|
65c1127b49 | ||
|
f2197611c7 | ||
|
1688c014cc | ||
|
729b4cdef3 | ||
|
826417bfc0 | ||
|
fad20756e3 | ||
|
cabfd78309 | ||
|
60326eded2 | ||
|
55b8b8477c | ||
|
48eb5112b5 | ||
|
31193b9cff | ||
|
28dfaa20f5 | ||
|
04df74f636 | ||
|
d8417f9f6e | ||
|
75ea142d01 | ||
|
b466628c0b | ||
|
18b5c3dccf | ||
|
0d8844dcb8 | ||
|
778dbe46d2 | ||
|
0469bd8ffa | ||
|
1dcee07eab | ||
|
62e6789ab2 | ||
|
a889b899e2 | ||
|
5f91fb4136 | ||
|
80ac73a21c | ||
|
52d7f7d277 | ||
|
5e2b843538 | ||
|
911b52a494 | ||
|
f9d8cf35f6 | ||
|
2a918718f1 | ||
|
d9dede476f | ||
|
896c1e6f1e | ||
|
a2adff94bb | ||
|
825563f34d | ||
|
1455a44a44 | ||
|
80fe2ea676 | ||
|
0714981288 | ||
|
c67f6ee872 | ||
|
d9db5395b3 | ||
|
a9c8f2f5b8 | ||
|
8ec7341fb2 | ||
|
2e6a1a53d7 | ||
|
28ca1f5345 | ||
|
2098b363ea | ||
|
f74c560be8 | ||
|
b73adf0dea | ||
|
0a9ad8f335 | ||
|
16e362cfc4 | ||
|
e27a754b70 | ||
|
99ca59baf8 | ||
|
dbb8cbac18 | ||
|
0853227ede | ||
|
538cdda78e | ||
|
bcc0fa5c81 | ||
|
2855de5f0f | ||
|
698d02122b | ||
|
be60c057dc | ||
|
92ca95641f | ||
|
4b682ea63e | ||
|
aa8aa6af75 | ||
|
49fe93fbb3 | ||
|
0f119e09a5 | ||
|
03b6fcdaf0 | ||
|
4859be084d | ||
|
932705706e | ||
|
e95c1e3f2c | ||
|
5b2e455d3b | ||
|
ffae9d84c5 | ||
|
92a3a96849 | ||
|
db4dce7312 | ||
|
02c9a99215 | ||
|
9b0e21f87f | ||
|
0ae07ae64d | ||
|
f284bc6af9 | ||
|
26759e126e | ||
|
70f32842e5 | ||
|
2d7b549e21 | ||
|
811257a0c8 | ||
|
628a48c788 | ||
|
1048a588c7 | ||
|
973f526bb4 | ||
|
a9df99b81c | ||
|
91d2b64850 | ||
|
387b94a6cf | ||
|
059990e05a | ||
|
b8679bbe04 | ||
|
b7442999df | ||
|
aac3ba61a5 | ||
|
8ed1208b42 | ||
|
d465e3f0c3 | ||
|
0320fbf6f4 | ||
|
0e2786e396 | ||
|
aa9c6e9f59 | ||
|
8dd69a1b05 | ||
|
4c9071964b | ||
|
86065dca4d | ||
|
fc86ef6c95 | ||
|
37d587d62b | ||
|
0f06e94d5d | ||
|
468e855207 | ||
|
c0c0c579ff | ||
|
a3f5a4cf58 | ||
|
8655677584 | ||
|
a10e100bd5 | ||
|
6a090c5df7 | ||
|
7cd210722d | ||
|
8747c0786e | ||
|
633da3bdb6 | ||
|
7abd3b4ddd | ||
|
35e6870e5c | ||
|
fede822fce | ||
|
7c76d36454 | ||
|
d3fdc3a00f | ||
|
eb0f21a984 | ||
|
8d99140d1b | ||
|
3c7d2e765a | ||
|
2f07ad8e8a | ||
|
c762ea975a | ||
|
fa2724360b | ||
|
02635e5924 | ||
|
b2ecd296ae | ||
|
c593564aca | ||
|
ff09695897 | ||
|
6ad8a06c73 | ||
|
b51f51c614 | ||
|
41227856f4 | ||
|
ce57b94908 | ||
|
f0db230c46 | ||
|
78767bf208 | ||
|
72e643998f | ||
|
3d45860dc2 | ||
|
8fa41f1ca1 | ||
|
cce294df86 | ||
|
65b0eff6d8 | ||
|
ddb8eb842d | ||
|
848bb6df43 | ||
|
d387534687 | ||
|
1c1aa729b1 | ||
|
65f035933b | ||
|
0c243d0d5d | ||
|
f442348e50 | ||
|
7bca9bc402 | ||
|
32cc2f6bd9 | ||
|
e1bfe13090 | ||
|
90fd0810db | ||
|
04c0a1c3e2 | ||
|
812219e8a0 | ||
|
c40ad11615 | ||
|
24a953ae64 | ||
|
f24b3f4589 | ||
|
a64840613f | ||
|
628c5bcc62 | ||
|
77099c777a | ||
|
f0441f08b8 | ||
|
b75cb53c4a | ||
|
6725262516 | ||
|
1a96b2cdc8 | ||
|
3f020c0b92 | ||
|
e1fa9073c2 | ||
|
3d42d60b7f | ||
|
e71d4f3235 | ||
|
888bd89ba7 | ||
|
fad5487266 | ||
|
ce6a9a6c38 | ||
|
6e5142ca3e | ||
|
545f0ca00e | ||
|
d430999047 | ||
|
7a183b4e8b | ||
|
0f205a854f | ||
|
bd57faa7bf | ||
|
3dc1f39d40 | ||
|
c1414e59c2 | ||
|
9e6a493172 | ||
|
3b57a35532 | ||
|
073a1f21bb | ||
|
9d629719cb | ||
|
cda4b534fa | ||
|
0edc82f030 | ||
|
e1f131db8e | ||
|
7a91cce869 | ||
|
b30e6c1c9e | ||
|
6631abc1cb | ||
|
f956802f29 | ||
|
d1d54dedac | ||
|
4d493cd05c | ||
|
86e85438d3 | ||
|
3b1df7fb00 | ||
|
57a6828a7a | ||
|
f0021c9cb9 | ||
|
2c3fcc6c08 | ||
|
9a2e24fa98 | ||
|
21b6e4c1f3 | ||
|
c438a2a265 | ||
|
94af0194dd | ||
|
5f9c2f63ff | ||
|
c678676e41 | ||
|
6282fc8dc1 | ||
|
edc7441800 | ||
|
3e128552d9 | ||
|
602b058b9e | ||
|
cc7604d116 | ||
|
bbf06d516a | ||
|
39cbf1c221 | ||
|
ac6125cbea | ||
|
e50f15e360 | ||
|
24e8d01dc9 | ||
|
0db06def9b | ||
|
4f5f5f0103 | ||
|
edb5e72605 | ||
|
0d3ce58b6b | ||
|
a258358b6c | ||
|
bcc4213edc | ||
|
b4622eb894 | ||
|
e72f8dfd7e | ||
|
8a01bbc422 | ||
|
c8e7cca6ed | ||
|
9c574b493c | ||
|
5d643bb7ee | ||
|
5be2795ca1 | ||
|
fdeaf1d9f8 | ||
|
344929e067 | ||
|
3668b29520 | ||
|
6098704145 | ||
|
cb1ac2a3ed | ||
|
e9a093451e | ||
|
658db40df9 | ||
|
cf17eb0f43 | ||
|
0c3aede09e | ||
|
af4c25c475 | ||
|
103ba24df2 | ||
|
6a7ef59629 | ||
|
498eddedc5 | ||
|
83b6dd0cd6 | ||
|
67dfde765f | ||
|
b807867f95 | ||
|
250f096144 | ||
|
0c598f53c1 | ||
|
5520b0022f | ||
|
dbac9f4954 | ||
|
af24ea558a | ||
|
8e058135e2 | ||
|
b0c3d59681 | ||
|
42fa91a57d | ||
|
cac69cb580 | ||
|
73d2a470ee | ||
|
b5172e3afa | ||
|
009ab77d3e | ||
|
bc1059bc1e | ||
|
8019a074cf | ||
|
558bf2ed07 | ||
|
916d12f9fa | ||
|
fe7b46579c | ||
|
6a24bac9c4 | ||
|
82223aec6c | ||
|
ec67d32bd4 | ||
|
ea8638b944 | ||
|
fdb8a4cd65 | ||
|
5d78311612 | ||
|
daa83afe2b | ||
|
6df31120a1 | ||
|
bf2b260429 | ||
|
0acb394ac4 | ||
|
76ef37e72d | ||
|
4b74c90cdb | ||
|
cf795a6f93 | ||
|
0064f1f84c | ||
|
e9a501d447 | ||
|
5f2d3f27de | ||
|
c018743729 | ||
|
6567fa1ebe | ||
|
a4e5a4d566 | ||
|
57952949fe | ||
|
ff8136b883 | ||
|
465cf08c63 | ||
|
fb2a7d787a | ||
|
5607b716ba | ||
|
876a6bdd4c | ||
|
723857bf8a | ||
|
a39eaa7fb5 | ||
|
eeb100f87d | ||
|
15ee180f0e | ||
|
2a4947b28b | ||
|
8cb2cf375b | ||
|
377bcb00fb | ||
|
0642126720 | ||
|
243ae75256 | ||
|
c5768a5f32 | ||
|
77377e2784 | ||
|
42843d9b62 | ||
|
92e7291ad7 | ||
|
f90d89458c | ||
|
32725dae5b | ||
|
4cfb262faa | ||
|
703dc26853 | ||
|
82edc37238 | ||
|
6d195dc60c | ||
|
9aceaaed4c | ||
|
17a3dbc159 | ||
|
d1c70328f8 | ||
|
7929ee4879 | ||
|
c1f143124d | ||
|
04759d63ef |
3
.gitignore
vendored
@@ -29,3 +29,6 @@ CMakeLists.txt
|
||||
.idea
|
||||
.browse.VC.db*
|
||||
*.stackdump
|
||||
util/Win_Check_Output.txt
|
||||
.vscode
|
||||
.stfolder
|
||||
|
13
.travis.yml
@@ -2,23 +2,28 @@ os: linux
|
||||
dist: trusty
|
||||
sudo: required
|
||||
language: c
|
||||
compiler: avr-gcc
|
||||
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=
|
||||
matrix:
|
||||
- TARGET=all-keyboards AUTOGEN=true
|
||||
- TARGET=test AUTOGEN=false
|
||||
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 $TARGET AUTOGEN=$AUTOGEN
|
||||
- 'if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then make $TARGET AUTOGEN=$AUTOGEN; fi'
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- avr-libc
|
||||
- gcc-avr
|
||||
- dfu-programmer
|
||||
- pandoc
|
||||
- gcc-arm-none-eabi
|
||||
|
@@ -21,8 +21,9 @@ 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} keymap=${keymap}
|
||||
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}
|
||||
|
99
Makefile
@@ -16,10 +16,10 @@ ifdef SILENT
|
||||
endif
|
||||
|
||||
# We need to make sure that silent is always turned off at the top level
|
||||
# Otherwise the [OK], [ERROR] and [WARN] messags won't be displayed correctly
|
||||
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
|
||||
override SILENT := false
|
||||
|
||||
ON_ERROR := error_occured=1
|
||||
ON_ERROR := error_occurred=1
|
||||
|
||||
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
|
||||
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
|
||||
@@ -32,29 +32,31 @@ 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))
|
||||
TEST_DIR := $(ROOT_DIR)/.build/test
|
||||
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
|
||||
# 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 beome the new head
|
||||
# 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
|
||||
# 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
|
||||
# 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.
|
||||
# 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))
|
||||
@@ -82,7 +84,7 @@ endif
|
||||
# Only consider folders with makefiles, to prevent errors in case there are extra folders
|
||||
KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile)))
|
||||
|
||||
#Compability with the old make variables, anything you specify directly on the command line
|
||||
#Compatibility with the old make variables, anything you specify directly on the command line
|
||||
# always overrides the detected folders
|
||||
ifdef keyboard
|
||||
KEYBOARD := $(keyboard)
|
||||
@@ -104,12 +106,12 @@ endif
|
||||
#$(info Keyboards: $(KEYBOARDS))
|
||||
|
||||
|
||||
# Set the default goal depening on where we are running make from
|
||||
# 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
|
||||
# Inside a keymap folder, just build the keymap, with the
|
||||
# default subproject
|
||||
.DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
|
||||
else
|
||||
@@ -161,24 +163,24 @@ 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
|
||||
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 checed
|
||||
# It works by always removing the currently matched item from the list
|
||||
# $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
|
||||
# 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 recursivel
|
||||
# Save the best match so far and call itself recursively
|
||||
BEST_MATCH := $$(MATCHED_ITEM)
|
||||
BEST_MATCH_RULE := $$(RULE)
|
||||
RULE_FOUND := false
|
||||
@@ -268,7 +270,7 @@ define PARSE_KEYBOARD
|
||||
$$(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
|
||||
else
|
||||
$$(eval $$(call PARSE_SUBPROJECT,))
|
||||
endif
|
||||
endef
|
||||
@@ -283,7 +285,7 @@ endef
|
||||
# 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
|
||||
# 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),)
|
||||
@@ -302,7 +304,7 @@ define PARSE_SUBPROJECT
|
||||
endif
|
||||
endif
|
||||
# The special allsp is handled later
|
||||
ifneq ($$(CURRENT_SP),allsp)
|
||||
ifneq ($$(CURRENT_SP),allsp)
|
||||
# get a list of all keymaps
|
||||
KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
|
||||
ifneq ($$(CURRENT_SP),)
|
||||
@@ -335,13 +337,13 @@ define PARSE_SUBPROJECT
|
||||
$$(eval $$(call PARSE_ALL_KEYMAPS))
|
||||
endif
|
||||
else
|
||||
# As earlier mentione,d when allsb is specified, we call our self recursively
|
||||
# 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,
|
||||
# If we want to parse all subprojects, but the keyboard doesn't have any,
|
||||
# then use defaultsp instead
|
||||
define PARSE_ALL_SUBPROJECTS
|
||||
ifeq ($$(SUBPROJECTS),)
|
||||
@@ -401,11 +403,11 @@ define BUILD
|
||||
printf "$$(MAKE_MSG)\n\n"; \
|
||||
$$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; \
|
||||
if [ $$$$? -gt 0 ]; \
|
||||
then error_occured=1; \
|
||||
then error_occurred=1; \
|
||||
fi;
|
||||
endef
|
||||
|
||||
# Just parse all the keymaps for a specifc keyboard
|
||||
# Just parse all the keymaps for a specific keyboard
|
||||
define PARSE_ALL_KEYMAPS
|
||||
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
|
||||
endef
|
||||
@@ -426,7 +428,7 @@ define BUILD_TEST
|
||||
printf "$$(TEST_MSG)\n"; \
|
||||
$$(TEST_EXECUTABLE); \
|
||||
if [ $$$$? -gt 0 ]; \
|
||||
then error_occured=1; \
|
||||
then error_occurred=1; \
|
||||
fi; \
|
||||
printf "\n";
|
||||
endif
|
||||
@@ -446,7 +448,7 @@ 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 overriden by specifying silent=false
|
||||
# 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
|
||||
@@ -460,20 +462,34 @@ endef
|
||||
|
||||
include $(ROOT_DIR)/message.mk
|
||||
|
||||
RUN_COMMAND = \
|
||||
$(COMMAND_$(SILENT_MODE)_$(COMMAND))
|
||||
# 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
|
||||
$(SUBPROJECTS): %: %-allkm
|
||||
|
||||
# Let's match everything, we handle all the rule parsing ourselves
|
||||
.PHONY: %
|
||||
%:
|
||||
%:
|
||||
# Check if we have the CMP tool installed
|
||||
cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
||||
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 \
|
||||
@@ -481,23 +497,24 @@ $(SUBPROJECTS): %: %-allkm
|
||||
*) 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
|
||||
+error_occured=0; \
|
||||
$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \
|
||||
if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\
|
||||
$(foreach TEST,$(TESTS),$($(TEST)_COMMAND)) \
|
||||
if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\
|
||||
$(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 compability with the old syntax
|
||||
# Define some shortcuts, mostly for compatibility with the old syntax
|
||||
.PHONY: all-keyboards
|
||||
all-keyboards: allkb-allsp-allkm
|
||||
|
||||
@@ -511,9 +528,13 @@ test: test-all
|
||||
test-clean: test-all-clean
|
||||
|
||||
# Generate the version.h file
|
||||
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
||||
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
|
||||
include $(ROOT_DIR)/testlist.mk
|
||||
|
@@ -131,6 +131,14 @@ 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
|
||||
@@ -153,6 +161,11 @@ ifeq ($(strip $(UCIS_ENABLE)), yes)
|
||||
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
|
||||
@@ -169,12 +182,26 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||
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
|
||||
|
||||
@@ -186,6 +213,7 @@ endif
|
||||
VPATH += $(KEYBOARD_PATH)
|
||||
VPATH += $(COMMON_VPATH)
|
||||
|
||||
include $(TMK_PATH)/protocol.mk
|
||||
|
||||
include $(TMK_PATH)/common.mk
|
||||
SRC += $(TMK_COMMON_SRC)
|
||||
@@ -193,7 +221,11 @@ 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
|
||||
|
||||
|
@@ -23,4 +23,5 @@ 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)
|
@@ -6,7 +6,7 @@
|
||||
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.
|
||||
4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/qmk/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
|
||||
5. Double-click on the 1-setup-path-win batch script to run it. You'll need to accept a 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".
|
||||
@@ -38,7 +38,7 @@ Debian/Ubuntu example:
|
||||
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.
|
||||
1. If you haven't already, obtain this repository ([https://github.com/qmk/qmk_firmware](https://github.com/qmk/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 `keyboards/`. For example, if you're building for a Planck, run `cd keyboards/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. More information about the `make` command can be found below.
|
||||
|
@@ -234,7 +234,7 @@ If you did everything else right. This part should be a snap! Grab the latest so
|
||||
###Build Planck and Load the Firmware
|
||||
```
|
||||
$ cd ~/src
|
||||
$ git clone https://github.com/jackhumbert/qmk_firmware.git
|
||||
$ git clone https://github.com/qmk/qmk_firmware.git
|
||||
$ cd qmk_firmware/keyboards/planck
|
||||
$ make
|
||||
```
|
||||
|
@@ -183,7 +183,7 @@ As you move along, be sure that the Teensy is staying in place - recutting and s
|
||||
|
||||
From here, you should have a working keyboard with the correct firmware. Before we attach the Teensy permanently to the keyboard, let's quickly get some firmware loaded onto the Teensy so we can test each keyswitch.
|
||||
|
||||
To start out, download [the firmware](https://github.com/jackhumbert/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/).
|
||||
To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/).
|
||||
|
||||
The first thing we're going to do is create a new project using the script in the root directory of the firmware. In your terminal, run this command with `<project_name>` replaced by the name of your project - it'll need to be different from any other project in the `keyboards/` folder:
|
||||
|
||||
@@ -276,7 +276,7 @@ This can be accomplished by using the following `keymaps` definition:
|
||||
),
|
||||
};
|
||||
|
||||
Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [tmk_code/doc/keycode.txt](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt) - there are also a lot of aliases to condense your keymap file.
|
||||
Note that the layout of the keycodes is similar to the physical layout of our keyboard - this make it much easier to see what's going on. A lot of the keycodes should be fairly obvious, but for a full list of them, check out [tmk_code/doc/keycode.txt](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/doc/keycode.txt) - there are also a lot of aliases to condense your keymap file.
|
||||
|
||||
It's also important to use the `KEYMAP` function we defined earlier - this is what allows the firmware to associate our intended readable keymap with the actual wiring.
|
||||
|
||||
@@ -306,7 +306,7 @@ If you've done all of these things, keep in mind that sometimes you might have h
|
||||
|
||||
Now that you have a working board, it's time to get things in their permanent positions. I've often used liberal amounts of hot glue to secure and insulate things, so if that's your style, start spreading that stuff like butter. Otherwise, double-sided tape is always an elegant solution, and electrical tape is a distant second. Due to the nature of these builds, a lot of this part is up to you and how you planned (or didn't plan) things out.
|
||||
|
||||
There are a lot of possibilities inside the firmware - check out the [readme](https://github.com/jackhumbert/qmk_firmware/blob/master/readme.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)
|
||||
There are a lot of possibilities inside the firmware - check out the [readme](https://github.com/qmk/qmk_firmware/blob/master/readme.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)
|
||||
|
||||
## Trouble-shooting compiling
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
### Windows
|
||||
1. 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**.
|
||||
2. 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.
|
||||
3. 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.
|
||||
3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/qmk/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
|
||||
4. 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.
|
||||
5. 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!
|
||||
|
||||
@@ -32,7 +32,7 @@ Note that, since it will be directly accessing USB hardware, the
|
||||
`dfu-programmer` program needs to be run as root.
|
||||
|
||||
## Verify Your Installation
|
||||
1. Clone the following repository: https://github.com/jackhumbert/qmk_firmware
|
||||
1. Clone the following repository: https://github.com/qmk/qmk_firmware
|
||||
2. Open a Terminal and `cd` into `qmk_firmware/keyboards/planck`
|
||||
3. Run `make`. This should output a lot of information about the build process.
|
||||
|
||||
@@ -80,7 +80,7 @@ when trying to 'make dfu' on Windows you need to copy the dfu-programmer.exe to
|
||||
|
||||
### Keymap
|
||||
|
||||
Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/qmk_firmware/blob/master/quantum/keymap_common.h).
|
||||
Unlike the other keymaps, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_common.h).
|
||||
|
||||
You can use modifiers with keycodes like this:
|
||||
|
||||
|
@@ -6,7 +6,8 @@ This project includes a Vagrantfile that will allow you to build a new firmware
|
||||
|
||||
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.
|
||||
*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. **Alternately, you can try running the following command:** `vagrant plugin install vagrant-vbguest`
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
@@ -84,7 +84,7 @@ KC_PAUSE KC_PAUS 48 Keyboard Pause1
|
||||
KC_INSERT KC_INS 49 Keyboard Insert1
|
||||
KC_HOME 4A Keyboard Home1
|
||||
KC_PGUP 4B Keyboard PageUp1
|
||||
KC_DELETE KC_DELETE 4C Keyboard Delete Forward
|
||||
KC_DELETE KC_DEL 4C Keyboard Delete Forward
|
||||
KC_END 4D Keyboard End1
|
||||
KC_PGDOWN KC_PGDN 4E Keyboard PageDown1
|
||||
KC_RIGHT KC_RGHT 4F Keyboard RightArrow1
|
||||
|
@@ -67,7 +67,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define RGB_DI_PIN E2
|
||||
#define RGBLIGHT_TIMER
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 8 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
|
30
keyboards/amjpad/amjpad.c
Normal file
@@ -0,0 +1,30 @@
|
||||
#include "amjpad.h"
|
||||
#include "led.h"
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
matrix_init_user();
|
||||
led_init_ports();
|
||||
};
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
matrix_scan_user();
|
||||
};
|
||||
|
||||
void led_init_ports(void) {
|
||||
// * Set our LED pins as output
|
||||
DDRD |= (1<<6);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
|
||||
// Turn numlock on
|
||||
PORTD &= ~(1<<6);
|
||||
} else {
|
||||
// Turn numlock off
|
||||
PORTD |= (1<<6);
|
||||
}
|
||||
}
|
46
keyboards/amjpad/amjpad.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#ifndef AMJPAD_H
|
||||
#define ADMJPAD_H
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
// readability
|
||||
#define XXX KC_NO
|
||||
|
||||
/* AMJPAD matrix layout
|
||||
* ,-------------------.
|
||||
* | 00 | 01 | 02 | 03 |
|
||||
* |----|----|----|----|
|
||||
* | 10 | 11 | 12 | 13 |
|
||||
* |----|----|----|----|
|
||||
* | 20 | 21 | 22 | |
|
||||
* |----|----|----| 23 |
|
||||
* | 30 | 31 | 32 | |
|
||||
* |----|----|----|----|
|
||||
* | 40 | 41 | 42 | |
|
||||
* |----|----|----| 43 |
|
||||
* | 50 | 52 | |
|
||||
* `-------------------'
|
||||
*/
|
||||
// The first section contains all of the arguments
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KEYMAP( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, k13, \
|
||||
k20, k21, k22, k23, \
|
||||
k30, k31, k32, \
|
||||
k40, k41, k42, k43, \
|
||||
k50, k52 \
|
||||
) \
|
||||
{ \
|
||||
{k00, k01, k02, k03}, \
|
||||
{k10, k11, k12, k13}, \
|
||||
{k20, k21, k22, k23}, \
|
||||
{k30, k31, k32, XXX}, \
|
||||
{k40, k41, k42, k43}, \
|
||||
{k50, XXX, k52, XXX} \
|
||||
}
|
||||
|
||||
void matrix_init_user(void);
|
||||
void matrix_scan_user(void);
|
||||
|
||||
#endif
|
94
keyboards/amjpad/config.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
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 "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0003
|
||||
#define MANUFACTURER AMJ
|
||||
#define PRODUCT PAD
|
||||
#define DESCRIPTION QMK keyboard firmware for AMJ PAD
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 4
|
||||
|
||||
// ROWS: Top to bottom, COLS: Left to right
|
||||
|
||||
#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5, D0 }
|
||||
#define MATRIX_COL_PINS { F1, F0, E6, C7 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B6
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* 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
|
||||
|
||||
/* key combination for command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
/* Backlight configuration
|
||||
*/
|
||||
#define BACKLIGHT_LEVELS 4
|
||||
|
||||
/* Underlight configuration
|
||||
*/
|
||||
|
||||
#define RGB_DI_PIN E2
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 8 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#endif
|
101
keyboards/amjpad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,101 @@
|
||||
#include "amjpad.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#include "rgblight.h"
|
||||
#endif
|
||||
|
||||
// Used for SHIFT_ESC
|
||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _BL 0
|
||||
#define _FL 1
|
||||
|
||||
#define _______ KC_TRNS
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------.
|
||||
* |Esc |TAB |BS | = |
|
||||
* |----|----|----|----|
|
||||
* | NL | / | * | - |
|
||||
* |----|----|----|----|
|
||||
* | 7 | 8 | 9 | |
|
||||
* |----|----|----| + |
|
||||
* | 4 | 5 | 6 | |
|
||||
* |----|----|----|----|
|
||||
* | 1 | 2 | 3 | |
|
||||
* |----|----|----| En |
|
||||
* | 0 |./FN| |
|
||||
* `-------------------'
|
||||
*/
|
||||
|
||||
[_BL] = KEYMAP(
|
||||
KC_ESC,KC_TAB,KC_BSPC,KC_PEQL, \
|
||||
KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS, \
|
||||
KC_P4, KC_P5, KC_P6, \
|
||||
KC_P1, KC_P2, KC_P3, KC_PENT, \
|
||||
KC_P0, LT(_FL,KC_PDOT)),
|
||||
|
||||
/* Keymap _FL: Function Layer
|
||||
* ,-------------------.
|
||||
* |Esc |TAB |BS | = |
|
||||
* |----|----|----|----|
|
||||
* | NL | / | * | - |
|
||||
* |----|----|----|----|
|
||||
* | 7 | 8 | 9 | |
|
||||
* |----|----|----|RST |
|
||||
* | 4 | 5 | 6 | |
|
||||
* |----|----|----|----|
|
||||
* | 1 | 2 | 3 | |
|
||||
* |----|----|----| En |
|
||||
* | 0 |./FN| |
|
||||
* `-------------------'
|
||||
*/
|
||||
[_FL] = KEYMAP(
|
||||
|
||||
KC_ESC,KC_TAB,KC_BSPC,KC_PEQL, \
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
|
||||
KC_P7, KC_P8, KC_P9, RESET, \
|
||||
KC_P4, KC_P5, KC_P6, \
|
||||
KC_P1, KC_P2, KC_P3, KC_PENT, \
|
||||
KC_P0, LT(_FL,KC_PDOT)),
|
||||
};
|
||||
|
||||
enum function_id {
|
||||
SHIFT_ESC,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_FUNCTION(SHIFT_ESC),
|
||||
};
|
||||
|
||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||
static uint8_t shift_esc_shift_mask;
|
||||
switch (id) {
|
||||
case SHIFT_ESC:
|
||||
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
||||
if (record->event.pressed) {
|
||||
if (shift_esc_shift_mask) {
|
||||
add_key(KC_GRV);
|
||||
send_keyboard_report();
|
||||
} else {
|
||||
add_key(KC_ESC);
|
||||
send_keyboard_report();
|
||||
}
|
||||
} else {
|
||||
if (shift_esc_shift_mask) {
|
||||
del_key(KC_GRV);
|
||||
send_keyboard_report();
|
||||
} else {
|
||||
del_key(KC_ESC);
|
||||
send_keyboard_report();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
66
keyboards/amjpad/rules.mk
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
# 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 ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= no # 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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870)
|
||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
AUDIO_ENABLE ?= no
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
@@ -1,13 +1,120 @@
|
||||
arrow_pad keyboard firmware
|
||||
======================
|
||||
|
||||
## Keyboard Info
|
||||
|
||||
The ArrowPad is a wired conversion that can be made to any stand-alone keypad. It uses two main layers - a standard numpad, and a more advanced arrow cluster navigator.
|
||||
|
||||
The first 24-key ArrowPad was handwired, but the PCB was wired as listed below.
|
||||
|
||||
```
|
||||
<Chip Ref Des> pin <Pin #>
|
||||
<Keycap Name> (Silkscreen Name if different) - <Switch Pin #>
|
||||
|
||||
|
||||
Note:
|
||||
U2 pin 2 is the Num Lock LED and is active low.
|
||||
|
||||
U2 pin 1
|
||||
Clear (Num Lock) - 1
|
||||
Enter - 2
|
||||
Esc (ESC) - 2
|
||||
|
||||
|
||||
U2 pin 3
|
||||
- - 1
|
||||
|
||||
U2 pin 4
|
||||
7 - 2
|
||||
8 - 2
|
||||
9 - 2
|
||||
|
||||
U2 pin 5
|
||||
* - 2
|
||||
Delete (BACK SPACE) - 2
|
||||
|
||||
U2 pin 6
|
||||
1 - 2
|
||||
0 - 2
|
||||
. - 2
|
||||
, - 2
|
||||
|
||||
U2 pin 7
|
||||
4 - 2
|
||||
5 - 2
|
||||
6 - 2
|
||||
|
||||
U2 pin 8
|
||||
Tab - 2
|
||||
= (/) - 2
|
||||
|
||||
U2 pin 13
|
||||
Delete (BACK SPACE) - 1
|
||||
9 - 1
|
||||
6 - 1
|
||||
3 - 1
|
||||
. - 1
|
||||
|
||||
U2 pin 14
|
||||
Tab - 1
|
||||
8 - 1
|
||||
5 - 1
|
||||
2 - 1
|
||||
0 - 1
|
||||
|
||||
U2 pin 15
|
||||
Esc (ESC) - 1
|
||||
= (/) - 1
|
||||
/ (*) - 1
|
||||
7 - 1
|
||||
4 - 1
|
||||
1 - 1
|
||||
+ - 1
|
||||
|
||||
U2 pin 16
|
||||
Enter - 1
|
||||
* (<--) - 1
|
||||
, - 1
|
||||
|
||||
U2 pin 17
|
||||
Fn (#NAME?) - 1
|
||||
- - 2
|
||||
Clear (Num Lock) - 2
|
||||
|
||||
U2 pin 18
|
||||
Fn (#NAME?) - 2
|
||||
* (<--) - 2
|
||||
+ - 2
|
||||
3 - 2
|
||||
2 - 2
|
||||
```
|
||||
|
||||
More info can be found on [GeekHack](https://geekhack.org/index.php?topic=73632.msg1802497#msg1802497)
|
||||
|
||||
The second ArrowPad was a conversion from a 21-key Genovation keypad. It used a 2 row x 11 column matrix.
|
||||
|
||||
```
|
||||
#define KEYMAP( \
|
||||
KM_ESC, KM_TAB, KM_BSL, KM_ARR, \
|
||||
KM_NUM, KM_FSL, KM_AST, KM_MIN, \
|
||||
KM___7, KM___8, KM___9, ___PLS, \
|
||||
KM___4, KM___5, KM___6, KM_PLS, \
|
||||
KM___1, KM___2, KM___3, ___ENT, \
|
||||
KM___0, _____0, KM_DOT, KM_ENT \
|
||||
) { \
|
||||
{ KM_ESC, KM_TAB, KM_BSL, KM_ARR, KM___7, KM___8, KM___9, KM_PLS, KM___1, KM___2, KM___3, }, \
|
||||
{ KM_NUM, KM_FSL, KM_AST, KM_MIN, KM___4, KM___5, KM___6, KM_ENT, KC_NO, KM___0, KM_DOT, }, \
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Quantum MK Firmware
|
||||
|
||||
For the full Quantum feature list, see [the parent readme.md](/readme.md).
|
||||
|
||||
## Building
|
||||
|
||||
Download or clone the whole firmware and navigate to the keyboards/arrow_pad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
|
||||
Download or clone the whole firmware and navigate to the keyboards/arrow_pad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
|
||||
|
||||
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
||||
|
||||
@@ -20,7 +127,7 @@ Several version of keymap are available in advance but you are recommended to de
|
||||
To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
|
||||
|
||||
```
|
||||
$ make [default|jack|<name>]
|
||||
$ make [default|pad_21|pad_24|<name>]
|
||||
```
|
||||
|
||||
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
||||
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
|
@@ -150,10 +150,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
#ifndef NO_DEBUG
|
||||
# define NO_DEBUG
|
||||
#endif
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
// #ifndef NO_PRINT
|
||||
// # define NO_PRINT
|
||||
// #endif
|
||||
|
||||
/* Only print user print statements */
|
||||
#define USER_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
|
@@ -2,48 +2,59 @@
|
||||
#include "action_layer.h"
|
||||
#include "eeconfig.h"
|
||||
#include "led.h"
|
||||
#include "mousekey.h"
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#include "audio.h"
|
||||
#include "song_list.h"
|
||||
#endif
|
||||
|
||||
#define LAYER_QWERTY 0
|
||||
#define LAYER_COLEMAK 1
|
||||
#define LAYER_DVORAK 2
|
||||
#define LAYER_UPPER 3
|
||||
#define LAYER_LOWER 4
|
||||
#define LAYER_FUNCTION 5
|
||||
#define LAYER_MOUSE 6
|
||||
#define LAYER_ADJUST 7
|
||||
|
||||
#define MACRO_QWERTY 0
|
||||
#define MACRO_COLEMAK 1
|
||||
#define MACRO_DVORAK 2
|
||||
#define MACRO_UPPER 3
|
||||
#define MACRO_LOWER 4
|
||||
#define MACRO_FUNCTION 5
|
||||
#define MACRO_MOUSE 6
|
||||
#define MACRO_TIMBRE_1 7
|
||||
#define MACRO_TIMBRE_2 8
|
||||
#define MACRO_TIMBRE_3 9
|
||||
#define MACRO_TIMBRE_4 10
|
||||
#define MACRO_TEMPO_U 11
|
||||
#define MACRO_TEMPO_D 12
|
||||
#define MACRO_TONE_DEFAULT 13
|
||||
#define MACRO_MUSIC_TOGGLE 14
|
||||
#define MACRO_AUDIO_TOGGLE 16
|
||||
#define MACRO_INC_VOICE 18
|
||||
#define MACRO_DEC_VOICE 19
|
||||
#define MACRO_BACKLIGHT 20
|
||||
#define MACRO_BREATH_TOGGLE 21
|
||||
#define MACRO_BREATH_SPEED_INC 23
|
||||
#define MACRO_BREATH_SPEED_DEC 24
|
||||
#define MACRO_BREATH_DEFAULT 25
|
||||
enum keyboard_layers {
|
||||
LAYER_QWERTY = 0,
|
||||
LAYER_UPPER,
|
||||
LAYER_LOWER,
|
||||
LAYER_FUNCTION,
|
||||
LAYER_MOUSE,
|
||||
LAYER_ADJUST,
|
||||
};
|
||||
enum keyboard_macros {
|
||||
MACRO_QWERTY = 0,
|
||||
MACRO_UPPER,
|
||||
MACRO_LOWER,
|
||||
MACRO_FUNCTION,
|
||||
MACRO_MOUSE,
|
||||
MACRO_TIMBRE_1,
|
||||
MACRO_TIMBRE_2,
|
||||
MACRO_TIMBRE_3,
|
||||
MACRO_TIMBRE_4,
|
||||
MACRO_TEMPO_U,
|
||||
MACRO_TEMPO_D,
|
||||
MACRO_TONE_DEFAULT,
|
||||
MACRO_MUSIC_TOGGLE,
|
||||
MACRO_AUDIO_TOGGLE,
|
||||
MACRO_INC_VOICE,
|
||||
MACRO_DEC_VOICE,
|
||||
MACRO_BACKLIGHT,
|
||||
MACRO_BREATH_TOGGLE,
|
||||
MACRO_BREATH_SPEED_INC,
|
||||
MACRO_BREATH_SPEED_DEC,
|
||||
MACRO_BREATH_DEFAULT,
|
||||
MACRO_MOUSE_MOVE_UL,
|
||||
MACRO_MOUSE_MOVE_UR,
|
||||
MACRO_MOUSE_MOVE_DL,
|
||||
MACRO_MOUSE_MOVE_DR,
|
||||
MACRO_HELP_1,
|
||||
MACRO_HELP_2,
|
||||
MACRO_HELP_3,
|
||||
MACRO_HELP_4,
|
||||
MACRO_HELP_5,
|
||||
MACRO_HELP_6,
|
||||
MACRO_HELP_7,
|
||||
MACRO_HELP_8,
|
||||
MACRO_HELP_9,
|
||||
};
|
||||
|
||||
#define M_QWRTY M(MACRO_QWERTY)
|
||||
#define M_COLMK M(MACRO_COLEMAK)
|
||||
#define M_DVORK M(MACRO_DVORAK)
|
||||
#define M_UPPER M(MACRO_UPPER)
|
||||
#define M_LOWER M(MACRO_LOWER)
|
||||
#define M_FUNCT M(MACRO_FUNCTION)
|
||||
@@ -60,6 +71,19 @@
|
||||
#define M_BSPDU M(MACRO_BREATH_SPEED_INC)
|
||||
#define M_BSPDD M(MACRO_BREATH_SPEED_DEC)
|
||||
#define M_BDFLT M(MACRO_BREATH_DEFAULT)
|
||||
#define M_MS_UL M(MACRO_MOUSE_MOVE_UL)
|
||||
#define M_MS_UR M(MACRO_MOUSE_MOVE_UR)
|
||||
#define M_MS_DL M(MACRO_MOUSE_MOVE_DL)
|
||||
#define M_MS_DR M(MACRO_MOUSE_MOVE_DR)
|
||||
#define M_HELP1 M(MACRO_HELP_1)
|
||||
#define M_HELP2 M(MACRO_HELP_2)
|
||||
#define M_HELP3 M(MACRO_HELP_3)
|
||||
#define M_HELP4 M(MACRO_HELP_4)
|
||||
#define M_HELP5 M(MACRO_HELP_5)
|
||||
#define M_HELP6 M(MACRO_HELP_6)
|
||||
#define M_HELP7 M(MACRO_HELP_7)
|
||||
#define M_HELP8 M(MACRO_HELP_8)
|
||||
#define M_HELP9 M(MACRO_HELP_9)
|
||||
|
||||
|
||||
#define VC_UP M(MACRO_INC_VOICE)
|
||||
@@ -77,6 +101,7 @@
|
||||
#define SC_ACLS LALT(KC_F4)
|
||||
#define SC_CCLS LCTL(KC_F4)
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO
|
||||
#define OS_SHFT KC_FN0
|
||||
|
||||
#define _______ KC_TRNS
|
||||
@@ -86,169 +111,126 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* QWERTY
|
||||
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
|
||||
* | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
|
||||
* | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
|
||||
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
|
||||
* | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
|
||||
* '--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_QWERTY] = { // QWERTY
|
||||
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
|
||||
{ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
|
||||
{ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
|
||||
{ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
|
||||
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
|
||||
},
|
||||
|
||||
/* COLEMAK
|
||||
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||
* | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
|
||||
* | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
|
||||
* | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
|
||||
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
|
||||
* | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
|
||||
* '--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_COLEMAK] = { // COLEMAK
|
||||
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC },
|
||||
{ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
|
||||
{ KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
|
||||
{ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
|
||||
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
|
||||
},
|
||||
|
||||
/* DVORAK
|
||||
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||
* | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
|
||||
* | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
|
||||
* | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN |
|
||||
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
|
||||
* | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
|
||||
* '--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_DVORAK] = { // DVORAK
|
||||
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC },
|
||||
{ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL },
|
||||
{ KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP },
|
||||
{ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
|
||||
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
|
||||
},
|
||||
|
||||
/* UPPER
|
||||
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
|
||||
* | PRINT | BR TOG | BR SP+ | BR SP- | BR RST | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||
* | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
|
||||
* | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
|
||||
* | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END |
|
||||
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
|
||||
* | | | | | | 0 | | RALT | . | ENTER | | | | |
|
||||
* '--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_UPPER] = { // UPPER
|
||||
{ KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS },
|
||||
{ _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS },
|
||||
{ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME },
|
||||
{ _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END },
|
||||
{ _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ },
|
||||
},
|
||||
|
||||
/* LOWER
|
||||
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||
* | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
|
||||
* | | ^ | * | + | - | / | \ | _ | ' | " | ` | | XXXXXX . | HOME |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
|
||||
* | | | | & | ! | ~ | ; | : | = | < | > | ? | XXXXXX . | | END |
|
||||
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* '--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_LOWER] = { // LOWER
|
||||
{ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ },
|
||||
{ _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS },
|
||||
{ _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME },
|
||||
{ _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END },
|
||||
{ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ },
|
||||
},
|
||||
|
||||
/* FUNCTION
|
||||
* .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
|
||||
* | NUM LK | | | | | | | | | | | | | XXXXXX . |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
|
||||
* | SCR LK | F13 | F14 | F15 | F16 | | | | | | | | | | |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
|
||||
* | CAP LK | F17 | F18 | F19 | F20 | | | | | | | | XXXXXX . | |
|
||||
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
|
||||
* | | F21 | F22 | F23 | F24 | | | | | | | XXXXXX . | VOL UP | MUTE |
|
||||
* |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
|
||||
* | | | | | | PLAY/PAUSE | | | | | | PTRACK | VOL DN | NTRACK |
|
||||
* '--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_FUNCTION] = { // FUNCTION
|
||||
{ KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX },
|
||||
{ KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXX },
|
||||
{ _______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_VOLU, KC_MUTE },
|
||||
{ _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT },
|
||||
},
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
|
||||
[LAYER_MOUSE] = { // MOUSE
|
||||
{ _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX },
|
||||
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U },
|
||||
{ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D },
|
||||
{ _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
|
||||
},
|
||||
|
||||
#endif
|
||||
|
||||
[LAYER_ADJUST] = { // ADJUST
|
||||
{ _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ },
|
||||
{ _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
|
||||
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ },
|
||||
{ _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ },
|
||||
{ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ },
|
||||
},
|
||||
|
||||
|
||||
/*
|
||||
[LAYER_EMPTY] = { // LAYER
|
||||
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ },
|
||||
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
|
||||
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ },
|
||||
{ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ },
|
||||
{ _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ },
|
||||
},
|
||||
/* LAYER = LAYER_QWERTY
|
||||
.--------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSP . BACKSP |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| CAP LK | A | S | D | F | G | H | J | K | L | ; | ' | ENTER . ENTER | PG UP |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT . RSHIFT | UP | PG DN |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| LCTRL | LWIN | FN | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT |
|
||||
'--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[LAYER_QWERTY] = {
|
||||
{ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC },
|
||||
{ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
|
||||
{ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_PGUP },
|
||||
{ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_RSFT, KC_UP , KC_PGDN },
|
||||
{ KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_RALT, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }
|
||||
},
|
||||
/* LAYER = LAYER_UPPER
|
||||
.--------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | KP / | KP * | KP - | XXXXXX | XXXXXX | ______ . ______ |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| PAUSE | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | ______ | ______ | ______ | INS |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | F5 | F6 | F7 | F8 | CAP LK | KP * | KP 4 | KP 5 | KP 6 | KP + | ______ | ______ . ______ | HOME |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP ENT | ______ . ______ | ______ | END |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP ENT | ______ | ______ | ______ | ______ |
|
||||
'--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_UPPER] = {
|
||||
{ KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, _______, _______ },
|
||||
{ KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS },
|
||||
{ _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, KC_HOME },
|
||||
{ _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, KC_END },
|
||||
{ _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }
|
||||
},
|
||||
/* LAYER = LAYER_LOWER
|
||||
.--------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| PRINT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | ______ . ______ |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | ______ | ______ | ______ | INS |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | ______ | ______ . ______ | HOME |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ . ______ | ______ | END |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | ______ | ______ | ______ | ______ |
|
||||
'--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_LOWER] = {
|
||||
{ KC_PSCR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______ },
|
||||
{ _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, KC_INS },
|
||||
{ _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, KC_HOME },
|
||||
{ _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, KC_END },
|
||||
{ _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, _______, _______, _______, _______ }
|
||||
},
|
||||
/* LAYER = LAYER_FUNCTION
|
||||
.--------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | F13 | F14 | F15 | F16 | NUM LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | F17 | F18 | F19 | F20 | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | F21 | F22 | F23 | F24 | CAP LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ______ . ______ | VOL UP | MUTE |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | ______ | FN | ______ | ______ | PLAY . PLAY | ______ | ______ | ______ | ______ | ______ | PREV | VOL DN | NEXT |
|
||||
'--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_FUNCTION] = {
|
||||
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_VOLU, KC_MUTE },
|
||||
{ _______, _______, M_FUNCT, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }
|
||||
},
|
||||
/* LAYER = LAYER_MOUSE
|
||||
.--------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| ESC | MS AC0 | MS AC1 | MS AC2 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS UL | MS U | MS UR | XXXXXX | XXXXXX | XXXXXX | MS WHL | MS WHR |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | MS BT5 | MS BT4 | MS BT3 | MS BT2 | XXXXXX | XXXXXX | MS L | XXXXXX | MS R | XXXXXX | XXXXXX | XXXXXX . XXXXXX | MS WHU |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS DL | MS D | MS DR | XXXXXX | ______ . ______ | MS U | MS WHD |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| ______ | ______ | ______ | ______ | ______ | MS BT1 . MS BT1 | ______ | ______ | ______ | ______ | ______ | MS L | MS D | MS R |
|
||||
'--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_MOUSE] = {
|
||||
{ KC_ESC , KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_R },
|
||||
{ XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U },
|
||||
{ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_DL, KC_MS_D, M_MS_DR, XXXXXXX, _______, _______, KC_MS_U, KC_WH_D },
|
||||
{ _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }
|
||||
},
|
||||
/* LAYER = LAYER_ADJUST
|
||||
.--------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| XXXXXX | HELP 1 | HELP 2 | HELP 3 | HELP 4 | HELP 5 | HELP 6 | HELP 7 | HELP 8 | HELP 9 | XXXXXX | MUSIC | AUDIO | XXXXXX . XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | VOICE+ | XXXXXX |
|
||||
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
|
||||
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | TEMPO- | VOICE- | TEMPO+ |
|
||||
'--------------------------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_ADJUST] = {
|
||||
{ XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, XXXXXXX, MU_TOG , AU_TOG , XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
|
||||
{ XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX },
|
||||
{ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP }
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
@@ -290,6 +272,69 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
switch(id)
|
||||
{
|
||||
|
||||
case MACRO_HELP_1:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("1");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_2:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("2");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_3:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("3");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_4:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("4");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_5:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("5");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_6:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("6");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_7:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("7");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_8:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("8");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_HELP_9:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
uprintf("9");
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_BREATH_TOGGLE:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
@@ -322,29 +367,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
if (record->event.pressed)
|
||||
{
|
||||
persistant_default_layer_set(1UL<<LAYER_QWERTY);
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
|
||||
#endif /* AUDIO_ENABLE */
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_COLEMAK:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
persistant_default_layer_set(1UL<<LAYER_COLEMAK);
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
|
||||
#endif /* AUDIO_ENABLE */
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_DVORAK:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
persistant_default_layer_set(1UL<<LAYER_DVORAK);
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
|
||||
#endif /* AUDIO_ENABLE */
|
||||
}
|
||||
break;
|
||||
|
||||
|
80
keyboards/atreus/keymaps/alphadox/config.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
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 "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Arbitrary Definitions
|
||||
#define PRODUCT Planckeus
|
||||
#define DESCRIPTION q.m.k. keyboard firmware for Planckeus
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 11
|
||||
|
||||
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
|
||||
#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, F7, B0, B1, B2, B3, B7 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
//#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* 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
|
||||
|
||||
/* key combination for command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#endif
|
45
keyboards/atreus/keymaps/alphadox/keymap.c
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "atreus.h"
|
||||
|
||||
#define BASE 0
|
||||
#define SYMB 1
|
||||
#define ETC 2
|
||||
|
||||
enum macro_id {
|
||||
TEENSY,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BASE] = KEYMAP(
|
||||
KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_SCLN,
|
||||
LT(ETC,KC_A), KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H,
|
||||
SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH),
|
||||
KC_GRV, KC_DEL, KC_LALT, GUI_T(KC_TAB), LT(SYMB,KC_BSPC), CTL_T(KC_ESC), SFT_T(KC_ENT), LT(SYMB,KC_SPC), GUI_T(KC_LEFT), KC_DOWN, KC_UP, LCAG_T(KC_RGHT)
|
||||
),
|
||||
|
||||
[SYMB] = KEYMAP(
|
||||
KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_EQL, KC_7, KC_8, KC_9, KC_PLUS,
|
||||
KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BSLS, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
|
||||
KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_ASTR, KC_UNDS, KC_1, KC_2, KC_3, KC_DQUO,
|
||||
KC_TILD, KC_AMPR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_NO, KC_DOT, KC_TRNS
|
||||
),
|
||||
|
||||
[ETC] = KEYMAP(
|
||||
RESET, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_HOME,
|
||||
LT(ETC,KC_A), KC_NO, KC_NO, KC_NO, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_END,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_INS,
|
||||
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||
switch(id) {
|
||||
case TEENSY:
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
96
keyboards/atreus/keymaps/erlandsona/config.h
Normal file
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
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 "config_common.h"
|
||||
|
||||
|
||||
/* Make Overloaded Keys switch faster */
|
||||
#define TAPPING_TERM 150
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Technomancy
|
||||
#define PRODUCT Atreus
|
||||
#define DESCRIPTION q.m.k. keyboard firmware for Atreus
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 11
|
||||
|
||||
// Change this to how you wired your keyboard
|
||||
// COLS: Left to right, ROWS: Top to bottom
|
||||
#if defined(ATREUS_ASTAR)
|
||||
# define MATRIX_ROW_PINS { D0, D1, D3, D2 }
|
||||
#if defined(PCBDOWN)
|
||||
# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 }
|
||||
#else
|
||||
# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
|
||||
#endif
|
||||
# define UNUSED_PINS
|
||||
#elif defined(ATREUS_TEENSY2)
|
||||
# define MATRIX_ROW_PINS { D0, D1, D2, D3 }
|
||||
# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 }
|
||||
# define UNUSED_PINS
|
||||
#endif
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
//#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* 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
|
||||
|
||||
/* key combination for command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#endif
|
61
keyboards/atreus/keymaps/erlandsona/keymap.c
Normal file
@@ -0,0 +1,61 @@
|
||||
// this is the style you want to emulate.
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include "atreus.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define BASE 0
|
||||
#define NUMS 1
|
||||
#define MOUS 2
|
||||
|
||||
// Some quick aliases, just to make it look pretty
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[BASE] = KEYMAP( /* Qwerty */
|
||||
KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
|
||||
KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN ,
|
||||
SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT),
|
||||
KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS ),
|
||||
|
||||
[NUMS] = KEYMAP( /* Numbers / Arrows / Symbols */
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC,
|
||||
KC_TAB , KC_5 , KC_6 , KC_7 , KC_8 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC,
|
||||
_______, KC_9 , KC_0 , KC_DOT , KC_COMM, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______,
|
||||
_______, _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[MOUS] = KEYMAP( /* Mouse and Media Keys */
|
||||
KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4,
|
||||
KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3,
|
||||
KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_R, KC_WH_U, KC_WH_D, KC_WH_L, KC_F2,
|
||||
_______, _______ , _______, _______, _______, _______, _______, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1)
|
||||
};
|
||||
|
||||
|
||||
// I prefer this layer switching strategy to the TG and MO functions.
|
||||
// so that I can get out of mouse mode just by tapping/holding my base layer FN key.
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[BASE] = ACTION_LAYER_OFF(2, 1), // switch back to layer 0
|
||||
[NUMS] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
|
||||
[MOUS] = ACTION_LAYER_ON(2, 1) // switch to layer 2
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
66
keyboards/atreus/keymaps/jeremy/keymap.c
Normal file
@@ -0,0 +1,66 @@
|
||||
// This is the personal keymap of Jeremy Cowgar (@jcowgar). It is written for the programmer.
|
||||
|
||||
#include "atreus.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_colemak.h"
|
||||
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
#define ALPH 0
|
||||
#define NUMS 1
|
||||
#define CURS 2
|
||||
#define SYMB 3
|
||||
#define FKEY 4
|
||||
|
||||
// Some handy macros to keep the keymaps clean and easier to maintain
|
||||
#define KM_SAVE LGUI(CM_S)
|
||||
#define KM_CLSE LGUI(CM_W)
|
||||
#define KM_OPEN LGUI(CM_O)
|
||||
|
||||
#define KM_COPY LGUI(KC_C)
|
||||
#define KM_CUT LGUI(KC_X)
|
||||
#define KM_PAST LGUI(KC_V)
|
||||
#define KM_UNDO LGUI(KC_Z)
|
||||
#define KM_REDO LGUI(LSFT(KC_Z))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[ALPH] = {
|
||||
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P},
|
||||
{KC_A, LT(NUMS, KC_S), LT(FKEY, KC_D), KC_F, KC_G, KC_TRNS, KC_H, KC_J, LT(CURS, KC_K), LT(SYMB, KC_L), KC_SCLN},
|
||||
{KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
|
||||
{KC_LCTL, KC_ESC, KC_NO, KC_LSFT, KC_SPC, KC_LGUI, KC_ENT, KC_RSFT, KC_NO, KC_ESC, KC_RCTL}
|
||||
},
|
||||
[NUMS] = {
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_ASTR, KC_SLSH, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_SLSH},
|
||||
{KC_TRNS, KC_TRNS, KC_EQL, KC_PLUS, KC_MINS, KC_TRNS, KC_LPRN, KC_4, KC_5, KC_6, KC_ASTR},
|
||||
{KC_TRNS, KC_TRNS, KC_DOT, KC_COMM, CM_SCLN, KC_TRNS, KC_RPRN, KC_1, KC_2, KC_3, KC_MINS},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_EQL, KC_PLUS}
|
||||
},
|
||||
[CURS] = {
|
||||
{KC_TRNS, KC_BSPC, KC_UP, KC_DELT, KC_PGUP, KC_TRNS, KC_TRNS, KM_SAVE, KC_TRNS, KM_OPEN, KC_TRNS},
|
||||
{KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KM_UNDO, KC_LALT, KC_TRNS, KC_LGUI, KC_TRNS},
|
||||
{KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_MPLY, KM_COPY, KM_REDO, KM_CLSE, KC_TRNS, KC_TRNS, KC_TRNS},
|
||||
{KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TAB, KM_CUT, KM_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
|
||||
},
|
||||
[SYMB] = {
|
||||
{KC_BSLS, KC_EXLM, KC_LABK, KC_RABK, CM_COLN, KC_TRNS, KC_UNDS, KC_DLR, KC_QUES, KC_TRNS, KC_PERC},
|
||||
{KC_AT, KC_AMPR, KC_LPRN, KC_RPRN, CM_SCLN, KC_TRNS, KC_COMM, KC_DOT, KC_QUOT, KC_TRNS, KC_TILD},
|
||||
{KC_HASH, KC_PIPE, KC_LCBR, KC_RCBR, KC_SLSH, KC_TRNS, KC_TRNS, KC_GRV, KC_DQT, KC_TRNS, KC_CIRC},
|
||||
{KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
|
||||
},
|
||||
[FKEY] = {
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4},
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
|
||||
}};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch(id) {}
|
||||
|
||||
return MACRO_NONE;
|
||||
};
|
45
keyboards/atreus/keymaps/jeremy/readme.md
Normal file
@@ -0,0 +1,45 @@
|
||||
Jeremy's Atreus Key Mapping
|
||||
===========================
|
||||
|
||||
I am a programmer by trade that suffers from the beginning stages of RSI. As a programmer I use letters, symbols and cursor navigation most often. To prevent strange finger gymnastics, I wrote a script to rank which non-letter characters occurred in my primary source projects most often and then placed these characters in the easiest to reach locations, for me. I made heavy use of momentary layer toggling.
|
||||
|
||||
My layout is also geared toward a software based Colemak mapping. I would like it to be hardware, but I use my Laptop on the go frequently and thus my laptop keyboard. I have moved the keycaps to reflect the Colemak layout. My laptop is a MacBook Pro (2015).
|
||||
|
||||
## Main Layers
|
||||
|
||||
1. [Letters](http://www.keyboard-layout-editor.com/#/gists/6861cb9df09ce78efaddf8aa7471e3ac)
|
||||
2. [Symbols](http://www.keyboard-layout-editor.com/#/gists/8956a18b508a78e93b9c38ec3fcccaa5)
|
||||
3. [Navigation](http://www.keyboard-layout-editor.com/#/gists/6ed492b714a7f54eb1c5de09b87fd8c4)
|
||||
4. [Numbers](http://www.keyboard-layout-editor.com/#/gists/399ceb5624e8388e48a3a5eacac8e973)
|
||||
5. [Function Keys](http://www.keyboard-layout-editor.com/#/gists/7fd7dc24c7048316f3724b1893c64e89)
|
||||
|
||||
## Notes
|
||||
|
||||
### General
|
||||
|
||||
Some characters can be accessed multiple ways. This was done because you may be in a given layer, such as numbers, where when doing math, you may need quick access to the parentheses characters for grouping. This prevents some layer switching.
|
||||
|
||||
I own an ErgoDox and plan on porting this as a base layer, then using the extra keys the ErgoDox provides accordingly. My goal, though, is to be fully functional on this base setup and build everything into muscle memory.
|
||||
|
||||
### Symbol Layer
|
||||
|
||||
1. I placed characters that deal with an if statement close together, such as !, & and |.
|
||||
2. All matching brace/bracket characters are together as well.
|
||||
|
||||
### Number Layer
|
||||
|
||||
1. Everything I did was a compromise when trying to mimic a ten-key. I did the best I could.
|
||||
2. Operators are duplicated on the right and left. I do not find it comfortable to use my pinky much, so I tend to use my left hand for +, -, * and / but those were also placed on the right hand to mimic the ten-key.
|
||||
3. Parentheses were added for typing on the calculator.
|
||||
|
||||
### Cursor Layer
|
||||
|
||||
1. It includes basic audio controls because they didn't really fit anywhere else
|
||||
2. It contains basic file manipulation. I'm not sure that was a good idea. I do save all the time, but Cmd+S isn't exactly hard.
|
||||
3. It contains the backspace and delete keys right on top of the left and right arrows.
|
||||
4. Cmd and Opt keys are duplicated. This makes for very easy navigation, for example on a Mac, Opt+Left/Right moves word by word. It also backspaces or deletes word by word.
|
||||
|
||||
### Function Layer
|
||||
|
||||
1. Almost all other layers I saw grouped the F keys into a bunch of three. This only gives nine function keys in order if you attempt to stay as close to the home row as possible. I went with a group of four, which gives all twelve function keys to the right hand, one row below and above the home row.
|
||||
2. I duplicated the Command and Option keys the same as on the cursor layer. This makes it dead easy to hit modified function keys such as Cmd+Opt+F5. It's also easy to toss in a Shift modifier in there with the right thumb since the bottom row is preserved.
|
Before Width: | Height: | Size: 74 KiB |
BIN
keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png
Normal file
After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 73 KiB |
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Keyboard: Atreus
|
||||
* Keymap: replicaJunction
|
||||
* Version: 0.3
|
||||
* Version: 0.4
|
||||
*
|
||||
* This keymap is designed to complement my Ergodox keyboard layout, found in keyboards/ergodox_ez.
|
||||
* The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox. I now
|
||||
@@ -42,51 +42,157 @@
|
||||
#define KX_PAST LCTL(KC_V)
|
||||
#define KX_UNDO LCTL(KC_Z)
|
||||
|
||||
#define _USER 0 // User macro
|
||||
|
||||
; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements.
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
* Colemak-ModDH
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | Q | W | F | P | B | | J | L | U | Y | ; |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | A | R | S | T | G | | M | N | E | I | O |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* |Z Shft| X | C | D | V | ,------. ,------. | K | H | , | . |/ Shft|
|
||||
* +------+------+------+------+------| | Ctrl | | Alt | +------+------+------+------+------|
|
||||
* | Esc | Gui | Tab | _FN | Bksp | | Del | | Enter| |Sp/_NU| _EX | - | ' | = |
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
[_CO] = KEYMAP(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O,
|
||||
SFT_T(KC_Z), KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, SFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LGUI, KC_TAB, KC_LALT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
|
||||
KC_ESC, KC_LGUI, KC_TAB, MO(_FN), KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
|
||||
),
|
||||
|
||||
/*
|
||||
* QWERTY
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | Q | W | E | R | T | | Y | U | I | O | P |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | A | S | D | F | G | | H | J | K | L | ; |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* |Z Shft| X | C | V | B | ,------. ,------. | N | M | , | . |/ Shft|
|
||||
* +------+------+------+------+------| | Ctrl | | Alt | +------+------+------+------+------|
|
||||
* | Esc | Gui | Tab | _FN | Bksp | | Del | | Enter| |Sp/_NU| _EX | - | ' | = |
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
[_QW] = KEYMAP( /* Qwerty */
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
||||
SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LGUI, KC_TAB, KC_LALT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
|
||||
KC_ESC, KC_LGUI, KC_TAB, MO(_FN), KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL
|
||||
),
|
||||
|
||||
/*
|
||||
* Extend
|
||||
*
|
||||
* Ctrl+` is a keyboard shortcut for the program ConEmu, which brings up a dropdown console window.
|
||||
*
|
||||
* Also note that some dual-role keys are overridden here with their modifiers
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | | | | |Ctrl `| | PgUp | Home | Up | End | Del |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | Gui | Shift| Alt | Ctrl | | | PgDn | Left | Down | Right| Bksp |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | Shift| Cut | Copy | | Paste| ,------. ,------. | | ^Tab | Tab | |Insert|
|
||||
* +------+------+------+------+------| | Del | | Enter| +------+------+------+------+------|
|
||||
* | | | | | | | | | | | Space|XXXXXX| | |PrntSc|
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
[_EX] = KEYMAP( /* Extend */
|
||||
KC_CAPS, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL,
|
||||
_______, KC_LGUI, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
|
||||
_______, KX_CUT, KX_COPY, _______, KX_PAST, _______, KC_TAB, KCX_LST, _______, KC_INSERT,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR
|
||||
_______, _______, _______, _______, LCTL(KC_GRV), KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL,
|
||||
KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
|
||||
KC_LSFT, KX_CUT, KX_COPY, _______, KX_PAST, _______, KCX_LST, KC_TAB, _______, KC_INS,
|
||||
_______, _______, _______, _______, _______, KC_DEL, KC_ENT, KC_SPC, _______, _______, _______, KC_PSCR
|
||||
),
|
||||
|
||||
/*
|
||||
* Numbers and symbols
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | ! | @ | { | } | & | | / | 7 | 8 | 9 | * |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | # | $ | ( | ) | ~ | | | | 4 | 5 | 6 | - |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | % | ^ | [ | ] | ` | ,------. ,------. | \ | 1 | 2 | 3 | + |
|
||||
* +------+------+------+------+------| | | | | +------+------+------+------+------|
|
||||
* | | _GA | | | | | | | | |XXXXXX| 0 | . | = | |
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
[_NU] = KEYMAP( /* Numbers and symbols */
|
||||
KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR,
|
||||
KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TILD, KC_PIPE, KC_4, KC_5, KC_6, KC_MINS,
|
||||
KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS, KC_1, KC_2, KC_3, KC_PLUS,
|
||||
_______, TG(_GA), _______, MO(_FN), _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______
|
||||
_______, TG(_GA), _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* Functions
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | Caps | F9 | F10 | F11 | F12 | | _USER|Whl Up| MUp |Whl Dn| |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | | F5 | F6 | F7 | F8 | | Vol ^| MLeft| MDown|MRight| |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | ,------. ,------. | Vol v| | | | |
|
||||
* +------+------+------+------+------| | | |RClick| +------+------+------+------+------|
|
||||
* | | | |XXXXXX| | | | | | |LClick|MClick| _CO | _GA | RESET|
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
[_FN] = KEYMAP( /* Functions */
|
||||
KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_F4, KC_F5, KC_F6, KC_F11,
|
||||
_______, KC_VOLU, KC_MUTE, KC_VOLD, KC_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12,
|
||||
_______, _______, _______, _______, KC_MSTP, _______, _______, _______, KC_NO, DF(_CO), DF(_QW), RESET
|
||||
KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, M(_USER),KC_WH_U, KC_MS_U, KC_WH_D, _______,
|
||||
_______, KC_F5, KC_F6, KC_F7, KC_F8, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_R, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_VOLD, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN1, KC_BTN3, DF(_CO), DF(_QW), RESET
|
||||
),
|
||||
|
||||
/*
|
||||
* Gaming
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | | | | | | | |Whl Up| MUp |Whl Dn| |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | | | | | | | | MLeft| MDown|MRight| |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | Z | | | | | ,------. ,------. | | | | | |
|
||||
* +------+------+------+------+------| | Bksp | |RClick| +------+------+------+------+------|
|
||||
* | | _GA | | Shift| Space| | | | | |LClick|MClick| | | |
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
[_GA] = KEYMAP( /* Gaming */
|
||||
_______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
|
||||
KC_Z, _______, _______, _______, _______, KC_BTN3, _______, KC_MS_D, _______, _______,
|
||||
_______, TG(_GA), _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______
|
||||
KC_Z, _______, _______, _______, _______, _______, _______, KC_MS_D, _______, _______,
|
||||
_______, TG(_GA), _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, KC_BTN3, _______, _______, _______
|
||||
)};
|
||||
|
||||
/*
|
||||
* Template
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | | | | | | | | | | | |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* +------+------+------+------+------| +------+------+------+------+------|
|
||||
* | | | | | | ,------. ,------. | | | | | |
|
||||
* +------+------+------+------+------| | | | | +------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* `----------------------------------' `------' `------' `----------------------------------'
|
||||
*
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
@@ -95,7 +201,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0:
|
||||
case _USER:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
} else {
|
||||
|
@@ -10,13 +10,15 @@ I won't claim that this layout is perfect for everyone. It does make several sig
|
||||
|
||||
## Base Layer ##
|
||||
|
||||

|
||||

|
||||
|
||||
The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/).
|
||||
|
||||
Note that there are four dual-purpose keys: Shift (Backspace), Ctrl (Delete), Alt (Enter), and Space (Number layer). In QMK, these dual-role keys can be made to hold their primary key by double-tapping the key and holding on the second tap. For example, if I wanted to insert a long string of Spaces, I would tap the Space key, then tap it again and hold. A single press and hold would trigger the secondary function of the key instead.
|
||||
The primary mechanism for the Shift keys in this keyboard are the dual-role Z and slash keys. Pressing the key sends the keystroke, while holding the key sends a shift. This is a design choice taken from the xyverz layout, and one I find much more intuitive than a thumb shift. In addition, the pinky doesn't need to stretch as far to reach these keys as it does to reach a standard Shift key.
|
||||
|
||||
The secondary Alt on the left bottom row exists to provide a single-hand Alt+Tab shortcut, which would take two rows otherwise.
|
||||
Occasionally, when typing the letter Z, I'll hold the key down a fraction of a second too long, and the keyboard will shift instead. If you're not a confident typist, this dual-role Shift key layout is probably not a good solution. In that case, I'd suggest moving Shift onto the Backspace key (press for Backspace, hold for Shift).
|
||||
|
||||
In addition to the Shift keys, there are three dual-purpose keys: Ctrl (Delete), Alt (Enter), and Space (Number layer). In QMK, these dual-role keys can be made to hold their primary key with a tap and hold. For example, if I wanted to insert a long string of Spaces, I would tap the Space key, then tap it again and hold. A single press and hold would trigger the secondary function of the key instead.
|
||||
|
||||
## Extend Layer ##
|
||||
|
||||
@@ -42,9 +44,11 @@ This layer also provides plenty of symbol shortcuts. Most of these can be access
|
||||
|
||||

|
||||
|
||||
Function keys (F1-F12) are on this layer, as well as some more generic "functions" such as media keys. I've also set up a mirror image of the arrows from the Extend layer in case I need to use these with my left hand, but I don't do this very often.
|
||||
Function keys (F1-F12) are on this layer. Their layout in groups of four comes from Jeremy's Atreus layout in this repository. I'd been using 1-9 in a numpad layout, then adding 10-12 on the side...I suppose it took seeing someone else do it this way for me to realize how much more sense it makes.
|
||||
|
||||
The reset key is on this layer, as well as a toggle from Colemak to QWERTY and back. The QWERTY layer is not currently documented, but it is functionally identical to the base layer except for letter positions.
|
||||
On the right side are mouse keys - cursor left/right/up/down, and scroll up/down. Volume keys are also here, though really only because there was room for them (I'm not entirely happy with their positions).
|
||||
|
||||
Finally, the reset key is on this layer, as well as toggles from Colemak to QWERTY and back. The QWERTY layer is not currently documented, but it is functionally identical to the base layer except for letter positions.
|
||||
|
||||
## Gaming Layer ##
|
||||
|
||||
@@ -54,4 +58,4 @@ This is a small layer developed to allow some simple gameplay without a mouse. T
|
||||
|
||||
The keys on the left hand bring Space into the left thumb's reach, as well as overriding the dual-role Shift with its standard function (Z in both QWERTY and in Colemak). This allows easy Shift presses without blocking the Z key, commonly used in games.
|
||||
|
||||
I would probably not consider this a hard-core gaming keyboard, and this layout does have the huge problem of blocking access to the number keys, but for more casual games, it plays quite well. I've used it quite a bit on Minecraft, for example, and I'm quite pleased with it.
|
||||
I would probably not consider the Atreus a hard-core gaming keyboard in the first place, and this layout does have the huge problem of blocking access to the number keys, but for more casual games, it plays quite well. I've used it quite a bit on Minecraft, for example, and I'm quite pleased with it.
|
@@ -88,7 +88,7 @@ We've added shortcuts to make common modifier/tap (mod-tap) mappings more compac
|
||||
|
||||
### 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).
|
||||
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/qmk/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.
|
||||
|
||||
@@ -169,7 +169,7 @@ This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboar
|
||||
|
||||
## Building
|
||||
|
||||
Download or clone the whole firmware and navigate to the keyboards/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button.
|
||||
Download or clone the whole firmware and navigate to the keyboards/atreus folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button.
|
||||
|
||||
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
||||
|
||||
|
3
keyboards/atreus62/Makefile
Normal file
@@ -0,0 +1,3 @@
|
||||
ifndef MAKEFILE_INCLUDED
|
||||
include ../../Makefile
|
||||
endif
|
1
keyboards/atreus62/atreus62.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "atreus62.h"
|
26
keyboards/atreus62/atreus62.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef ATREUS62_H
|
||||
#define ATREUS62_H
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
void promicro_bootloader_jmp(bool program);
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KEYMAP( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
|
||||
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
|
||||
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
|
||||
}
|
||||
|
||||
#endif
|
83
keyboards/atreus62/config.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
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 "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6062
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Profet
|
||||
#define PRODUCT Atreus62
|
||||
#define DESCRIPTION q.m.k. keyboard firmware for Atreus62
|
||||
|
||||
/* key matrix size */
|
||||
// Rows are doubled-up
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 13
|
||||
|
||||
// wiring of each half
|
||||
#define MATRIX_ROW_PINS { D2, D3, D1, D0, D4 }
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7, C6 }
|
||||
|
||||
#define CATERINA_BOOTLOADER
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* 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
|
||||
|
||||
/* key combination for command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
// #define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
// #define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#endif
|
71
keyboards/atreus62/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,71 @@
|
||||
// this is the style you want to emulate.
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include "atreus62.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
#define _DEFAULT 0
|
||||
#define _NAV 1
|
||||
#define _RESET 2
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_DEFAULT] = { /* qwerty */
|
||||
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS },
|
||||
{ KC_BSLS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC },
|
||||
{ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
|
||||
{ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LBRC },
|
||||
{ KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(_NAV),KC_BSPC, KC_ENT, KC_SPC, KC_EQL, KC_MINS, KC_QUOT, KC_ENT, KC_RGUI }
|
||||
},
|
||||
|
||||
[_NAV] = {
|
||||
{ TO(_DEFAULT), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS },
|
||||
{ TO(_RESET), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
|
||||
},
|
||||
|
||||
[_RESET] = {
|
||||
{ TO(_DEFAULT), 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 , RESET }
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[_TRNS] = {
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
|
||||
},
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch (id) {
|
||||
case 0:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
}
|
||||
else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
5
keyboards/atreus62/keymaps/mneme/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
NKRO_ENABLE = true
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
56
keyboards/atreus62/keymaps/mneme/README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
||||
|
||||
Mnemes Swedish Bonaza
|
||||
=======================
|
||||
|
||||
My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout
|
||||
|
||||
[algernon]: https://github.com/algernon/ergodox-layout
|
||||
|
||||
It's for Windows (current work forces me to) and Swedish (matter of birth) so ymmw.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Layouts](#layouts)
|
||||
- [Base layer](#base-layer)
|
||||
- [Nav layer](#nav-layer)
|
||||
- [Sym layer](#sym-layer)
|
||||
- [LED states](#led-states)
|
||||
|
||||
# Layouts
|
||||
|
||||
## Base layer
|
||||
|
||||

|
||||
|
||||
|
||||
* The number row doubles as a function row. Short presses produces numbers, long presses produces Fxx
|
||||
* The `Shift`, `Alt`, and `Control` modifiers are one-shot.
|
||||
* `Backspace` and `Enter` doubles as switches to the `sym` layer when held
|
||||
* The `ESC` key also doubles as a one-shot cancel key.
|
||||
* The **Lead** key is followed by a sequence of keys.
|
||||
- `LEAD l` : `lgui+l`.
|
||||
- `LEAD s l` : `λ`.
|
||||
- `LEAD s s` : `¯\_(ツ)_/¯`
|
||||
- `LEAD s f` : `凸(ツ)凸`
|
||||
- `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
|
||||
|
||||
|
||||
## Nav layer
|
||||
|
||||

|
||||
|
||||
Basic navigation on the right hand and modifiers close
|
||||
by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
|
||||
|
||||
## Sym layer
|
||||
|
||||

|
||||
|
||||
* Easy access to most symbols I use on a daily basis. Most common are on the home row, the rest are grouped as best as I could.
|
||||
|
||||
- `eq` : Tapdance, produces `===` and `!==`
|
||||
- `fun`: Tapdance, produces `=>` and `() => {\n`
|
||||
|
||||
# License
|
||||
GPL-3+
|
7
keyboards/atreus62/keymaps/mneme/config.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
#define TAPPING_TERM 200
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
|
||||
#define LEADER_TIMEOUT 1000
|
||||
|
||||
#include "../../config.h"
|
BIN
keyboards/atreus62/keymaps/mneme/img/base.png
Normal file
After Width: | Height: | Size: 448 KiB |
BIN
keyboards/atreus62/keymaps/mneme/img/fun.png
Normal file
After Width: | Height: | Size: 420 KiB |
BIN
keyboards/atreus62/keymaps/mneme/img/sym.png
Normal file
After Width: | Height: | Size: 423 KiB |
337
keyboards/atreus62/keymaps/mneme/keymap.c
Normal file
@@ -0,0 +1,337 @@
|
||||
#include <stdarg.h>
|
||||
#include "atreus62.h"
|
||||
#include "led.h"
|
||||
#include "action_layer.h"
|
||||
#include "action_util.h"
|
||||
|
||||
/*
|
||||
*WINDOWS SWEDISH
|
||||
*/
|
||||
#define KN_HALF KC_GRV // 1/2
|
||||
#define KN_PLUS KC_MINS // +
|
||||
#define KN_ACUT KC_EQL // ´
|
||||
#define KN_AO KC_LBRC // Å
|
||||
#define KN_UMLA KC_RBRC // ¨
|
||||
#define KN_OE KC_SCLN // Ö
|
||||
#define KN_AE KC_QUOT // Ä
|
||||
#define KN_QUOT KC_NUHS // '
|
||||
#define KN_LABK KC_NUBS // <
|
||||
#define KN_MINS KC_SLSH // -
|
||||
#define KN_EXLM LSFT(KC_1) // !
|
||||
#define KN_DQT LSFT(KC_2) // "
|
||||
#define KN_AT RALT(KC_2) // @
|
||||
#define KN_HASH LSFT(KC_3) // #
|
||||
#define KN_DLR RALT(KC_4) // $
|
||||
#define KN_PERC LSFT(KC_5) // %
|
||||
#define KN_AMPR LSFT(KC_6) // &
|
||||
#define KN_SLSH LSFT(KC_7) // /
|
||||
#define KN_LPRN LSFT(KC_8) // (
|
||||
#define KN_RPRN LSFT(KC_9) // )
|
||||
#define KN_EQL LSFT(KC_0) // =
|
||||
#define KN_UNDS LSFT(KN_MINS) // _
|
||||
#define KN_QUES LSFT(KN_PLUS) // ?
|
||||
#define KN_GRAV LSFT(KN_ACUT) // `
|
||||
#define KN_LCBR RALT(KC_7) // {
|
||||
#define KN_RCBR RALT(KC_0) // }
|
||||
#define KN_LBRC RALT(KC_8) // [
|
||||
#define KN_RBRC RALT(KC_9) // ]
|
||||
#define KN_RABK LSFT(KN_LABK) // <
|
||||
#define KN_COLN LSFT(KC_DOT) // :
|
||||
#define KN_SCLN LSFT(KC_COMM) // :
|
||||
#define KN_PIPE RALT(KN_LABK) // |
|
||||
#define KN_QUES LSFT(KN_PLUS) // ?
|
||||
#define KN_CIRC LSFT(KN_UMLA) // ^
|
||||
#define KN_ASTR LSFT(KN_QUOT) // *
|
||||
#define KN_TILD RALT(KN_UMLA) // ~
|
||||
#define KN_BSLS RALT(KN_PLUS) //
|
||||
|
||||
#define OSM_LCTL OSM(MOD_LCTL)
|
||||
#define OSM_LALT OSM(MOD_LALT)
|
||||
#define OSM_LSFT OSM(MOD_LSFT)
|
||||
|
||||
#define KC_HYP LSFT(LALT(LCTL(KC_LGUI)))
|
||||
|
||||
#define KC_COPY LCTL(KC_C)
|
||||
#define KC_PASTE LCTL(KC_V)
|
||||
#define KC_UNDO LCTL(KC_Z)
|
||||
#define KC_REDO LCTL(LSFT(KC_Z))
|
||||
|
||||
// Layers
|
||||
enum {
|
||||
BASE = 0,
|
||||
NAV,
|
||||
SYM
|
||||
};
|
||||
|
||||
//Macros
|
||||
enum {
|
||||
KF_1 = 0, // 1, F1
|
||||
KF_2, // ...
|
||||
KF_3,
|
||||
KF_4,
|
||||
KF_5,
|
||||
KF_6,
|
||||
KF_7,
|
||||
KF_8,
|
||||
KF_9,
|
||||
KF_10,
|
||||
KF_11,
|
||||
KF_12
|
||||
};
|
||||
|
||||
// Tapdance
|
||||
enum {
|
||||
TD_FUN = 0,
|
||||
TD_EQ
|
||||
};
|
||||
|
||||
//Custom keycodes
|
||||
enum {
|
||||
PLACEHOLDER = SAFE_RANGE
|
||||
};
|
||||
|
||||
//State and timers
|
||||
uint16_t kf_timers[12];
|
||||
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BASE] = {
|
||||
|
||||
{ M(KF_11) ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,KC_NO ,M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) },
|
||||
{ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_NO ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KN_AO },
|
||||
{ OSM_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_NO ,KC_H ,KC_J ,KC_K ,KC_L ,KN_OE ,KN_AE },
|
||||
{ OSM_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DELT ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KN_MINS ,OSM_LSFT },
|
||||
{ MO(NAV) ,OSM_LCTL ,OSM_LALT ,KC_LGUI ,KC_SPC ,LT(SYM,KC_BSPC) ,KC_HYP ,LT(SYM,KC_ENT) ,KC_SPC ,KC_LEAD ,KC_LALT ,KC_LCTRL ,MO(NAV) }
|
||||
|
||||
},
|
||||
[NAV] = {
|
||||
|
||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
|
||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO ,KC_PGUP ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS },
|
||||
{ KC_TRNS ,KC_LSFT ,KC_LCTL ,KC_LALT ,KC_L ,KC_TRNS ,KC_NO ,KC_PGDN ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRNS ,KC_TRNS },
|
||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
|
||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_VOLD ,KC_VOLU }
|
||||
|
||||
},
|
||||
[SYM] = {
|
||||
|
||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TD(TD_EQ) ,KC_NO ,TD(TD_FUN) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
|
||||
{ KC_TRNS ,KN_LABK ,KN_RABK ,KN_LCBR ,KN_RCBR ,KN_PLUS ,KC_NO ,KN_AT ,KN_DQT ,KN_QUOT ,KN_GRAV ,KN_SLSH ,KC_TRNS },
|
||||
{ KC_TRNS ,KN_EXLM ,KN_EQL ,KN_LPRN ,KN_RPRN ,KN_MINS ,KC_NO ,KN_UNDS ,KN_SCLN ,KN_COLN ,KN_AMPR ,KN_PIPE ,KC_TRNS },
|
||||
{ KC_TRNS ,KN_DLR ,KN_PERC ,KN_LBRC ,KN_RBRC ,KN_ASTR ,KC_TRNS ,KN_HASH ,KC_COMM ,KC_DOT ,KN_QUES ,KN_BSLS ,KC_TRNS },
|
||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS }
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
#define TAP_ONCE(code) \
|
||||
register_code (code); \
|
||||
unregister_code (code)
|
||||
|
||||
static void m_tapn (uint8_t code, ...) {
|
||||
uint8_t kc = code;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, code);
|
||||
do {
|
||||
register_code(kc);
|
||||
unregister_code(kc);
|
||||
wait_ms(50);
|
||||
kc = va_arg(ap, int);
|
||||
} while (kc != 0);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
static void m_handle_kf (keyrecord_t *record, uint8_t id) {
|
||||
uint8_t code = id - KF_1;
|
||||
|
||||
if (record->event.pressed) {
|
||||
kf_timers[code] = timer_read ();
|
||||
} else {
|
||||
uint8_t kc_base;
|
||||
uint8_t long_press = (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM);
|
||||
|
||||
kf_timers[code] = 0;
|
||||
|
||||
switch(id){
|
||||
case KF_1 ... KF_10:
|
||||
if (long_press) {
|
||||
// Long press
|
||||
kc_base = KC_F1;
|
||||
} else {
|
||||
kc_base = KC_1;
|
||||
}
|
||||
code += kc_base;
|
||||
break;
|
||||
case KF_11:
|
||||
code = long_press ? KC_F11 : KC_ESC;
|
||||
break;
|
||||
case KF_12:
|
||||
code = long_press ? KC_F12 : KN_PLUS;
|
||||
break;
|
||||
}
|
||||
register_code (code);
|
||||
unregister_code (code);
|
||||
}
|
||||
}
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch (id) {
|
||||
case KF_1 ... KF_12:
|
||||
m_handle_kf(record, id);
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
// Custom keycodes
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
bool queue = true;
|
||||
|
||||
//Cancle one-shot mods.
|
||||
switch (keycode) {
|
||||
case KC_ESC:
|
||||
if (record->event.pressed && get_oneshot_mods() && !has_oneshot_mods_timed_out()) {
|
||||
clear_oneshot_mods();
|
||||
queue = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return queue;
|
||||
}
|
||||
|
||||
// TAP DANCE SETTINGS
|
||||
void dance_eq (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1: // ===
|
||||
register_code(KC_LSHIFT);
|
||||
m_tapn(KC_0, KC_0, KC_0, 0);
|
||||
unregister_code(KC_LSHIFT);
|
||||
break;
|
||||
case 2:
|
||||
register_code(KC_LSHIFT);
|
||||
m_tapn(KC_1, KC_0, KC_0, 0);
|
||||
unregister_code(KC_LSHIFT);
|
||||
break;
|
||||
default:
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
}
|
||||
|
||||
void dance_fun (qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1: // =>
|
||||
register_code(KC_LSHIFT);
|
||||
m_tapn(KC_0, KN_LABK, 0);
|
||||
unregister_code(KC_LSHIFT);
|
||||
break;
|
||||
case 2: // () => {}
|
||||
register_code(KC_LSHIFT);
|
||||
m_tapn(KC_8, KC_9, KC_SPC, KC_0, KN_LABK, KC_SPC, 0);
|
||||
unregister_code(KC_LSHIFT);
|
||||
register_code(KC_RALT);
|
||||
m_tapn(KC_7, 0);
|
||||
unregister_code(KC_RALT);
|
||||
TAP_ONCE(KC_ENT);
|
||||
break;
|
||||
default:
|
||||
reset_tap_dance(state);
|
||||
}
|
||||
}
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_FUN] = ACTION_TAP_DANCE_FN (dance_fun)
|
||||
,[TD_EQ] = ACTION_TAP_DANCE_FN (dance_eq)
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
set_unicode_input_mode(UC_WINC);
|
||||
};
|
||||
|
||||
LEADER_EXTERNS();
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
LEADER_DICTIONARY() {
|
||||
leading = false;
|
||||
leader_end();
|
||||
SEQ_ONE_KEY(KC_L){
|
||||
register_code(KC_RGUI);
|
||||
TAP_ONCE(KC_L);
|
||||
unregister_code(KC_RGUI);
|
||||
};
|
||||
|
||||
|
||||
SEQ_TWO_KEYS (KC_A, KC_W) {
|
||||
//Web - chrome
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_1); unregister_code (KC_LGUI);
|
||||
}
|
||||
SEQ_TWO_KEYS (KC_A, KC_P) {
|
||||
//sPotify
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_2); unregister_code (KC_LGUI);
|
||||
|
||||
}
|
||||
SEQ_TWO_KEYS (KC_A, KC_T) {
|
||||
//Total Commander
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_3); unregister_code (KC_LGUI);
|
||||
|
||||
}
|
||||
SEQ_TWO_KEYS (KC_A, KC_A) {
|
||||
//Atom
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_4); unregister_code (KC_LGUI);
|
||||
|
||||
}
|
||||
SEQ_TWO_KEYS (KC_A, KC_E) {
|
||||
//Emacs
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_5); unregister_code (KC_LGUI);
|
||||
|
||||
}
|
||||
SEQ_TWO_KEYS (KC_A, KC_C) {
|
||||
//Cmdr
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_6); unregister_code (KC_LGUI);
|
||||
|
||||
}
|
||||
SEQ_TWO_KEYS (KC_A, KC_S) {
|
||||
//Slack
|
||||
register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);
|
||||
}
|
||||
|
||||
|
||||
SEQ_TWO_KEYS (KC_S, KC_S) {
|
||||
// ¯\_(ツ)_/¯
|
||||
unicode_input_start(); register_hex(0xaf); unicode_input_finish();
|
||||
register_code (KC_LALT);
|
||||
register_code (KC_LCTL);
|
||||
TAP_ONCE (KN_PLUS);
|
||||
unregister_code (KC_LCTL);
|
||||
unregister_code (KC_LALT);
|
||||
|
||||
register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT);
|
||||
unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
|
||||
register_code (KC_RSFT); TAP_ONCE (KC_9); TAP_ONCE(KC_7); unregister_code (KC_RSFT);
|
||||
unicode_input_start (); register_hex(0xaf); unicode_input_finish();
|
||||
}
|
||||
|
||||
SEQ_TWO_KEYS (KC_S, KC_F) {
|
||||
// 凸(ツ)凸
|
||||
unicode_input_start(); register_hex(0x51F8); unicode_input_finish();
|
||||
register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT);
|
||||
unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
|
||||
register_code (KC_RSFT); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
|
||||
unicode_input_start (); register_hex(0x51F8); unicode_input_finish();
|
||||
}
|
||||
|
||||
SEQ_TWO_KEYS (KC_S, KC_L) {
|
||||
// λ
|
||||
unicode_input_start();
|
||||
register_hex(0x03bb);
|
||||
unicode_input_finish();
|
||||
}
|
||||
};
|
||||
};
|
114
keyboards/atreus62/keymaps/mneme/unicode
Normal file
@@ -0,0 +1,114 @@
|
||||
Todo
|
||||
☐ 2610 Todo
|
||||
☑ 2611 Done
|
||||
☒ 2612 Failed
|
||||
|
||||
Operator
|
||||
× 00D7 Multiplication
|
||||
÷ 00F7 Division
|
||||
≤ 2264 LessEqual
|
||||
≥ 2265 MoreEqual
|
||||
± 00B1 Plusminus
|
||||
|
||||
Math
|
||||
∏ 220F Product
|
||||
∑ 2211 Sum
|
||||
≈ 2248 Almost
|
||||
≡ 2261 Equivalent
|
||||
∞ 221E Infinity
|
||||
‰ 2030 Mille
|
||||
|
||||
Set
|
||||
⊂ 2282 Subset
|
||||
⊃ 2283 sUperset
|
||||
∩ 2229 Intersextion
|
||||
∪ 222A Union
|
||||
∈ 2208 Element
|
||||
∉ 2209 Notelement
|
||||
∍ 220D Contains
|
||||
∌ 220C doesNotcontain
|
||||
|
||||
Logic
|
||||
¬ 00AC Not
|
||||
∧ 2227 And
|
||||
∨ 2228 Or
|
||||
∃ 2203 Exists
|
||||
∄ 2204 Notexists
|
||||
|
||||
Greek
|
||||
µ 00B5 Micro
|
||||
λ 03BB Lamda
|
||||
Ω 2126 Omega
|
||||
α 03B1 Alpha
|
||||
β 03B2 Beta
|
||||
γ 03B3 Gamma
|
||||
π 03C0 Pi
|
||||
δ 03B4 Delta
|
||||
|
||||
Other
|
||||
☁ 2601 Cloud
|
||||
☼ 263C Sun
|
||||
☂ 2602 Rain
|
||||
☠ 2620 Skull
|
||||
♺ 267A Recycle
|
||||
👍1F44D thumbsUp
|
||||
👎1F44E thumbsDown
|
||||
💩 1F4A9 Poo
|
||||
|
||||
|
||||
//Todo
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_T){m_unicode(0x2610);}; // Todo
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_D){m_unicode(0x2611);}; // Done
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_F){m_unicode(0x2612);}; // Failed
|
||||
|
||||
//Operator
|
||||
SEQ_THREE_KEYS(KC_U, KC_O, KC_M){m_unicode(0x00D7);}; // Multiplication
|
||||
SEQ_THREE_KEYS(KC_U, KC_O, KC_D){m_unicode(0x00F7);}; // Division
|
||||
SEQ_THREE_KEYS(KC_U, KC_O, KC_L){m_unicode(0x2264);}; // LessEqual
|
||||
SEQ_THREE_KEYS(KC_U, KC_O, KC_M){m_unicode(0x2265);}; // MoreEqual
|
||||
SEQ_THREE_KEYS(KC_U, KC_O, KC_P){m_unicode(0x00B1);}; // Plusminus
|
||||
|
||||
//Math
|
||||
SEQ_THREE_KEYS(KC_U, KC_M, KC_P){m_unicode(0x220F);}; // Product
|
||||
SEQ_THREE_KEYS(KC_U, KC_M, KC_S){m_unicode(0x2211);}; // Sum
|
||||
SEQ_THREE_KEYS(KC_U, KC_M, KC_A){m_unicode(0x2248);}; // Almost
|
||||
SEQ_THREE_KEYS(KC_U, KC_M, KC_E){m_unicode(0x2261);}; // Equivalent
|
||||
SEQ_THREE_KEYS(KC_U, KC_M, KC_I){m_unicode(0x221E);}; // Infinity
|
||||
SEQ_THREE_KEYS(KC_U, KC_M, KC_M){m_unicode(0x2030);}; // Mille
|
||||
|
||||
//Set
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_S){m_unicode(0x2282);}; Subset
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_P){m_unicode(0x2283);}; suPerset
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_I){m_unicode(0x2229);}; Intersection
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_U){m_unicode(0x222A);}; Union
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_E){m_unicode(0x2208);}; Element
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_N){m_unicode(0x2209);}; Notelement
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_C){m_unicode(0x220D);}; Contains
|
||||
SEQ_THREE_KEYS(KC_U, KC_S, KC_D){m_unicode(0x220C);}; doesNotcontain
|
||||
|
||||
//Logic
|
||||
SEQ_THREE_KEYS(KC_U, KC_L, KC_N){m_unicode(0x00AC);}; // Not
|
||||
SEQ_THREE_KEYS(KC_U, KC_L, KC_A){m_unicode(0x2227);}; // And
|
||||
SEQ_THREE_KEYS(KC_U, KC_L, KC_O){m_unicode(0x2228);}; // Or
|
||||
SEQ_THREE_KEYS(KC_U, KC_L, KC_E){m_unicode(0x2203);}; // Exists
|
||||
SEQ_THREE_KEYS(KC_U, KC_L, KC_N){m_unicode(0x2204);}; // Notexists
|
||||
|
||||
//Greek
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_M){m_unicode(0x00B5);}; // Micro
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_L){m_unicode(0x03BB);}; // Lamda
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_O){m_unicode(0x2126);}; // Omega
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_A){m_unicode(0x03B1);}; // Alpha
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_B){m_unicode(0x03B2);}; // Beta
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_G){m_unicode(0x03B3);}; // Gamma
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_P){m_unicode(0x03C0);}; // Pi
|
||||
SEQ_THREE_KEYS(KC_U, KC_G, KC_D){m_unicode(0x03B4);}; // Delta
|
||||
|
||||
//Zother
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_C){m_unicode(0x2601);}; // Cloud
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_S){m_unicode(0x263C);}; // Sun
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_R){m_unicode(0x2602);}; // Rain
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_K){m_unicode(0x2620);}; // sKull
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_R){m_unicode(0x267A);}; // rEcycle
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_U){m_unicode(0x1F44D);}; // thumbsUp
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_D){m_unicode(0x1F44E);}; // thumbsDown
|
||||
SEQ_THREE_KEYS(KC_U, KC_Z, KC_P){m_unicode(0x1F4A9);}; // Poo
|
362
keyboards/atreus62/pro_micro.h
Normal file
@@ -0,0 +1,362 @@
|
||||
/*
|
||||
pins_arduino.h - Pin definition functions for Arduino
|
||||
Part of Arduino - http://www.arduino.cc/
|
||||
|
||||
Copyright (c) 2007 David A. Mellis
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General
|
||||
Public License along with this library; if not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
Boston, MA 02111-1307 USA
|
||||
|
||||
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
|
||||
*/
|
||||
|
||||
#ifndef Pins_Arduino_h
|
||||
#define Pins_Arduino_h
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
// Workaround for wrong definitions in "iom32u4.h".
|
||||
// This should be fixed in the AVR toolchain.
|
||||
#undef UHCON
|
||||
#undef UHINT
|
||||
#undef UHIEN
|
||||
#undef UHADDR
|
||||
#undef UHFNUM
|
||||
#undef UHFNUML
|
||||
#undef UHFNUMH
|
||||
#undef UHFLEN
|
||||
#undef UPINRQX
|
||||
#undef UPINTX
|
||||
#undef UPNUM
|
||||
#undef UPRST
|
||||
#undef UPCONX
|
||||
#undef UPCFG0X
|
||||
#undef UPCFG1X
|
||||
#undef UPSTAX
|
||||
#undef UPCFG2X
|
||||
#undef UPIENX
|
||||
#undef UPDATX
|
||||
#undef TCCR2A
|
||||
#undef WGM20
|
||||
#undef WGM21
|
||||
#undef COM2B0
|
||||
#undef COM2B1
|
||||
#undef COM2A0
|
||||
#undef COM2A1
|
||||
#undef TCCR2B
|
||||
#undef CS20
|
||||
#undef CS21
|
||||
#undef CS22
|
||||
#undef WGM22
|
||||
#undef FOC2B
|
||||
#undef FOC2A
|
||||
#undef TCNT2
|
||||
#undef TCNT2_0
|
||||
#undef TCNT2_1
|
||||
#undef TCNT2_2
|
||||
#undef TCNT2_3
|
||||
#undef TCNT2_4
|
||||
#undef TCNT2_5
|
||||
#undef TCNT2_6
|
||||
#undef TCNT2_7
|
||||
#undef OCR2A
|
||||
#undef OCR2_0
|
||||
#undef OCR2_1
|
||||
#undef OCR2_2
|
||||
#undef OCR2_3
|
||||
#undef OCR2_4
|
||||
#undef OCR2_5
|
||||
#undef OCR2_6
|
||||
#undef OCR2_7
|
||||
#undef OCR2B
|
||||
#undef OCR2_0
|
||||
#undef OCR2_1
|
||||
#undef OCR2_2
|
||||
#undef OCR2_3
|
||||
#undef OCR2_4
|
||||
#undef OCR2_5
|
||||
#undef OCR2_6
|
||||
#undef OCR2_7
|
||||
|
||||
#define NUM_DIGITAL_PINS 30
|
||||
#define NUM_ANALOG_INPUTS 12
|
||||
|
||||
#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0)
|
||||
#define TXLED0 PORTD |= (1<<5)
|
||||
#define TXLED1 PORTD &= ~(1<<5)
|
||||
#define RXLED0 PORTB |= (1<<0)
|
||||
#define RXLED1 PORTB &= ~(1<<0)
|
||||
|
||||
static const uint8_t SDA = 2;
|
||||
static const uint8_t SCL = 3;
|
||||
#define LED_BUILTIN 13
|
||||
|
||||
// Map SPI port to 'new' pins D14..D17
|
||||
static const uint8_t SS = 17;
|
||||
static const uint8_t MOSI = 16;
|
||||
static const uint8_t MISO = 14;
|
||||
static const uint8_t SCK = 15;
|
||||
|
||||
// Mapping of analog pins as digital I/O
|
||||
// A6-A11 share with digital pins
|
||||
static const uint8_t ADC0 = 18;
|
||||
static const uint8_t ADC1 = 19;
|
||||
static const uint8_t ADC2 = 20;
|
||||
static const uint8_t ADC3 = 21;
|
||||
static const uint8_t ADC4 = 22;
|
||||
static const uint8_t ADC5 = 23;
|
||||
static const uint8_t ADC6 = 24; // D4
|
||||
static const uint8_t ADC7 = 25; // D6
|
||||
static const uint8_t ADC8 = 26; // D8
|
||||
static const uint8_t ADC9 = 27; // D9
|
||||
static const uint8_t ADC10 = 28; // D10
|
||||
static const uint8_t ADC11 = 29; // D12
|
||||
|
||||
#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
|
||||
#define digitalPinToPCICRbit(p) 0
|
||||
#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
|
||||
#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
|
||||
|
||||
// __AVR_ATmega32U4__ has an unusual mapping of pins to channels
|
||||
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
|
||||
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
|
||||
|
||||
#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
|
||||
|
||||
#ifdef ARDUINO_MAIN
|
||||
|
||||
// On the Arduino board, digital pins are also used
|
||||
// for the analog output (software PWM). Analog input
|
||||
// pins are a separate set.
|
||||
|
||||
// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
|
||||
//
|
||||
// D0 PD2 RXD1/INT2
|
||||
// D1 PD3 TXD1/INT3
|
||||
// D2 PD1 SDA SDA/INT1
|
||||
// D3# PD0 PWM8/SCL OC0B/SCL/INT0
|
||||
// D4 A6 PD4 ADC8
|
||||
// D5# PC6 ??? OC3A/#OC4A
|
||||
// D6# A7 PD7 FastPWM #OC4D/ADC10
|
||||
// D7 PE6 INT6/AIN0
|
||||
//
|
||||
// D8 A8 PB4 ADC11/PCINT4
|
||||
// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5
|
||||
// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6
|
||||
// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7
|
||||
// D12 A11 PD6 T1/#OC4D/ADC9
|
||||
// D13# PC7 PWM10 CLK0/OC4A
|
||||
//
|
||||
// A0 D18 PF7 ADC7
|
||||
// A1 D19 PF6 ADC6
|
||||
// A2 D20 PF5 ADC5
|
||||
// A3 D21 PF4 ADC4
|
||||
// A4 D22 PF1 ADC1
|
||||
// A5 D23 PF0 ADC0
|
||||
//
|
||||
// New pins D14..D17 to map SPI port to digital pins
|
||||
//
|
||||
// MISO D14 PB3 MISO,PCINT3
|
||||
// SCK D15 PB1 SCK,PCINT1
|
||||
// MOSI D16 PB2 MOSI,PCINT2
|
||||
// SS D17 PB0 RXLED,SS/PCINT0
|
||||
//
|
||||
// Connected LEDs on board for TX and RX
|
||||
// TXLED D24 PD5 XCK1
|
||||
// RXLED D17 PB0
|
||||
// HWB PE2 HWB
|
||||
|
||||
// these arrays map port names (e.g. port B) to the
|
||||
// appropriate addresses for various functions (e.g. reading
|
||||
// and writing)
|
||||
const uint16_t PROGMEM port_to_mode_PGM[] = {
|
||||
NOT_A_PORT,
|
||||
NOT_A_PORT,
|
||||
(uint16_t) &DDRB,
|
||||
(uint16_t) &DDRC,
|
||||
(uint16_t) &DDRD,
|
||||
(uint16_t) &DDRE,
|
||||
(uint16_t) &DDRF,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM port_to_output_PGM[] = {
|
||||
NOT_A_PORT,
|
||||
NOT_A_PORT,
|
||||
(uint16_t) &PORTB,
|
||||
(uint16_t) &PORTC,
|
||||
(uint16_t) &PORTD,
|
||||
(uint16_t) &PORTE,
|
||||
(uint16_t) &PORTF,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM port_to_input_PGM[] = {
|
||||
NOT_A_PORT,
|
||||
NOT_A_PORT,
|
||||
(uint16_t) &PINB,
|
||||
(uint16_t) &PINC,
|
||||
(uint16_t) &PIND,
|
||||
(uint16_t) &PINE,
|
||||
(uint16_t) &PINF,
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
|
||||
PD, // D0 - PD2
|
||||
PD, // D1 - PD3
|
||||
PD, // D2 - PD1
|
||||
PD, // D3 - PD0
|
||||
PD, // D4 - PD4
|
||||
PC, // D5 - PC6
|
||||
PD, // D6 - PD7
|
||||
PE, // D7 - PE6
|
||||
|
||||
PB, // D8 - PB4
|
||||
PB, // D9 - PB5
|
||||
PB, // D10 - PB6
|
||||
PB, // D11 - PB7
|
||||
PD, // D12 - PD6
|
||||
PC, // D13 - PC7
|
||||
|
||||
PB, // D14 - MISO - PB3
|
||||
PB, // D15 - SCK - PB1
|
||||
PB, // D16 - MOSI - PB2
|
||||
PB, // D17 - SS - PB0
|
||||
|
||||
PF, // D18 - A0 - PF7
|
||||
PF, // D19 - A1 - PF6
|
||||
PF, // D20 - A2 - PF5
|
||||
PF, // D21 - A3 - PF4
|
||||
PF, // D22 - A4 - PF1
|
||||
PF, // D23 - A5 - PF0
|
||||
|
||||
PD, // D24 - PD5
|
||||
PD, // D25 / D6 - A7 - PD7
|
||||
PB, // D26 / D8 - A8 - PB4
|
||||
PB, // D27 / D9 - A9 - PB5
|
||||
PB, // D28 / D10 - A10 - PB6
|
||||
PD, // D29 / D12 - A11 - PD6
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
|
||||
_BV(2), // D0 - PD2
|
||||
_BV(3), // D1 - PD3
|
||||
_BV(1), // D2 - PD1
|
||||
_BV(0), // D3 - PD0
|
||||
_BV(4), // D4 - PD4
|
||||
_BV(6), // D5 - PC6
|
||||
_BV(7), // D6 - PD7
|
||||
_BV(6), // D7 - PE6
|
||||
|
||||
_BV(4), // D8 - PB4
|
||||
_BV(5), // D9 - PB5
|
||||
_BV(6), // D10 - PB6
|
||||
_BV(7), // D11 - PB7
|
||||
_BV(6), // D12 - PD6
|
||||
_BV(7), // D13 - PC7
|
||||
|
||||
_BV(3), // D14 - MISO - PB3
|
||||
_BV(1), // D15 - SCK - PB1
|
||||
_BV(2), // D16 - MOSI - PB2
|
||||
_BV(0), // D17 - SS - PB0
|
||||
|
||||
_BV(7), // D18 - A0 - PF7
|
||||
_BV(6), // D19 - A1 - PF6
|
||||
_BV(5), // D20 - A2 - PF5
|
||||
_BV(4), // D21 - A3 - PF4
|
||||
_BV(1), // D22 - A4 - PF1
|
||||
_BV(0), // D23 - A5 - PF0
|
||||
|
||||
_BV(5), // D24 - PD5
|
||||
_BV(7), // D25 / D6 - A7 - PD7
|
||||
_BV(4), // D26 / D8 - A8 - PB4
|
||||
_BV(5), // D27 / D9 - A9 - PB5
|
||||
_BV(6), // D28 / D10 - A10 - PB6
|
||||
_BV(6), // D29 / D12 - A11 - PD6
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
TIMER0B, /* 3 */
|
||||
NOT_ON_TIMER,
|
||||
TIMER3A, /* 5 */
|
||||
TIMER4D, /* 6 */
|
||||
NOT_ON_TIMER,
|
||||
|
||||
NOT_ON_TIMER,
|
||||
TIMER1A, /* 9 */
|
||||
TIMER1B, /* 10 */
|
||||
TIMER0A, /* 11 */
|
||||
|
||||
NOT_ON_TIMER,
|
||||
TIMER4A, /* 13 */
|
||||
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
|
||||
7, // A0 PF7 ADC7
|
||||
6, // A1 PF6 ADC6
|
||||
5, // A2 PF5 ADC5
|
||||
4, // A3 PF4 ADC4
|
||||
1, // A4 PF1 ADC1
|
||||
0, // A5 PF0 ADC0
|
||||
8, // A6 D4 PD4 ADC8
|
||||
10, // A7 D6 PD7 ADC10
|
||||
11, // A8 D8 PB4 ADC11
|
||||
12, // A9 D9 PB5 ADC12
|
||||
13, // A10 D10 PB6 ADC13
|
||||
9 // A11 D12 PD6 ADC9
|
||||
};
|
||||
|
||||
#endif /* ARDUINO_MAIN */
|
||||
|
||||
// These serial port names are intended to allow libraries and architecture-neutral
|
||||
// sketches to automatically default to the correct port name for a particular type
|
||||
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
|
||||
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
|
||||
//
|
||||
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
|
||||
//
|
||||
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
|
||||
//
|
||||
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
|
||||
//
|
||||
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
|
||||
//
|
||||
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
|
||||
// pins are NOT connected to anything by default.
|
||||
#define SERIAL_PORT_MONITOR Serial
|
||||
#define SERIAL_PORT_USBVIRTUAL Serial
|
||||
#define SERIAL_PORT_HARDWARE Serial1
|
||||
#define SERIAL_PORT_HARDWARE_OPEN Serial1
|
||||
|
||||
#endif /* Pins_Arduino_h */
|
10
keyboards/atreus62/readme.md
Normal file
@@ -0,0 +1,10 @@
|
||||
atreus62 keyboard firmware
|
||||
======================
|
||||
|
||||
This firmware is for the atreus62 keyboard.
|
||||
|
||||
This version utilizes a Pro Micro for its controller and has a 62 key layout.
|
||||
|
||||
https://github.com/profet23/atreus62
|
||||
|
||||
TODO: More information
|
66
keyboards/atreus62/rules.mk
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
# 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
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # 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 ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
#BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||
#MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= yes # Unicode
|
||||
#BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
@@ -26,7 +26,7 @@
|
||||
/* Underlight configuration
|
||||
*/
|
||||
#define RGB_DI_PIN B2
|
||||
#define RGBLIGHT_TIMER
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 14 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
|
@@ -30,7 +30,7 @@
|
||||
/* Underlight configuration
|
||||
*/
|
||||
#define RGB_DI_PIN D7
|
||||
#define RGBLIGHT_TIMER
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 14 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
|
@@ -140,7 +140,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* Underlight configuration
|
||||
*/
|
||||
#define RGB_DI_PIN E6
|
||||
//#define RGBLIGHT_TIMER
|
||||
//#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 4 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
|
@@ -1 +1,5 @@
|
||||
# The default keymap for cluecard
|
||||
|
||||
Note that this keymap has audio enabled, so the RGB mode button does not go through the different effects.
|
||||
So the LEDs will still show a static light, that is configurable with the hue, staturation and brightness
|
||||
buttons. You can of course also turn them on and off with the on/off button.
|
||||
|
21
keyboards/cluecard/keymaps/rgb_effects/Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
12
keyboards/cluecard/keymaps/rgb_effects/config.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
// place overrides here
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2
|
||||
|
||||
#endif
|
28
keyboards/cluecard/keymaps/rgb_effects/keymap.c
Normal file
@@ -0,0 +1,28 @@
|
||||
#include "cluecard.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = KEYMAP(
|
||||
RGB_TOG, RGB_SAI, RGB_VAI, \
|
||||
RGB_HUD, RGB_HUI, \
|
||||
RGB_MOD, RGB_SAD, RGB_VAD, \
|
||||
BL_STEP, \
|
||||
KC_NO, KC_NO, KC_NO \
|
||||
)
|
||||
};
|
||||
|
||||
const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {255, 170, 85};
|
||||
const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {255, 170, 85};
|
||||
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
}
|
7
keyboards/cluecard/keymaps/rgb_effects/readme.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# RGB effect test keymap for cluecard
|
||||
|
||||
This keymap is made for testing the RGB effects. Audio is disabled and the mode buttons goes through each
|
||||
effect. If you run HID-listen you will be able to see which effect is active. For a list of effects, check
|
||||
the `rgblight.c` file.
|
||||
|
||||
The hue, saturation and brightness buttons will work depending on which effect is active.
|
@@ -70,7 +70,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* Underlight configuration
|
||||
*/
|
||||
#define RGB_DI_PIN F6
|
||||
#define RGBLIGHT_TIMER
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 4 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
|
3
keyboards/converter/Makefile
Normal file
@@ -0,0 +1,3 @@
|
||||
ifndef MAKEFILE_INCLUDED
|
||||
include ../../Makefile
|
||||
endif
|
1
keyboards/converter/converter.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "converter.h"
|
1
keyboards/converter/converter.h
Normal file
@@ -0,0 +1 @@
|
||||
#include "quantum.h"
|
40
keyboards/converter/ibm_terminal/README
Normal file
@@ -0,0 +1,40 @@
|
||||
Keyboard converter for IBM terminal keyboard
|
||||
============================================
|
||||
|
||||
This is a port of TMK's converter/terminal_usb to QMK.
|
||||
|
||||
It supports PS/2 Scan Code Set 3 and runs on USB AVR chips such like PJRC Teensy.
|
||||
I tested the converter on ATMega32U4 with 1392595(102keys) and 6110345(122keys).
|
||||
|
||||
Source code: https://github.com/tmk/tmk_keyboard
|
||||
Article: http://geekhack.org/index.php?topic=27272.0
|
||||
|
||||
|
||||
CONNECTION
|
||||
----------
|
||||
Keyboard ATMega32U4
|
||||
----------------------
|
||||
Data: PD2
|
||||
Clock: PD5
|
||||
|
||||
And VCC and GND, of course. See RESOURCE for keyboard connector pin assign.
|
||||
|
||||
|
||||
BUILD
|
||||
-----
|
||||
$ git clone https://github.com/tmk/tmk_keyboard.git
|
||||
$ cd converter/terminal_usb
|
||||
$ make
|
||||
|
||||
|
||||
RESOURCE
|
||||
--------
|
||||
Soarer's Converter: http://geekhack.org/index.php?topic=17458.0
|
||||
102keys(1392595): http://geekhack.org/index.php?topic=10737.0
|
||||
122keys(1390876): http://www.seasip.info/VintagePC/ibm_1390876.html
|
||||
KbdBabel: http://www.kbdbabel.org/
|
||||
RJ45 Connector: http://www.kbdbabel.org/conn/kbd_connector_ibmterm.png
|
||||
DIN Connector: http://www.kbdbabel.org/conn/kbd_connector_ibm3179_318x_319x.png
|
||||
WinAVR: http://winavr.sourceforge.net/
|
||||
|
||||
EOF
|
138
keyboards/converter/ibm_terminal/config.h
Normal file
@@ -0,0 +1,138 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2016 Priyadi Iman Nurcahyo <priyadi@priyadi.net>
|
||||
|
||||
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 0x6535
|
||||
#define DEVICE_VER 0x0100
|
||||
#define MANUFACTURER QMK
|
||||
#define PRODUCT IBM Terminal Keyboard
|
||||
#define DESCRIPTION USB converter for IBM Terminal Keyboard
|
||||
|
||||
|
||||
/* matrix size */
|
||||
#define MATRIX_ROWS 17 // 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) | MOD_BIT(KC_RALT) | MOD_BIT(KC_RCTL)) \
|
||||
)
|
||||
|
||||
|
||||
/*
|
||||
* PS/2 USART configuration for ATMega32U4
|
||||
*/
|
||||
#ifdef PS2_USE_USART
|
||||
/* XCK for clock line */
|
||||
#define PS2_CLOCK_PORT PORTD
|
||||
#define PS2_CLOCK_PIN PIND
|
||||
#define PS2_CLOCK_DDR DDRD
|
||||
#define PS2_CLOCK_BIT 5
|
||||
/* RXD for data line */
|
||||
#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
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* PS/2 Interrupt configuration
|
||||
*/
|
||||
#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 Busywait configuration
|
||||
*/
|
||||
#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
|
||||
|
||||
#endif
|
6
keyboards/converter/ibm_terminal/ibm_terminal.c
Normal file
@@ -0,0 +1,6 @@
|
||||
#include "ibm_terminal.h"
|
||||
|
||||
// void matrix_init_kb(void) {
|
||||
|
||||
// matrix_init_user();
|
||||
// }
|
82
keyboards/converter/ibm_terminal/ibm_terminal.h
Normal file
@@ -0,0 +1,82 @@
|
||||
#ifndef IBM_TERMINAL_H
|
||||
#define IBM_TERMINAL_H
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
void matrix_init_user(void);
|
||||
|
||||
/*
|
||||
* IBM Terminal keyboard 6110345(122keys)/1392595(102keys)
|
||||
* http://geekhack.org/showthread.php?10737-What-Can-I-Do-With-a-Terminal-Model-M
|
||||
* http://www.seasip.info/VintagePC/ibm_1391406.html
|
||||
*
|
||||
* Keymap array:
|
||||
* 8 bytes
|
||||
* +---------+
|
||||
* 0| |
|
||||
* :| | 0x00-0x87
|
||||
* ;| |
|
||||
* 17| |
|
||||
* +---------+
|
||||
*/
|
||||
#define KEYMAP( \
|
||||
K08,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F, \
|
||||
K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, \
|
||||
\
|
||||
K05,K06, K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
|
||||
K04,K0C, K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \
|
||||
K03,K0B, K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K53,K5A, K63, K6B,K73,K74,K7B, \
|
||||
K83,K0A, K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K61,K62,K6A, K69,K72,K7A,K79, \
|
||||
K01,K09, K11, K19, K29, K39, K58, K60, K68,K70,K71,K78 \
|
||||
) { \
|
||||
{ KC_NO, K01, KC_NO, K03, K04, K05, K06, K07 }, \
|
||||
{ K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \
|
||||
{ K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
|
||||
{ K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
|
||||
{ K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
|
||||
{ K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \
|
||||
{ K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
|
||||
{ K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
|
||||
{ K70, K71, K72, K73, K74, K75, K76, K77 }, \
|
||||
{ K78, K79, K7A, K7B, K7C, K7D, K7E, KC_NO }, \
|
||||
{ KC_NO, KC_NO, KC_NO, K83, K84, KC_NO, KC_NO, KC_NO,}, \
|
||||
}
|
||||
|
||||
/*
|
||||
* IBM Terminal keyboard 1399625, 101-key
|
||||
*/
|
||||
#define KEYMAP_101( \
|
||||
K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \
|
||||
\
|
||||
K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
|
||||
K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D, \
|
||||
K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7C, \
|
||||
K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \
|
||||
K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \
|
||||
) { \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K07 }, \
|
||||
{ K08, KC_NO, KC_NO, KC_NO, KC_NO, K0D, K0E, K0F }, \
|
||||
{ KC_NO, K11, K12, KC_NO, K14, K15, K16, K17 }, \
|
||||
{ KC_NO, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
|
||||
{ KC_NO, K21, K22, K23, K24, K25, K26, K27 }, \
|
||||
{ KC_NO, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
|
||||
{ KC_NO, K31, K32, K33, K34, K35, K36, K37 }, \
|
||||
{ KC_NO, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
|
||||
{ KC_NO, K41, K42, K43, K44, K45, K46, K47 }, \
|
||||
{ KC_NO, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
|
||||
{ KC_NO, KC_NO, K52, KC_NO, K54, K55, K56, K57 }, \
|
||||
{ K58, K59, K5A, K5B, K5C, KC_NO, K5E, K5F }, \
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
|
||||
{ KC_NO, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
|
||||
{ K70, K71, K72, K73, K74, K75, K76, K77 }, \
|
||||
{ KC_NO, K79, K7A, KC_NO, K7C, K7D, K7E, KC_NO }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, K84, KC_NO, KC_NO, KC_NO,}, \
|
||||
}
|
||||
|
||||
#endif
|
27
keyboards/converter/ibm_terminal/keymaps/default/Makefile
Normal file
@@ -0,0 +1,27 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
||||
NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
UNICODEMAP_ENABLE ?= yes
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
PS2_USE_USART ?= yes
|
||||
API_SYSEX_ENABLE ?= no
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../../Makefile
|
||||
endif
|
||||
|
@@ -0,0 +1,6 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
#endif
|
69
keyboards/converter/ibm_terminal/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
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 "keycode.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
#include "ibm_terminal.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// Layer 0
|
||||
|
||||
KEYMAP(
|
||||
KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
|
||||
KC_PSCR,KC_ESC, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_NO, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
|
||||
KC_SLCK,KC_INT4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_NO, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_PAUS,KC_INT5, KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_BSLS,KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PCMM,
|
||||
KC_APP, KC_INT6, KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_LEFT,KC_INT2,KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_RGUI,KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_GRV, KC_DOWN, KC_NO, KC_P0, KC_PDOT,KC_NO
|
||||
),
|
||||
|
||||
/* 101-key keymaps
|
||||
*/
|
||||
/* 0: default
|
||||
* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
|
||||
* |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| [| ]| \| |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| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| |
|
||||
* `----' `---------------------------------------' `----' `-----------' `---------------'
|
||||
*/
|
||||
/*
|
||||
KEYMAP_101(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK, KC_BRK,
|
||||
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,KC_PPLS,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,
|
||||
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT,KC_PENT
|
||||
),
|
||||
*/
|
||||
};
|
27
keyboards/converter/ibm_terminal/keymaps/priyadi/Makefile
Normal file
@@ -0,0 +1,27 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
||||
NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
UNICODEMAP_ENABLE ?= yes
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
PS2_USE_USART ?= yes
|
||||
API_SYSEX_ENABLE ?= no
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../../Makefile
|
||||
endif
|
||||
|
@@ -0,0 +1,6 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
#endif
|
312
keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c
Normal file
@@ -0,0 +1,312 @@
|
||||
/*
|
||||
Copyright 2016 Priyadi Iman Nurcahyo <priyadi@priyadi.net>
|
||||
|
||||
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 "keycode.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
#include "ibm_terminal.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
// Fillers to make layering clearer
|
||||
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
|
||||
enum layers {
|
||||
QWE, // qwerty
|
||||
COL, // colemak
|
||||
WOR, // workman
|
||||
DVO, // dvorak
|
||||
|
||||
MOU, // mouse keys
|
||||
EMO, // emoji
|
||||
SYS, // system
|
||||
};
|
||||
|
||||
enum keycodes {
|
||||
// default layout switcher
|
||||
LAY_QWE = SAFE_RANGE,
|
||||
LAY_COL,
|
||||
LAY_WOR,
|
||||
LAY_DVO,
|
||||
|
||||
// layer switchers
|
||||
LYR_SYS,
|
||||
LYR_EMO,
|
||||
|
||||
// os switchers
|
||||
OS_LIN,
|
||||
OS_WIN,
|
||||
OS_MAC,
|
||||
};
|
||||
|
||||
// unicode map
|
||||
|
||||
enum unicode_name {
|
||||
GRIN, // grinning face 😊
|
||||
TJOY, // tears of joy 😂
|
||||
SMILE, // grining face with smiling eyes 😁
|
||||
HEART, // heart ❤
|
||||
EYERT, // smiling face with heart shaped eyes 😍
|
||||
CRY, // crying face 😭
|
||||
SMEYE, // smiling face with smiling eyes 😊
|
||||
UNAMU, // unamused 😒
|
||||
KISS, // kiss 😘
|
||||
HART2, // two hearts 💕
|
||||
WEARY, // weary 😩
|
||||
OKHND, // ok hand sign 👌
|
||||
PENSV, // pensive 😔
|
||||
SMIRK, // smirk 😏
|
||||
RECYC, // recycle ♻
|
||||
WINK, // wink 😉
|
||||
THMUP, // thumb up 👍
|
||||
THMDN, // thumb down 👎
|
||||
PRAY, // pray 🙏
|
||||
PHEW, // relieved 😌
|
||||
MUSIC, // musical notes
|
||||
FLUSH, // flushed 😳
|
||||
CELEB, // celebration 🙌
|
||||
CRY2, // crying face 😢
|
||||
COOL, // smile with sunglasses 😎
|
||||
NOEVS, // see no evil
|
||||
NOEVH, // hear no evil
|
||||
NOEVK, // speak no evil
|
||||
POO, // pile of poo
|
||||
EYES, // eyes
|
||||
VIC, // victory hand
|
||||
BHART, // broken heart
|
||||
SLEEP, // sleeping face
|
||||
SMIL2, // smiling face with open mouth & sweat
|
||||
HUNRD, // 100
|
||||
CONFU, // confused
|
||||
TONGU, // face with tongue & winking eye
|
||||
DISAP, // disappointed
|
||||
YUMMY, // face savoring delicious food
|
||||
CLAP, // hand clapping
|
||||
FEAR, // face screaming in fear
|
||||
HORNS, // smiling face with horns
|
||||
HALO, // smiling face with halo
|
||||
BYE, // waving hand
|
||||
SUN, // sun
|
||||
MOON, // moon
|
||||
SKULL, // skull
|
||||
};
|
||||
|
||||
const uint32_t PROGMEM unicode_map[] = {
|
||||
[GRIN] = 0x1F600,
|
||||
[TJOY] = 0x1F602,
|
||||
[SMILE] = 0x1F601,
|
||||
[HEART] = 0x2764,
|
||||
[EYERT] = 0x1f60d,
|
||||
[CRY] = 0x1f62d,
|
||||
[SMEYE] = 0x1F60A,
|
||||
[UNAMU] = 0x1F612,
|
||||
[KISS] = 0x1F618,
|
||||
[HART2] = 0x1F495,
|
||||
[WEARY] = 0x1F629,
|
||||
[OKHND] = 0x1F44C,
|
||||
[PENSV] = 0x1F614,
|
||||
[SMIRK] = 0x1F60F,
|
||||
[RECYC] = 0x267B,
|
||||
[WINK] = 0x1F609,
|
||||
[THMUP] = 0x1F44D,
|
||||
[THMDN] = 0x1F44E,
|
||||
[PRAY] = 0x1F64F,
|
||||
[PHEW] = 0x1F60C,
|
||||
[MUSIC] = 0x1F3B6,
|
||||
[FLUSH] = 0x1F633,
|
||||
[CELEB] = 0x1F64C,
|
||||
[CRY2] = 0x1F622,
|
||||
[COOL] = 0x1F60E,
|
||||
[NOEVS] = 0x1F648,
|
||||
[NOEVH] = 0x1F649,
|
||||
[NOEVK] = 0x1F64A,
|
||||
[POO] = 0x1F4A9,
|
||||
[EYES] = 0x1F440,
|
||||
[VIC] = 0x270C,
|
||||
[BHART] = 0x1F494,
|
||||
[SLEEP] = 0x1F634,
|
||||
[SMIL2] = 0x1F605,
|
||||
[HUNRD] = 0x1F4AF,
|
||||
[CONFU] = 0x1F615,
|
||||
[TONGU] = 0x1F61C,
|
||||
[DISAP] = 0x1F61E,
|
||||
[YUMMY] = 0x1F60B,
|
||||
[CLAP] = 0x1F44F,
|
||||
[FEAR] = 0x1F631,
|
||||
[HORNS] = 0x1F608,
|
||||
[HALO] = 0x1F607,
|
||||
[BYE] = 0x1F44B,
|
||||
[SUN] = 0x2600,
|
||||
[MOON] = 0x1F314,
|
||||
[SKULL] = 0x1F480,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* qwerty */
|
||||
[QWE] = KEYMAP(
|
||||
KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
|
||||
MO(EMO), MO(SYS), KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_MNXT, KC_VOLU, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_MPLY, KC_MUTE, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PCMM,
|
||||
KC_MPRV, KC_VOLD, KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, KC_LEFT, TG(MOU), KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LGUI, KC_APP, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, XXXXXXX, KC_P0, KC_PDOT, XXXXXXX
|
||||
),
|
||||
|
||||
/* colemak */
|
||||
[COL] = KEYMAP(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* workman */
|
||||
[WOR] = KEYMAP(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* dvorak */
|
||||
[DVO] = KEYMAP(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* system */
|
||||
[SYS] = KEYMAP(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, LAY_QWE, OS_WIN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, LAY_DVO, _______, _______, _______, _______, LAY_WOR, OS_LIN, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, LAY_COL, _______, _______, _______, OS_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* mouse keys */
|
||||
[MOU] = KEYMAP(
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, KC_BTN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, KC_BTN5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, _______, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_BTN1, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
/* emoji */
|
||||
[EMO] = KEYMAP(
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY), X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN), X(HEART),X(BYE), X(KISS), X(CELEB),X(COOL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,X(SLEEP),X(CLAP), X(CRY), X(VIC), X(BHART),X(SUN), X(SMEYE),X(WINK), X(MOON), X(CONFU), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
/*
|
||||
[XXX] = KEYMAP(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
void persistant_default_layer_set(uint16_t default_layer) {
|
||||
eeconfig_update_default_layer(default_layer);
|
||||
default_layer_set(default_layer);
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
/* layout switcher */
|
||||
case LAY_QWE:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<QWE);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LAY_COL:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<COL);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LAY_WOR:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<WOR);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LAY_DVO:
|
||||
if (record->event.pressed) {
|
||||
persistant_default_layer_set(1UL<<DVO);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
/* os switcher */
|
||||
case OS_LIN:
|
||||
set_unicode_input_mode(UC_LNX);
|
||||
return false;
|
||||
break;
|
||||
case OS_WIN:
|
||||
set_unicode_input_mode(UC_WINC);
|
||||
return false;
|
||||
break;
|
||||
case OS_MAC:
|
||||
set_unicode_input_mode(UC_OSX);
|
||||
return false;
|
||||
break;
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user() {
|
||||
set_unicode_input_mode(UC_LNX);
|
||||
}
|
33
keyboards/converter/ibm_terminal/led.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
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 "ps2.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
void led_set(uint8_t usb_led)
|
||||
{
|
||||
uint8_t ps2_led = 0;
|
||||
if (usb_led & (1<<USB_LED_SCROLL_LOCK))
|
||||
ps2_led |= (1<<PS2_LED_SCROLL_LOCK);
|
||||
if (usb_led & (1<<USB_LED_NUM_LOCK))
|
||||
ps2_led |= (1<<PS2_LED_NUM_LOCK);
|
||||
if (usb_led & (1<<USB_LED_CAPS_LOCK))
|
||||
ps2_led |= (1<<PS2_LED_CAPS_LOCK);
|
||||
ps2_host_set_led(ps2_led);
|
||||
}
|
237
keyboards/converter/ibm_terminal/matrix.c
Normal file
@@ -0,0 +1,237 @@
|
||||
/*
|
||||
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 <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include "print.h"
|
||||
#include "util.h"
|
||||
#include "debug.h"
|
||||
#include "ps2.h"
|
||||
#include "matrix.h"
|
||||
|
||||
#define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
|
||||
#define print_matrix_header() print("\nr/c 01234567\n")
|
||||
#define matrix_bitpop(i) bitpop(matrix[i])
|
||||
#define ROW_SHIFTER ((uint8_t)1)
|
||||
|
||||
|
||||
static void matrix_make(uint8_t code);
|
||||
static void matrix_break(uint8_t code);
|
||||
|
||||
|
||||
/*
|
||||
* Matrix Array usage:
|
||||
* 'Scan Code Set 3' is assigned into 17x8 cell matrix.
|
||||
*
|
||||
* 8bit wide
|
||||
* +---------+
|
||||
* 0| |
|
||||
* :| | 0x00-0x87
|
||||
* ;| |
|
||||
* 17| |
|
||||
* +---------+
|
||||
*/
|
||||
static uint8_t matrix[MATRIX_ROWS];
|
||||
#define ROW(code) (code>>3)
|
||||
#define COL(code) (code&0x07)
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
void matrix_init(void)
|
||||
{
|
||||
debug_enable = true;
|
||||
//debug_matrix = true;
|
||||
//debug_keyboard = true;
|
||||
//debug_mouse = false;
|
||||
|
||||
ps2_host_init();
|
||||
|
||||
// initialize matrix state: all keys off
|
||||
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
|
||||
|
||||
matrix_init_user();
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t matrix_scan(void)
|
||||
{
|
||||
|
||||
// scan code reading states
|
||||
static enum {
|
||||
RESET,
|
||||
RESET_RESPONSE,
|
||||
KBD_ID0,
|
||||
KBD_ID1,
|
||||
CONFIG,
|
||||
READY,
|
||||
F0,
|
||||
} state = RESET;
|
||||
|
||||
uint8_t code;
|
||||
if ((code = ps2_host_recv())) {
|
||||
debug("r"); debug_hex(code); debug(" ");
|
||||
}
|
||||
|
||||
switch (state) {
|
||||
case RESET:
|
||||
debug("wFF ");
|
||||
if (ps2_host_send(0xFF) == 0xFA) {
|
||||
debug("[ack]\nRESET_RESPONSE: ");
|
||||
state = RESET_RESPONSE;
|
||||
}
|
||||
break;
|
||||
case RESET_RESPONSE:
|
||||
if (code == 0xAA) {
|
||||
debug("[ok]\nKBD_ID: ");
|
||||
state = KBD_ID0;
|
||||
} else if (code) {
|
||||
debug("err\nRESET: ");
|
||||
state = RESET;
|
||||
}
|
||||
break;
|
||||
// after reset receive keyboad ID(2 bytes)
|
||||
case KBD_ID0:
|
||||
if (code) {
|
||||
state = KBD_ID1;
|
||||
}
|
||||
break;
|
||||
case KBD_ID1:
|
||||
if (code) {
|
||||
debug("\nCONFIG: ");
|
||||
state = CONFIG;
|
||||
}
|
||||
break;
|
||||
case CONFIG:
|
||||
debug("wF8 ");
|
||||
if (ps2_host_send(0xF8) == 0xFA) {
|
||||
debug("[ack]\nREADY\n");
|
||||
state = READY;
|
||||
}
|
||||
break;
|
||||
case READY:
|
||||
switch (code) {
|
||||
case 0x00:
|
||||
break;
|
||||
case 0xF0:
|
||||
state = F0;
|
||||
debug(" ");
|
||||
break;
|
||||
default: // normal key make
|
||||
if (code < 0x88) {
|
||||
matrix_make(code);
|
||||
} else {
|
||||
debug("unexpected scan code at READY: "); debug_hex(code); debug("\n");
|
||||
}
|
||||
state = READY;
|
||||
debug("\n");
|
||||
}
|
||||
break;
|
||||
case F0: // Break code
|
||||
switch (code) {
|
||||
case 0x00:
|
||||
break;
|
||||
default:
|
||||
if (code < 0x88) {
|
||||
matrix_break(code);
|
||||
} else {
|
||||
debug("unexpected scan code at F0: "); debug_hex(code); debug("\n");
|
||||
}
|
||||
state = READY;
|
||||
debug("\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_get_row(uint8_t row)
|
||||
{
|
||||
return matrix[row];
|
||||
}
|
||||
|
||||
inline
|
||||
static void matrix_make(uint8_t code)
|
||||
{
|
||||
if (!matrix_is_on(ROW(code), COL(code))) {
|
||||
matrix[ROW(code)] |= 1<<COL(code);
|
||||
}
|
||||
}
|
||||
|
||||
inline
|
||||
static void matrix_break(uint8_t code)
|
||||
{
|
||||
if (matrix_is_on(ROW(code), COL(code))) {
|
||||
matrix[ROW(code)] &= ~(1<<COL(code));
|
||||
}
|
||||
}
|
||||
|
||||
bool matrix_is_on(uint8_t row, uint8_t col)
|
||||
{
|
||||
return (matrix_get_row(row) & (1<<col));
|
||||
}
|
||||
|
||||
void matrix_print(void)
|
||||
{
|
||||
#if (MATRIX_COLS <= 8)
|
||||
print("r/c 01234567\n");
|
||||
#elif (MATRIX_COLS <= 16)
|
||||
print("r/c 0123456789ABCDEF\n");
|
||||
#elif (MATRIX_COLS <= 32)
|
||||
print("r/c 0123456789ABCDEF0123456789ABCDEF\n");
|
||||
#endif
|
||||
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||
|
||||
#if (MATRIX_COLS <= 8)
|
||||
xprintf("%02X: %08b%s\n", row, bitrev(matrix_get_row(row)),
|
||||
#elif (MATRIX_COLS <= 16)
|
||||
xprintf("%02X: %016b%s\n", row, bitrev16(matrix_get_row(row)),
|
||||
#elif (MATRIX_COLS <= 32)
|
||||
xprintf("%02X: %032b%s\n", row, bitrev32(matrix_get_row(row)),
|
||||
#endif
|
||||
#ifdef MATRIX_HAS_GHOST
|
||||
matrix_has_ghost_in_row(row) ? " <ghost" : ""
|
||||
#else
|
||||
""
|
||||
#endif
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MATRIX_HAS_GHOST
|
||||
__attribute__ ((weak))
|
||||
bool matrix_has_ghost_in_row(uint8_t row)
|
||||
{
|
||||
matrix_row_t matrix_row = matrix_get_row(row);
|
||||
// No ghost exists when less than 2 keys are down on the row
|
||||
if (((matrix_row - 1) & matrix_row) == 0)
|
||||
return false;
|
||||
|
||||
// Ghost occurs when the row shares column line with other row
|
||||
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
||||
if (i != row && (matrix_get_row(i) & matrix_row))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
72
keyboards/converter/ibm_terminal/rules.mk
Normal file
@@ -0,0 +1,72 @@
|
||||
# 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)
|
||||
|
||||
# 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
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
||||
NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
UNICODEMAP_ENABLE ?= yes
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
PS2_USE_USART ?= yes
|
||||
API_SYSEX_ENABLE ?= n
|
||||
CUSTOM_MATRIX = yes
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
|
||||
SRC = matrix.c led.c
|
0
keyboards/converter/rules.mk
Normal file
@@ -1,10 +1,11 @@
|
||||
#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
|
||||
#define KEYBOARDS_ERGODOX_CONFIG_H_
|
||||
|
||||
#define MOUSEKEY_DELAY 100
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
#define MOUSEKEY_TIME_TO_MAX 10
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#define MOUSEKEY_TIME_TO_MAX 5
|
||||
#define MOUSEKEY_MAX_SPEED 2
|
||||
#define MOUSEKEY_WHEEL_DELAY 0
|
||||
|
||||
#define TAPPING_TOGGLE 1
|
||||
|
||||
@@ -33,4 +34,4 @@
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
|
||||
#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
|
@@ -0,0 +1,4 @@
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
|
@@ -1,3 +1,8 @@
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
RGBLIGHT_ENABLE ?= yes
|
||||
MIDI_ENABLE ?= no
|
||||
|
||||
ifndef MAKEFILE_INCLUDED
|
||||
include ../../../Makefile
|
||||
endif
|
||||
endif
|
||||
|
@@ -21,6 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "../config.h"
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x1307
|
||||
@@ -39,10 +41,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define LED_BRIGHTNESS_LO 15
|
||||
#define LED_BRIGHTNESS_HI 255
|
||||
|
||||
/* ws2812 RGB LED */
|
||||
#define RGB_DI_PIN D7
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 15 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 12
|
||||
#define RGBLIGHT_SAT_STEP 255
|
||||
#define RGBLIGHT_VAL_STEP 12
|
||||
|
||||
// #define RGB_MIDI
|
||||
#define RGBW_BB_TWI
|
||||
|
||||
#define RGBW 1
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define USB_MAX_POWER_CONSUMPTION 500
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
|
@@ -16,10 +16,10 @@ void matrix_init_kb(void) {
|
||||
// unused pins - C7, D4, D5, D7, E6
|
||||
// set as input with internal pull-ip enabled
|
||||
DDRC &= ~(1<<7);
|
||||
DDRD &= ~(1<<7 | 1<<5 | 1<<4);
|
||||
DDRD &= ~(1<<5 | 1<<4);
|
||||
DDRE &= ~(1<<6);
|
||||
PORTC |= (1<<7);
|
||||
PORTD |= (1<<7 | 1<<5 | 1<<4);
|
||||
PORTD |= (1<<5 | 1<<4);
|
||||
PORTE |= (1<<6);
|
||||
|
||||
ergodox_blink_all_leds();
|
||||
@@ -51,6 +51,10 @@ uint8_t init_mcp23018(void) {
|
||||
mcp23018_status = 0x20;
|
||||
|
||||
// I2C subsystem
|
||||
|
||||
// uint8_t sreg_prev;
|
||||
// sreg_prev=SREG;
|
||||
// cli();
|
||||
if (i2c_initialized == 0) {
|
||||
i2c_init(); // on pins D(1,0)
|
||||
i2c_initialized++;
|
||||
@@ -79,7 +83,30 @@ uint8_t init_mcp23018(void) {
|
||||
out:
|
||||
i2c_stop();
|
||||
|
||||
// SREG=sreg_prev;
|
||||
|
||||
return mcp23018_status;
|
||||
}
|
||||
|
||||
|
||||
#ifdef ONEHAND_ENABLE
|
||||
__attribute__ ((weak))
|
||||
// swap-hands action needs a matrix to define the swap
|
||||
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Left hand, matrix positions */
|
||||
{{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}},
|
||||
{{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}},
|
||||
{{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}},
|
||||
{{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}},
|
||||
{{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}},
|
||||
{{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}},
|
||||
{{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}},
|
||||
/* Right hand, matrix positions */
|
||||
{{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}},
|
||||
{{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}},
|
||||
{{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}},
|
||||
{{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}},
|
||||
{{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}},
|
||||
{{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}},
|
||||
{{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}},
|
||||
};
|
||||
#endif
|
||||
|
@@ -121,7 +121,7 @@ void matrix_init(void)
|
||||
matrix_scan_count = 0;
|
||||
#endif
|
||||
|
||||
matrix_init_kb();
|
||||
matrix_init_quantum();
|
||||
|
||||
}
|
||||
|
||||
|
@@ -71,6 +71,10 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
||||
SLEEP_LED_ENABLE = no
|
||||
API_SYSEX_ENABLE ?= no
|
||||
RGBLIGHT_ENABLE ?= yes
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../Makefile
|
||||
endif
|
||||
|
@@ -38,7 +38,6 @@ void init_serial_link_hal(void) {
|
||||
// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced
|
||||
// Which will reduce the brightness range
|
||||
#define PRESCALAR_DEFINE 0
|
||||
#ifdef VISUALIZER_ENABLE
|
||||
void lcd_backlight_hal_init(void) {
|
||||
// Setup Backlight
|
||||
SIM->SCGC6 |= SIM_SCGC6_FTM0;
|
||||
@@ -76,7 +75,6 @@ void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
|
||||
CHANNEL_GREEN.CnV = g;
|
||||
CHANNEL_BLUE.CnV = b;
|
||||
}
|
||||
#endif
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
@@ -92,6 +90,10 @@ void matrix_init_kb(void) {
|
||||
// runs once when the firmware starts up
|
||||
|
||||
matrix_init_user();
|
||||
// The backlight always has to be initialized, otherwise it will stay lit
|
||||
#ifndef VISUALIZER_ENABLE
|
||||
lcd_backlight_hal_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
|
@@ -21,29 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
void led_set(uint8_t usb_led) {
|
||||
// The LCD backlight functionality conflicts with this simple
|
||||
// red backlight
|
||||
#if !defined(LCD_BACKLIGHT_ENABLE) && defined(STATUS_LED_ENABLE)
|
||||
// PTC1: LCD Backlight Red(0:on/1:off)
|
||||
GPIOC->PDDR |= (1<<1);
|
||||
PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
||||
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||
GPIOC->PCOR |= (1<<1);
|
||||
} else {
|
||||
GPIOC->PSOR |= (1<<1);
|
||||
}
|
||||
#elif !defined(LCD_BACKLIGHT_ENABLE)
|
||||
//TODO: Add led emulation if there's no customized visualization
|
||||
(void)usb_led;
|
||||
GPIOC->PDDR |= (1<<1);
|
||||
PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
||||
GPIOC->PSOR |= (1<<1);
|
||||
GPIOC->PDDR |= (1<<2);
|
||||
PORTC->PCR[2] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
||||
GPIOC->PSOR |= (1<<2);
|
||||
GPIOC->PDDR |= (1<<3);
|
||||
PORTC->PCR[3] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
||||
GPIOC->PSOR |= (1<<3);
|
||||
#else
|
||||
(void)usb_led;
|
||||
#endif
|
||||
}
|
||||
|
@@ -63,6 +63,8 @@ VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile
|
||||
LCD_ENABLE ?= yes
|
||||
LED_ENABLE ?= yes
|
||||
LCD_BACKLIGHT_ENABLE ?= yes
|
||||
MIDI_ENABLE = no
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../Makefile
|
||||
|
@@ -8,7 +8,7 @@ Beginner's keymap emulates standard QWERTY keyboard for beginners. Once you get
|
||||
* Easy on beginners. It has everything you need for your day to day usage.
|
||||
|
||||
#### Cons
|
||||
* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/jackhumbert/qmk_firmware/blob/master/keyboards/ergodox_ez/keymaps/default/readme.md)
|
||||
* Keys are not ergonomically placed to take full advantage of Ergodox-EZ. Take a look at this [Default Keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox_ez/keymaps/default/readme.md)
|
||||
* While multiple layers are possible, beginner's keymap only uses one additional layer for mouse, function and volume keys.
|
||||
|
||||
#### Notes
|
||||
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
@@ -15,9 +15,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
|
||||
* | BkSp | A/L2 | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
|
||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
||||
* | LS/PO |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RS/PC |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
|
||||
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
||||
KC_BSPC, LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||
KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
||||
ALT_T(KC_APP), KC_LGUI,
|
||||
KC_HOME,
|
||||
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
|
||||
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
||||
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSPC,
|
||||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
|
||||
KC_LALT, CTL_T(KC_ESC),
|
||||
KC_PGUP,
|
||||
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | | | MsUp | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
||||
* | | |MsLeft|MsDown|MsRght| |------| |------| left | down | up | down | | Play |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | | Prev | Next | | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | |Brwser|
|
||||
* | | |------| |------| |Back |
|
||||
* | Lclk | Rclk |------| |------| |Back |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
|
@@ -2,6 +2,9 @@
|
||||
|
||||
## Changelog
|
||||
|
||||
|
||||
* Sept. 14, 2016 (V0.2):
|
||||
* Added Space Cadet to Left and Right Shift. Pressing Left shift with no other key adds an "(" and pressing Right shift with no other key adds an ")"
|
||||
* Sept. 8, 2016 (V0.1):
|
||||
* Made A key double as MEDIA Layer change when you hold it. Added mouse buttons to the large thumb buttons on the left side on the Media Layer. Added vi/vim style arrow keys on HJKL on media layer.
|
||||
|
||||
|
5
keyboards/ergodox/keymaps/albert/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
12
keyboards/ergodox/keymaps/albert/config.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
/* using UK layout for space-cadet-shift */
|
||||
#define LSPO_KEY KC_9
|
||||
#define RSPC_KEY KC_0
|
||||
|
||||
#define LEADER_TIMEOUT 800 // leader key sequence timeout in millis
|
||||
|
||||
#endif
|
661
keyboards/ergodox/keymaps/albert/keymap.c
Normal file
@@ -0,0 +1,661 @@
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "version.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
/* use UK keymap */
|
||||
|
||||
#define UK_HASH KC_NONUS_HASH
|
||||
#define UK_BSLS KC_NONUS_BSLASH
|
||||
#define UK_PIPE LSFT(UK_BSLS)
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define SYMB 1 // symbols
|
||||
#define NUMB 2 // numbers and hex
|
||||
#define CRSR 3 // cursor keys
|
||||
#define MOUS 4 // mouse keys
|
||||
#define KEYW 5 // keyword macros
|
||||
#define EMAC 6 // emacs
|
||||
|
||||
// my macros
|
||||
#define UM_ECET M(0) // { }
|
||||
#define UM_0x M(1)
|
||||
#define UM_PUB M(2)
|
||||
#define UM_PRO M(3)
|
||||
#define UM_PRV M(4)
|
||||
#define UM_CLS M(5)
|
||||
#define UM_STR M(6)
|
||||
#define UM_RET M(7)
|
||||
#define UM_INC M(8)
|
||||
#define UM_OBJ M(9)
|
||||
#define UM_GITLOG M(10)
|
||||
#define UM_GOODM M(11)
|
||||
#define UM_NAMESP M(12)
|
||||
#define UM_EMTR M(14) // emacs toggle read-only
|
||||
#define UM_EMWR M(15) // emacs write buffer (save)
|
||||
#define UM_EMUN M(16) // emacs undo
|
||||
#define UM_EMRE M(17) // emacs redo
|
||||
#define UM_EMPB M(18) // emacs previous buffer
|
||||
#define UM_EMNB M(19) // emacs next buffer
|
||||
#define UM_GOODN M(20)
|
||||
#define UM_ECETS M(22) // { };
|
||||
#define UM_TMPL M(23)
|
||||
#define UM_TYPN M(24)
|
||||
#define UM_CONT M(25)
|
||||
#define UM_BREAK M(26)
|
||||
#define UM_CONST M(27)
|
||||
#define UM_SMILY M(28)
|
||||
#define UM_SADF M(29)
|
||||
#define UM_SCARF M(30)
|
||||
#define UM_DECAF M(31)
|
||||
#define UM_OPER M(32)
|
||||
#define UM_NULP M(33)
|
||||
#define UM_EXTR M(34)
|
||||
#define UM_VIRT M(35)
|
||||
#define UM_EMFB M(36) // emacs font bigger
|
||||
#define UM_EMFS M(37) // emacs font smaller
|
||||
#define UM_VOLAT M(38)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap 0: Base layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | SfLt | | SfRt | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Del |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | Caps/L2| A | S | D | F | G |------| |------| H | J | K | L | ; |Enter/L2|
|
||||
* |--------+------+------+------+------+------| L6 | | L6 |------+------+------+------+------+--------|
|
||||
* | LSft/( | Z | X | C | V/L3 | B/L4 | | | | N/L4 | M/L3 | , | . | / | RSft/) |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* |Ctrl/[| Alt/]| # | Left |Right | | Up | Down | - | Alt/[|Ctrl/]|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | L2 | lead | | lead | Ins |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | Space| BkSp | Home | | PgUp | Enter|Space |
|
||||
* | / | / |------| |------| / | / |
|
||||
* | Ctrl | Alt |End/L5| |PDn/L5| Alt | Ctrl |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[BASE] = KEYMAP( // layer 0 : default
|
||||
// left hand
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_LEFT),
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(SYMB),
|
||||
LT(NUMB, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, LT(CRSR, KC_V), LT(MOUS, KC_B), MO(EMAC),
|
||||
CTL_T(KC_LBRC), ALT_T(KC_RBRC), UK_HASH, KC_LEFT, KC_RGHT,
|
||||
TG(NUMB), KC_LEAD,
|
||||
KC_HOME,
|
||||
CTL_T(KC_SPC), ALT_T(KC_BSPC), LT(KEYW, KC_END),
|
||||
// right hand
|
||||
LSFT(KC_RGHT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
MO(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DELT,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(NUMB, KC_ENT),
|
||||
MO(EMAC), LT(MOUS, KC_N), LT(CRSR, KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
|
||||
KC_UP, KC_DOWN, KC_MINS, ALT_T(KC_LBRC), CTL_T(KC_RBRC),
|
||||
KC_LEAD, KC_INS,
|
||||
KC_PGUP,
|
||||
LT(KEYW, KC_PGDN), ALT_T(KC_ENT), CTL_T(KC_SPC)
|
||||
),
|
||||
/* Keymap 1: Symbol Layer with F keys
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ## | F1 | F2 | F3 | F4 | F5 | ## | | ## | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||
* | ## | ! | " | £ | $ | % | ## | | ## | - | + | = | @ | ~ | F12 |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | ## | ^ | & | * | _ | # |------| |------| { | } | ; | ' | # | ## |
|
||||
* |--------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
|
||||
* | ## | \ | | | ` | - | / | | | | [ | ] | < | > | ? | ## |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | ## | ## | ## | ## | ## | | ## | ## | ## | ## | ## |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | ## | ## | | ## | ## |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | ## | | ## | | |
|
||||
* | ## | ## |------| |------| ## | ## |
|
||||
* | | | ## | | ## | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[SYMB] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||
KC_TRNS, KC_EXLM, LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), KC_TRNS,
|
||||
KC_TRNS, LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_MINS), UK_HASH,
|
||||
KC_TRNS, UK_BSLS, UK_PIPE, KC_GRV, KC_MINS, KC_SLSH, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
// right hand
|
||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_TRNS, KC_MINS, KC_PLUS, KC_EQL, LSFT(KC_QUOT), LSFT(UK_HASH), KC_F12,
|
||||
KC_LCBR, KC_RCBR, KC_SCLN, KC_QUOT, UK_HASH, KC_TRNS,
|
||||
KC_TRNS, KC_LBRC, KC_RBRC, LSFT(KC_COMM), LSFT(KC_DOT), LSFT(KC_SLSH), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
/* Keymap 2: Numerics and hex
|
||||
*
|
||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
||||
* | ## | A | B | C | D | E | F | | A | B | C | D | E | F | ## |
|
||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||
* | ## | * | 7 | 8 | 9 | * | 0x | | 0x | * | 7 | 8 | 9 | * | ## |
|
||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | ## | / | 4 | 5 | 6 | / |------| |------| / | 4 | 5 | 6 | / | ## |
|
||||
* |---------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
|
||||
* | ## | - | 1 | 2 | 3 | - | | | | - | 1 | 2 | 3 | - | ## |
|
||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | = | + | 0 | , | . | | 0 | , | . | + | = |
|
||||
* `-----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | ## | ## | | ## | ## |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | ## | | ## | | |
|
||||
* | ## | ## |------| |------| ## | ## |
|
||||
* | | | ## | | ## | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[NUMB] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
|
||||
KC_TRNS, KC_ASTR, KC_7, KC_8, KC_9, KC_ASTR, UM_0x,
|
||||
KC_TRNS, KC_SLSH, KC_4, KC_5, KC_6, KC_SLSH,
|
||||
KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS,
|
||||
KC_EQL, KC_PLUS, KC_0, KC_COMM, KC_DOT,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
// right hand
|
||||
KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_TRNS,
|
||||
UM_0x, KC_ASTR, KC_7, KC_8, KC_9, KC_ASTR, KC_TRNS,
|
||||
KC_SLSH, KC_4, KC_5, KC_6, KC_SLSH, KC_TRNS,
|
||||
KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_MINS, KC_TRNS,
|
||||
KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_EQL,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
/* Keymap 3: Cursor movement
|
||||
*
|
||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||
* | | Home | | Up | | PgUp | | | | PgUp | | Up | | Home | |
|
||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | End | Left | Down | Right| PgDn |------| |------| PgDn | Left | Down | Right| End | |
|
||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | ## | Up | | Down | ## | | | | | | ## | Down | | Up | ## |
|
||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | Left | Down | Right| | | | | | Left | Down | Right|
|
||||
* `-----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | ## | ## |------| |------| ## | ## |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[CRSR] = KEYMAP(
|
||||
// left hand
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_HOME, KC_NO, KC_UP, KC_NO, KC_PGUP, KC_NO,
|
||||
KC_NO, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN,
|
||||
KC_TRNS, KC_UP, KC_NO, KC_DOWN, KC_TRNS, KC_NO, KC_NO,
|
||||
KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
KC_NO,
|
||||
KC_TRNS, KC_TRNS, KC_NO,
|
||||
// right hand
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_PGUP, KC_NO, KC_UP, KC_NO, KC_HOME, KC_NO,
|
||||
KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_NO,
|
||||
KC_NO, KC_NO, KC_TRNS, KC_DOWN, KC_NO, KC_UP, KC_TRNS,
|
||||
KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT,
|
||||
KC_NO, KC_NO,
|
||||
KC_NO,
|
||||
KC_NO, KC_TRNS, KC_TRNS
|
||||
),
|
||||
/* Keymap 4: Media and mouse keys
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | | Lclk | MsUp | Rclk | | | | | | Lclk | MsUp | Rclk | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | |MsLeft|MsDown|MsRght| |------| |------| |MsLeft|MsDown|MsRght| | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | Lclk | MsUp | Rclk |MsDown| | ## | | | | ## | |MsDown| Lclk | MsUp | Rclk |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* |MsLeft|MsDown|MsRight | | | | |MsLeft|MsDown|MsRght|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[MOUS] = KEYMAP(
|
||||
// left hand
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO,
|
||||
KC_BTN1, KC_MS_U, KC_BTN2, KC_MS_D, KC_NO, KC_TRNS, KC_NO,
|
||||
KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
KC_NO,
|
||||
KC_NO, KC_NO, KC_NO,
|
||||
// right hand
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
|
||||
KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
|
||||
KC_NO, KC_TRNS, KC_NO, KC_MS_D, KC_BTN1, KC_MS_U, KC_BTN2,
|
||||
KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R,
|
||||
KC_NO, KC_NO,
|
||||
KC_NO,
|
||||
KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
/* Keymap 5: Keywords
|
||||
*
|
||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | scarf| sadf | smily| | | | decaf| | | | | |
|
||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||
* | | const| volat| oper | ret | tmpl | | | | typen| cont | prv | pro | pub | |
|
||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | str | obj | | gitl |------| |------| | | | nulp | | |
|
||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | extr | cls | virt | break| | | |namesp| goodm| goodn| | | |
|
||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | inc | | | | | | | | |
|
||||
* `-----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | ecet | ecets|
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | ## | | ## | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[KEYW] = KEYMAP(
|
||||
// left hand
|
||||
KC_NO, KC_NO, KC_NO, UM_SCARF, UM_SADF, UM_SMILY, KC_NO,
|
||||
KC_NO, UM_CONST, UM_VOLAT, UM_OPER, UM_RET, UM_TMPL, KC_NO,
|
||||
KC_NO, KC_NO, UM_STR, UM_OBJ, KC_NO, UM_GITLOG,
|
||||
KC_NO, KC_NO, UM_EXTR, UM_CLS, UM_VIRT, UM_BREAK, KC_NO,
|
||||
KC_NO, KC_NO, UM_INC, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
KC_NO,
|
||||
KC_NO, KC_NO, KC_TRNS,
|
||||
// right hand
|
||||
KC_NO, UM_DECAF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, UM_TYPN, UM_CONT, UM_PRV, UM_PRO, UM_PUB, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, UM_NULP, KC_NO, KC_NO,
|
||||
KC_NO, UM_NAMESP, UM_GOODM, UM_GOODN, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
UM_ECET, UM_ECETS,
|
||||
KC_NO,
|
||||
KC_TRNS, KC_NO, KC_NO
|
||||
),
|
||||
/* Keymap 6: emacs
|
||||
*
|
||||
* ,---------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | | | | empb | | emnb | emfs | emfb | | | | |
|
||||
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||
* | | emtr | | | | | | | | emun | emre | w-up | | | |
|
||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | emwr | | | |------| |------| |w-left|w-down|w-rght| | |
|
||||
* |---------+------+------+------+------+------| ## | | ## |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | |w-down| | | |
|
||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[EMAC] = KEYMAP(
|
||||
// left hand
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, UM_EMPB,
|
||||
KC_NO, UM_EMTR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, UM_EMWR, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
KC_NO,
|
||||
KC_NO, KC_NO, KC_NO,
|
||||
// right hand
|
||||
UM_EMNB, UM_EMFS, UM_EMFB, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, UM_EMUN, UM_EMRE, LSFT(KC_UP), KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_RGHT), KC_NO, KC_NO,
|
||||
KC_TRNS, KC_NO, KC_NO, LSFT(KC_DOWN), 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
|
||||
),
|
||||
};
|
||||
|
||||
enum next_key_down_up {
|
||||
NK_DOWN_UP,
|
||||
NK_DOWN,
|
||||
NK_UP // a bit of a hack, this works as long as NK_UP < KC_A
|
||||
};
|
||||
|
||||
void send_keystrokes(uint8_t key, ...)
|
||||
{
|
||||
va_list vl;
|
||||
va_start(vl, key);
|
||||
enum next_key_down_up nkdu = NK_DOWN_UP;
|
||||
while (key != KC_NO) {
|
||||
if (key < KC_A) {
|
||||
nkdu = key;
|
||||
} else {
|
||||
switch (nkdu) {
|
||||
case NK_DOWN_UP:
|
||||
register_code(key);
|
||||
case NK_UP:
|
||||
unregister_code(key);
|
||||
break;
|
||||
case NK_DOWN:
|
||||
register_code(key);
|
||||
}
|
||||
nkdu = NK_DOWN_UP;
|
||||
}
|
||||
key = va_arg(vl, int);
|
||||
}
|
||||
va_end(vl);
|
||||
}
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
switch(id) {
|
||||
case 0: // { }
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
||||
D(LSFT), T(RBRC), U(LSFT), T(UP),
|
||||
T(TAB), END);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(0), T(X), END);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("public");
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("protected");
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("private");
|
||||
}
|
||||
break;
|
||||
case 5: // class
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(C), T(L), T(A), T(S), T(S), T(ENT),
|
||||
D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
||||
T(P), T(U), T(B), T(L), T(I), T(C),
|
||||
D(LSFT), T(SCLN), U(LSFT), T(ENT), T(ENT),
|
||||
T(P), T(R), T(I), T(V), T(A), T(T), T(E),
|
||||
D(LSFT), T(SCLN), U(LSFT), T(ENT),
|
||||
D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
|
||||
T(UP), T(UP), T(UP), T(UP), T(UP), T(UP), T(UP),
|
||||
T(END), T(SPC), END);
|
||||
}
|
||||
break;
|
||||
case 6: // struct
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(S), T(T), T(R), T(U), T(C), T(T), T(ENT),
|
||||
D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
||||
D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(ENT),
|
||||
T(UP), T(UP), T(UP), T(UP),
|
||||
T(END), T(SPC), END);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("return");
|
||||
}
|
||||
break;
|
||||
case 8: // #include
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(NONUS_HASH), T(I), T(N), T(C), T(L), T(U), T(D), T(E), END);
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("objdump -CT -x -d");
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("git log --oneline --graph --decorate=short");
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("good morning");
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("namespace");
|
||||
}
|
||||
break;
|
||||
case 14: // emacs toggle read-only
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(X), T(Q), U(LCTL), END);
|
||||
}
|
||||
break;
|
||||
case 15: // emacs write buffer
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(X), T(S), U(LCTL), END);
|
||||
}
|
||||
break;
|
||||
case 16: // emacs undo
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), D(LSFT), T(MINS), U(LSFT), U(LCTL), END);
|
||||
}
|
||||
break;
|
||||
case 17: // emacs redo
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LALT), D(LSFT), T(MINS), U(LSFT), U(LALT), END);
|
||||
}
|
||||
break;
|
||||
case 18: // emacs previous buffer
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(X), U(LCTL), T(LEFT), END);
|
||||
}
|
||||
break;
|
||||
case 19: // emacs next buffer
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(X), U(LCTL), T(RGHT), END);
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("good night");
|
||||
}
|
||||
break;
|
||||
case 22: // { };
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(ENT), D(LSFT), T(LBRC), U(LSFT), T(ENT),
|
||||
D(LSFT), T(RBRC), U(LSFT), T(SCLN), T(UP),
|
||||
T(TAB), END);
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("template");
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("typename");
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("continue");
|
||||
return MACRO(T(SCLN), END);
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("break");
|
||||
return MACRO(T(SCLN), END);
|
||||
}
|
||||
break;
|
||||
case 27:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("const");
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(":-)");
|
||||
}
|
||||
break;
|
||||
case 29:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(":-(");
|
||||
}
|
||||
break;
|
||||
case 30: // dazed
|
||||
if (record->event.pressed) {
|
||||
send_keystrokes(NK_DOWN, KC_LSFT, KC_8, KC_MINS, KC_8, NK_UP, KC_LSFT, KC_NO);
|
||||
}
|
||||
break;
|
||||
case 31: // decaf
|
||||
if (record->event.pressed) {
|
||||
send_keystrokes(NK_DOWN, KC_LSFT, KC_C, KC_9, KC_MINS, KC_0, NK_UP, KC_LSFT, KC_NO);
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("operator");
|
||||
}
|
||||
break;
|
||||
case 33:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("nullptr");
|
||||
}
|
||||
break;
|
||||
case 34:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("extern");
|
||||
}
|
||||
break;
|
||||
case 35:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("virtual");
|
||||
}
|
||||
break;
|
||||
case 36: // emacs font smaller
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(X), T(EQL), U(LCTL), END);
|
||||
}
|
||||
break;
|
||||
case 37: // emacs font bigger
|
||||
if (record->event.pressed) {
|
||||
return MACRO(D(LCTL), T(X), T(MINS), U(LCTL), END);
|
||||
}
|
||||
break;
|
||||
case 38:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("volatile");
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
}
|
||||
|
||||
LEADER_EXTERNS();
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
LEADER_DICTIONARY() {
|
||||
leading = false;
|
||||
leader_end();
|
||||
|
||||
SEQ_TWO_KEYS(KC_G, KC_A) {
|
||||
SEND_STRING("git add .");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_D) {
|
||||
SEND_STRING("git diff");
|
||||
}
|
||||
SEQ_THREE_KEYS(KC_G, KC_D, KC_S) {
|
||||
SEND_STRING("git diff --staged");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_L) {
|
||||
SEND_STRING("git log");
|
||||
}
|
||||
SEQ_THREE_KEYS(KC_G, KC_L, KC_O) {
|
||||
SEND_STRING("git log --oneline");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_F) {
|
||||
SEND_STRING("git fetch");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_O) {
|
||||
SEND_STRING("git checkout");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_P) {
|
||||
SEND_STRING("git pull");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_S) {
|
||||
SEND_STRING("git status");
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_G, KC_C) {
|
||||
SEND_STRING("git commit -m ''");
|
||||
send_keystrokes(KC_LEFT, KC_NO);
|
||||
}
|
||||
SEQ_THREE_KEYS(KC_G, KC_C, KC_A) {
|
||||
SEND_STRING("git commit --amend");
|
||||
}
|
||||
|
||||
SEQ_TWO_KEYS(KC_C, KC_C) {
|
||||
SEND_STRING("const_cast<>");
|
||||
send_keystrokes(KC_LEFT, KC_NO);
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_C, KC_D) {
|
||||
SEND_STRING("dynamic_cast<>");
|
||||
send_keystrokes(KC_LEFT, KC_NO);
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_C, KC_R) {
|
||||
SEND_STRING("reinterpret_cast<>");
|
||||
send_keystrokes(KC_LEFT, KC_NO);
|
||||
}
|
||||
SEQ_TWO_KEYS(KC_C, KC_S) {
|
||||
SEND_STRING("static_cast<>");
|
||||
send_keystrokes(KC_LEFT, KC_NO);
|
||||
}
|
||||
|
||||
SEQ_ONE_KEY(KC_SLSH) {
|
||||
send_keystrokes(KC_SLSH, NK_DOWN, KC_LSFT, KC_8, KC_8, NK_UP, KC_LSFT, KC_ENT,
|
||||
NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_ENT,
|
||||
NK_DOWN, KC_LSFT, KC_8, NK_UP, KC_LSFT, KC_SLSH, KC_UP, KC_END, KC_SPC,
|
||||
KC_NO);
|
||||
}
|
||||
}
|
||||
}
|
188
keyboards/ergodox/keymaps/albert/readme.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# ErgoDox EZ Configuration for typing like a boss.
|
||||
|
||||
This layout has 7 layers:
|
||||
0. Base layers
|
||||
1. Symbols and F-keys
|
||||
2. Number pad (with hexadecimal)
|
||||
3. Cursor keys
|
||||
4. Mouse movement and clicks
|
||||
5. Keyword macros
|
||||
6. Emacs
|
||||
|
||||
There are also some leader keys defined for frequently used commands (git etc).
|
||||
|
||||
## The layers
|
||||
|
||||
Double hashes (`##`) indicate transparent keys (`KC_TRNS`) and blanks indicate no key (`KC_NO`).
|
||||
|
||||
### 0. Base layer
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ESC | 1 | 2 | 3 | 4 | 5 | SfLt | | SfRt | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||
|--------|------|------|------|------|-------------| |------|------|------|------|------|------|--------|
|
||||
| Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Del |
|
||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| Caps/L2| A | S | D | F | G |------| |------| H | J | K | L | ; |Enter/L2|
|
||||
|--------|------|------|------|------|------| L6 | | L6 |------|------|------|------|------|--------|
|
||||
| LSft/( | Z | X | C | V/L3 | B/L4 | | | | N/L4 | M/L3 | , | . | / | RSft/) |
|
||||
`--------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
|Ctrl/[| Alt/]| # | Left |Right | | Up | Down | - | Alt/[|Ctrl/]|
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| L2 | lead | | lead | Ins |
|
||||
,------|------|------| |------|------|------.
|
||||
| Space| BkSp | Home | | PgUp | Enter|Space |
|
||||
| / | / |------| |------| / | / |
|
||||
| Ctrl | Alt |End/L5| |PDn/L5| Alt | Ctrl |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
Space Cadet shift is enabled. Ctrl and Alt doubles up as normal keys when tapped.
|
||||
SfLt and SfRt sends Shift + left and Shift + Right respectively - for use with emacs with `windmove-default-keybindings`.
|
||||
Caps and Enter may be held down to activate layer 2 (hexadecimal number pad).
|
||||
Please see `matrix_scan_user` function in `keymap.c` for list of commands available via `lead` key.
|
||||
|
||||
### 1. Symbols and F-keys
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| ## | F1 | F2 | F3 | F4 | F5 | ## | | ## | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
|--------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
||||
| ## | ! | " | £ | $ | % | ## | | ## | - | + | = | @ | ~ | F12 |
|
||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| ## | ^ | & | * | _ | # |------| |------| { | } | ; | ' | # | ## |
|
||||
|--------|------|------|------|------|------| ## | | ## |------|------|------|------|------|--------|
|
||||
| ## | \ | | | ` | - | / | | | | [ | ] | < | > | ? | ## |
|
||||
`--------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
| ## | ## | ## | ## | ## | | ## | ## | ## | ## | ## |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| ## | ## | | ## | ## |
|
||||
,------|------|------| |------|------|------.
|
||||
| | | ## | | ## | | |
|
||||
| ## | ## |------| |------| ## | ## |
|
||||
| | | ## | | ## | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
### 2. Number pad (with hexadecimal)
|
||||
|
||||
```
|
||||
,---------------------------------------------------. ,--------------------------------------------------.
|
||||
| ## | A | B | C | D | E | F | | A | B | C | D | E | F | ## |
|
||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
||||
| ## | * | 7 | 8 | 9 | * | 0x | | 0x | * | 7 | 8 | 9 | * | ## |
|
||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| ## | / | 4 | 5 | 6 | / |------| |------| / | 4 | 5 | 6 | / | ## |
|
||||
|---------|------|------|------|------|------| ## | | ## |------|------|------|------|------|--------|
|
||||
| ## | - | 1 | 2 | 3 | - | | | | - | 1 | 2 | 3 | - | ## |
|
||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
| = | + | 0 | , | . | | 0 | , | . | + | = |
|
||||
`-----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| ## | ## | | ## | ## |
|
||||
,------|------|------| |------|------|------.
|
||||
| | | ## | | ## | | |
|
||||
| ## | ## |------| |------| ## | ## |
|
||||
| | | ## | | ## | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
### 3. Cursor keys
|
||||
|
||||
```
|
||||
,---------------------------------------------------. ,--------------------------------------------------.
|
||||
| | | | | | | | | | | | | | | |
|
||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
||||
| | Home | | Up | | PgUp | | | | PgUp | | Up | | Home | |
|
||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| | End | Left | Down | Right| PgDn |------| |------| PgDn | Left | Down | Right| End | |
|
||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| ## | Up | | Down | ## | | | | | | ## | Down | | Up | ## |
|
||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
| Left | Down | Right| | | | | | Left | Down | Right|
|
||||
`-----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------|------|------.
|
||||
| | | | | | | |
|
||||
| ## | ## |------| |------| ## | ## |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
### 4. Mouse movement and clicks
|
||||
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| | | | | | | | | | | | | | | |
|
||||
|--------|------|------|------|------|-------------| |------|------|------|------|------|------|--------|
|
||||
| | | Lclk | MsUp | Rclk | | | | | | Lclk | MsUp | Rclk | | |
|
||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| | |MsLeft|MsDown|MsRght| |------| |------| |MsLeft|MsDown|MsRght| | |
|
||||
|--------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| Lclk | MsUp | Rclk |MsDown| | ## | | | | ## | |MsDown| Lclk | MsUp | Rclk |
|
||||
`--------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
|MsLeft|MsDown|MsRight | | | | |MsLeft|MsDown|MsRght|
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------|------|------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
### 5. Keyword macros
|
||||
|
||||
```
|
||||
,---------------------------------------------------. ,--------------------------------------------------.
|
||||
| | | | scarf| sadf | smily| | | | decaf| | | | | |
|
||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
||||
| | const| volat| oper | ret | tmpl | | | | typen| cont | prv | pro | pub | |
|
||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| | | str | obj | | gitl |------| |------| | | | nulp | | |
|
||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| | | extr | cls | virt | break| | | |namesp| goodm| goodn| | | |
|
||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
| | | inc | | | | | | | | |
|
||||
`-----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | ecet | ecets|
|
||||
,------|------|------| |------|------|------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | ## | | ## | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
Please see `keymap.c` for the keywords/commands.
|
||||
Some are const, volatile, operator, return, template, typename, continue, private,
|
||||
protected, public, struct, class, extern, virtual, break, namespace.
|
||||
Also a git log command I use a lot (`git log --oneline --graph --decorate=short` (I know git can be configured but that is boring)).
|
||||
|
||||
### 6. Emacs
|
||||
|
||||
```
|
||||
,---------------------------------------------------. ,--------------------------------------------------.
|
||||
| | | | | | | empb | | emnb | emfs | emfb | | | | |
|
||||
|---------|------|------|------|------|------|------| |------|------|------|------|------|------|--------|
|
||||
| | emtr | | | | | | | | emun | emre | w-up | | | |
|
||||
|---------|------|------|------|------|------| | | |------|------|------|------|------|--------|
|
||||
| | | emwr | | | |------| |------| |w-left|w-down|w-rght| | |
|
||||
|---------|------|------|------|------|------| ## | | ## |------|------|------|------|------|--------|
|
||||
| | | | | | | | | | | |w-down| | | |
|
||||
`---------|------|------|------|------|-------------' `-------------|------|------|------|------|--------'
|
||||
| | | | | | | | | | | |
|
||||
`-----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------|------|------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
Some emacs shortcuts like toggle read/write mode (emtr), write file (emwr), previous-buffer (empb),
|
||||
next-buffer (emnb), smaller font(emfs), larger font (emfb), undo (emun), redo (emre) and switching between windows in a frame.
|
@@ -7,7 +7,7 @@ CONSOLE_ENABLE = no
|
||||
TAP_DANCE_ENABLE = yes
|
||||
KEYLOGGER_ENABLE ?= yes
|
||||
UCIS_ENABLE = yes
|
||||
MOUSEKEY_ENABLE ?= yes
|
||||
MOUSEKEY_ENABLE = no
|
||||
|
||||
AUTOLOG_ENABLE ?= no
|
||||
|
||||
@@ -25,6 +25,8 @@ OPT_DEFS += -DKEYLOGGER_ENABLE
|
||||
CONSOLE_ENABLE = yes
|
||||
endif
|
||||
|
||||
OPT_DEFS += -DUSER_PRINT
|
||||
|
||||
KEYMAP_VERSION = $(shell \
|
||||
if [ -d "${KEYMAP_PATH}/.git" ]; then \
|
||||
cd "${KEYMAP_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \
|
||||
|