aboutsummaryrefslogtreecommitdiff
path: root/keyboards/arch_36/keymaps/default/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/arch_36/keymaps/default/keymap.c')
-rw-r--r--keyboards/arch_36/keymaps/default/keymap.c310
1 files changed, 310 insertions, 0 deletions
diff --git a/keyboards/arch_36/keymaps/default/keymap.c b/keyboards/arch_36/keymaps/default/keymap.c
new file mode 100644
index 000000000..797ca8798
--- /dev/null
+++ b/keyboards/arch_36/keymaps/default/keymap.c
@@ -0,0 +1,310 @@
1#include QMK_KEYBOARD_H
2
3// Defines names for use in layer keycodes and the keymap
4enum layer_names {
5 _QWERTY,
6 _LOWER,
7 _RAISE,
8 _ADJUST
9};
10
11#define LOWER MO(_LOWER)
12#define RAISE MO(_RAISE)
13
14// Defines for task manager and such
15#define CALTDEL LCTL(LALT(KC_DEL))
16#define TSKMGR LCTL(LSFT(KC_ESC))
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20/* Qwerty
21 *
22 * ,----------------------------------. ,----------------------------------.
23 * | Q | W | E | R | T | | Y | U | I | O | P |
24 * |------+------+------+------+------| |------+------+------+------+------|
25 * | A | S | D | F | G | | H | J | K | L | ; |
26 * |------+------+------+------+------| |------+------+------+------+------|
27 * | Z | X | C | V | B | | N | M | , | . | / |
28 * `----------------------------------' `----------------------------------'
29 * ,--------------------. ,--------------------.
30 * | Ctrl | LOWER| Space| |BckSpc| RAISE| Shift|
31 * `--------------------' `--------------------.
32 */
33[_QWERTY] = LAYOUT_split_3x5_3(
34 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
35 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
36 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
37 KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT)
38),
39
40/* Raise
41 *
42 * ,----------------------------------. ,----------------------------------.
43 * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
44 * |------+------+------+------+------| |------+------+------+------+------|
45 * | Tab | Left | Down | Up | Right| | | - | = | [ | ] |
46 * |------+------+------+------+------| |------+------+------+------+------|
47 * | Ctrl| ` | GUI | Alt | | | | | | \ | ' |
48 * `----------------------------------' `----------------------------------'
49 * ,--------------------. ,--------------------.
50 * | | LOWER| | | | RAISE| |
51 * `--------------------' `--------------------.
52 */
53[_RAISE] = LAYOUT_split_3x5_3(
54 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
55 KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
56 KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT,
57 _______, _______, _______, _______, _______, _______
58),
59
60/* Lower
61 *
62 * ,----------------------------------. ,----------------------------------.
63 * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
64 * |------+------+------+------+------| |------+------+------+------+------|
65 * | Esc | | | | | | | _ | + | { | } |
66 * |------+------+------+------+------| |------+------+------+------+------|
67 * | Caps| ~ | | | | | | | | | | " |
68 * `----------------------------------' `----------------------------------'
69 * ,--------------------. ,--------------------.
70 * | | LOWER| | | | RAISE| Del |
71 * `--------------------' `--------------------.
72 */
73[_LOWER] = LAYOUT_split_3x5_3(
74 KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
75 KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
76 KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT,
77 _______, _______, _______, KC_ENT, _______, KC_DEL
78),
79
80/* Adjust (Lower + Raise)
81 *
82 * ,----------------------------------. ,----------------------------------.
83 * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
84 * |------+------+------+------+------| |------+------+------+------+------|
85 * | F11 | F12 | | | | | | | |Taskmg|caltde|
86 * |------+------+------+------+------| |------+------+------+------+------|
87 * | Reset| | | | | | | | | | |
88 * `----------------------------------' `----------------------------------'
89 * ,--------------------. ,--------------------.
90 * | | LOWER| | | | RAISE| |
91 * `--------------------' `--------------------.
92 */
93[_ADJUST] = LAYOUT_split_3x5_3(
94 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
95 KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL,
96 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
97 _______, _______, _______, _______, _______, _______
98)
99};
100
101layer_state_t layer_state_set_user(layer_state_t state) {
102 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
103}
104
105uint16_t rgb_edit_timer = 0;
106uint16_t last_rgb_char = 0;
107
108bool process_record_user(uint16_t keycode, keyrecord_t *record) {
109 switch(keycode) {
110 case RGB_TOG:
111 case RGB_MOD:
112 case RGB_HUD:
113 case RGB_HUI:
114 case RGB_SAD:
115 case RGB_SAI:
116 case RGB_VAI:
117 case RGB_VAD:
118 rgb_edit_timer = timer_read();
119 last_rgb_char = keycode;
120 return true;
121 }
122 return true;
123}
124
125#ifdef OLED_ENABLE
126
127oled_rotation_t oled_init_user(oled_rotation_t rotation) {
128 return OLED_ROTATION_180;
129}
130
131void render_default_layer_state(void) {
132 oled_write_P(PSTR("Layout: "), false);
133 switch (get_highest_layer(default_layer_state)) {
134 case _QWERTY:
135 oled_write_ln_P(PSTR("Qwerty"), false);
136 break;
137 }
138}
139
140#ifdef RGBLIGHT_ENABLE
141bool cleared = false;
142void render_rgb_state(void) {
143 if(!rgblight_get_mode()) {
144 if(!cleared) {
145 oled_clear();
146 cleared = true;
147 }
148 return;
149 }
150 cleared = false;
151 uint8_t width = (OLED_DISPLAY_WIDTH/OLED_FONT_WIDTH)-10;
152 uint8_t hue = (rgblight_get_hue()*width/255),
153 sat = (rgblight_get_sat()*width/255),
154 val = (rgblight_get_val()*width/255);
155 bool changing_hue = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_HUI || last_rgb_char == RGB_HUD);
156 bool changing_sat = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_SAI || last_rgb_char == RGB_SAD);
157 bool changing_val = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_VAI || last_rgb_char == RGB_VAD);
158
159 uint8_t i;
160
161 oled_write_ln_P(PSTR(""), false);
162
163 oled_write_P(PSTR("Hue: ["), changing_hue);
164 for(i = 0; i < width; ++i) {
165 oled_write_P(i<hue?PSTR("-"):i==hue?PSTR("|"):PSTR(" "), changing_hue);
166 }
167 oled_write_P(PSTR("]"), changing_hue);
168 oled_write_P(PSTR("Sat: ["), changing_sat);
169 for(i = 0; i < width; ++i) {
170 oled_write_P(i<sat?PSTR("-"):i==sat?PSTR("|"):PSTR(" "), changing_sat);
171 }
172 oled_write_P(PSTR("]"), changing_sat);
173 oled_write_P(PSTR("Bri: ["), changing_val);
174 for(i = 0; i < width; ++i) {
175 oled_write_P(i<val?PSTR("-"):i==val?PSTR("|"):PSTR(" "), changing_val);
176 }
177 oled_write_P(PSTR("]"), changing_val);
178}
179#endif // RGBLIGHT_ENABLE
180
181void render_layer_state(void) {
182 oled_write_P(PSTR("Layer: "), false);
183 switch (get_highest_layer(layer_state)) {
184 case _QWERTY:
185 oled_write_ln_P(PSTR("Base"), false);
186 break;
187 case _LOWER:
188 oled_write_ln_P(PSTR("Lower"), false);
189 break;
190 case _RAISE:
191 oled_write_ln_P(PSTR("Raise"), false);
192 break;
193 case _ADJUST:
194 oled_write_ln_P(PSTR("Adjust"), false);
195 break;
196 default:
197 oled_write_ln_P(PSTR("Unknown"), false);
198 }
199}
200
201void render_keylock_status(led_t led_state) {
202 oled_write_P(PSTR("Lock: "), false);
203 oled_write_P(PSTR("123"), led_state.num_lock);
204 oled_write_P(PSTR(" "), false);
205 oled_write_ln_P(led_state.caps_lock?PSTR("ABC"):PSTR("abc"), led_state.caps_lock);
206}
207
208void render_mod_status(uint8_t modifiers) {
209 oled_write_P(PSTR("Mods: "), false);
210 oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
211 oled_write_P(PSTR(" "), false);
212 oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
213 oled_write_P(PSTR(" "), false);
214 oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
215 oled_write_P(PSTR(" "), false);
216 oled_write_ln_P(PSTR("W"), (modifiers & MOD_MASK_GUI));
217}
218
219static void render_status(void) {
220 // Host Keyboard Layer Status
221 render_default_layer_state();
222 render_layer_state();
223 render_keylock_status(host_keyboard_led_state());
224 render_mod_status(get_mods() | get_oneshot_mods());
225#ifdef RGBLIGHT_ENABLE
226 render_rgb_state();
227#endif // RGBLIGHT_ENABLE
228}
229
230static void render_logo(void) {
231 static const char PROGMEM logo[] = {
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8,
236 0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
244 0x03, 0x1f, 0x7f, 0xfe, 0xf0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x87, 0x9f, 0x3f, 0xfc, 0xf0,
252 0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e,
253 0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 0xf0, 0xe0,
254 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f,
260 0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0,
261 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03,
262 0x1f, 0xff, 0xfe, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f,
268 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08,
269 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40,
270 0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
273 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
274 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03,
276 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc,
277 0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee,
278 0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60,
279 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
280 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff,
281 0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe,
282 0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06,
283 0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06,
284 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31,
285 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff,
286 0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0,
287 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x3f, 0x1f, 0x01,
289 0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30,
291 0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00,
292 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f,
294 0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f,
295 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
296 };
297
298 oled_write_raw_P(logo, 1024);
299}
300
301bool oled_task_user(void) {
302 if (is_keyboard_master()) {
303 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
304 }
305 else {
306 render_logo();
307 }
308 return false;
309}
310#endif