]> git.gir.st - tmk_keyboard.git/blob - keyboard/tv44/keymap_tv44.c
working: shift+slash=questionmark
[tmk_keyboard.git] / keyboard / tv44 / keymap_tv44.c
1 #include "actionmap.h"
2 #include "action_code.h"
3 #include "actionmap_common.h"
4 #include "action.h"
5 //#include "action_layer.h"
6 #include "action_util.h"
7
8 /* Pain Points:
9 * ? should be backspace; move ? to shift+/ -- use ACTION_FUNCTION?
10 * ~ is hard to reach, because Fn2 is directly above
11 * (use clasic left hand mods: esc/tab/shift/ctrl-alt -- maybe toggleable)
12 * (left fn1 and r-super are hard to reach -- not too worrying)
13 * (left hand Fn2, but no key available)
14 */
15
16 // action key names are for german layout!
17 #define AC_____ AC_NO
18 #define AC_FN1 ACTION_LAYER_MOMENTARY(1)
19 #define AC_FN2 ACTION_LAYER_MOMENTARY(2)
20 #define AC_FN3 ACTION_LAYER_MOMENTARY(3)
21 #define AC_DEG ACTION_MODS_KEY(MOD_LSFT, KC_GRV)
22 #define AC_EXCL ACTION_MODS_KEY(MOD_LSFT, KC_1)
23 #define AC_DQOT ACTION_MODS_KEY(MOD_LSFT, KC_2)
24 #define AC_SECT ACTION_MODS_KEY(MOD_LSFT, KC_3)
25 #define AC_DLLR ACTION_MODS_KEY(MOD_LSFT, KC_4)
26 #define AC_PERC ACTION_MODS_KEY(MOD_LSFT, KC_5)
27 #define AC_AMP ACTION_MODS_KEY(MOD_LSFT, KC_6)
28 #define AC_SLAS ACTION_MODS_KEY(MOD_LSFT, KC_7)
29 #define AC_LPAR ACTION_MODS_KEY(MOD_LSFT, KC_8)
30 #define AC_RPAR ACTION_MODS_KEY(MOD_LSFT, KC_9)
31 #define AC_EQUL ACTION_MODS_KEY(MOD_LSFT, KC_0)
32 #define AC_QEST ACTION_MODS_KEY(MOD_LSFT, KC_MINS)
33 #define AC_GRAV ACTION_MODS_KEY(MOD_LSFT, KC_EQL)
34 #define AC_SUP2 ACTION_MODS_KEY(MOD_RALT, KC_2)
35 #define AC_SUP3 ACTION_MODS_KEY(MOD_RALT, KC_3)
36 #define AC_LBRA ACTION_MODS_KEY(MOD_RALT, KC_7)
37 #define AC_LBRK ACTION_MODS_KEY(MOD_RALT, KC_8)
38 #define AC_RBRK ACTION_MODS_KEY(MOD_RALT, KC_9)
39 #define AC_RBRA ACTION_MODS_KEY(MOD_RALT, KC_0)
40 #define AC_BKSL ACTION_MODS_KEY(MOD_RALT, KC_MINS)
41 #define AC_ASTK ACTION_MODS_KEY(MOD_LSFT, KC_RBRC)
42 #define AC_SQOT ACTION_MODS_KEY(MOD_LSFT, KC_NUHS)
43 #define AC_AT ACTION_MODS_KEY(MOD_RALT, KC_Q)
44 #define AC_EUR ACTION_MODS_KEY(MOD_RALT, KC_E)
45 #define AC_TILD ACTION_MODS_KEY(MOD_RALT, KC_RBRC)
46 #define AC_RANG ACTION_MODS_KEY(MOD_LSFT, KC_NUBS)
47 #define AC_BAR ACTION_MODS_KEY(MOD_RALT, KC_NUBS)
48 #define AC_MU ACTION_MODS_KEY(MOD_RALT, KC_M)
49 #define AC_CIRC AC_GRV
50 #define AC_SS AC_MINS
51 #define AC_PLUS AC_RBRC
52 #define AC_HASH AC_NUHS
53 #define AC_LANG AC_NUBS
54 #define AC_DASH AC_SLSH
55 #define AC_WORD ACTION_MODS_KEY(MOD_LCTL, KC_RIGHT)
56 #define AC_BACK ACTION_MODS_KEY(MOD_LCTL, KC_LEFT)
57 #define AC_AUML ACTION_MODS_KEY(MOD_LSFT, KC_QUOT)
58 #define AC_OUML ACTION_MODS_KEY(MOD_LSFT, KC_SCLN)
59 #define AC_UUML ACTION_MODS_KEY(MOD_LSFT, KC_LBRC)
60 #define AC_aUML AC_QUOT
61 #define AC_oUML AC_SCLN
62 #define AC_uUML AC_LBRC
63 #define AC_SLQU ACTION_FUNCTION(SLASH_QUESTION)
64
65 enum function_id {
66 SLASH_QUESTION,
67 };
68
69 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 void (*method)(uint8_t) = (record->event.pressed ? &add_key : &del_key);
71 uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
72
73 switch (id) {
74 case SLASH_QUESTION:
75
76 if (shifted) {
77 // ? (modifiers already pressed)
78 method(KC_MINS);
79 send_keyboard_report();
80 } else {
81 // /
82 if (record->event.pressed) {
83 add_weak_mods(MOD_BIT(KC_LSHIFT));
84 send_keyboard_report();
85 method(KC_7);
86 send_keyboard_report();
87 } else {
88 method(KC_7);
89 send_keyboard_report();
90 del_weak_mods(MOD_BIT(KC_LSHIFT));
91 send_keyboard_report();
92 }
93 }
94
95 break;
96 }
97 }
98
99 const action_t PROGMEM actionmaps[][MATRIX_ROWS][MATRIX_COLS] = {
100 /* Layer: Base Layer
101 * ,-------------------------------------------------.
102 * |Esc| Q| W| E| R| T| Z| U| I| O| P| BSp |
103 * |-------------------------------------------------|
104 * |Ctrl| A| S| D| F| G| H| J| K| L| ?/|Fn2 |
105 * |-------------------------------------------------|
106 * |Shift| Y| X| C| V| B| N| M| ,| .| -|Sft|
107 * |-------------------------------------------------|
108 * |Alt | Tab |Fn1 |Enter| Space |Fn1 |Super| Fn3 |
109 * `-------------------------------------------------'
110 */
111 ACTIONMAP(
112 ESC , Q, W, E, R, T, Y, U, I, O, P, BSPC, \
113 LCTRL, A, S, D, F, G, H, J, K, L,SLQU, FN2, \
114 LSHIFT, Z, X, C, V, B, N, M,COMM, DOT,DASH, RSHIFT, \
115 LALT, TAB, FN1 , ENT, SPC, FN1, LGUI, FN3 ),
116
117 /* Layer: Movement Layer (wrd=ctrl-right, bck=crtl-left) ~~TOGGLE~~MOMENTARY
118 * ,-------------------------------------------------.
119 * |Esc| |wrd| |END| | |PUp| |Hom| | Del |
120 * |-------------------------------------------------|
121 * | | | |PDn| | |Lft| Up| Dn| Rt| | |
122 * |-------------------------------------------------|
123 * | |PSc| | | |bck| |PAU|NUM|CAP|SCR| |
124 * |-------------------------------------------------|
125 * | | | | | | | | |
126 * `-------------------------------------------------'
127 */
128 ACTIONMAP(
129 ESC ,____,WORD,____, END,____,____,PGUP,____,HOME,____, DEL, \
130 TRNS ,____,____,PGDN,____,____,LEFT,DOWN, UP,RGHT,____, TRNS, \
131 TRNS ,PSCR,____,____,____,BACK,____,PAUS,NLCK,CAPS,SLCK,TRNS, \
132 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
133
134 /* Layer: Numbers and ASCII-Symbols Layer MOMENTARY+~~TOGGLE~~
135 * ,-------------------------------------------------.
136 * | ^| !| "| '| $| %| &| @| (| )| =| ? |
137 * |-------------------------------------------------|
138 * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0|Fn2 |
139 * |-------------------------------------------------|
140 * | #| <| || >| +| *| {| [| ]| }| \| ~|
141 * |-------------------------------------------------|
142 * | | | | | | | | |
143 * `-------------------------------------------------'
144 */
145 ACTIONMAP(
146 CIRC,EXCL,DQOT,SQOT,DLLR,PERC, AMP, AT,LPAR,RPAR,EQUL, QEST, \
147 GRAV , 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, TRNS, \
148 HASH ,LANG, BAR,RANG,PLUS,ASTK,LBRA,LBRK,RBRK,RBRA,BKSL,TILD, \
149 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
150
151 /* Layer: Layer for Function keys and Unicode Symbols MOMENTARY
152 * ,-------------------------------------------------.
153 * | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11| F12|
154 * |-------------------------------------------------|
155 * | | | | | | | | | Ä| Ö| Ü| |
156 * |-------------------------------------------------|
157 * | | €| §| °| ²| ³| µ| ä| ö| ü| ß| |
158 * |-------------------------------------------------|
159 * | | | | | | | | Fn3 |
160 * `-------------------------------------------------'
161 */
162 ACTIONMAP(
163 F1 , F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, \
164 TRNS ,____,____,____,____,____,____,____,AUML,OUML,UUML, TRNS, \
165 TRNS , EUR,SECT, DEG,SUP2,SUP3, MU,aUML,oUML,uUML, SS,TRNS, \
166 TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
167 };
Imprint / Impressum