diff options
author | leico <yoshitaka_12@iamas.ac.jp> | 2019-03-04 03:49:27 +0900 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-03-03 10:49:27 -0800 |
commit | a2a2ba0eec6aa5fffcc24d25d29883ccc0ae1816 (patch) | |
tree | a6bacaf1bfed4a8487dd4e6efe4b47333b204c2f | |
parent | 9b0a5486875089f64e21ef10a1c80503bed7bb80 (diff) | |
download | qmk_firmware-a2a2ba0eec6aa5fffcc24d25d29883ccc0ae1816.tar.gz qmk_firmware-a2a2ba0eec6aa5fffcc24d25d29883ccc0ae1816.zip |
[Keymap] layout/community/ortho4x12/symbolic update (#5274)
* change readme.md
* diy LayerTap function
* fixed forgot update_tri_layer
correspound permissive hold
* update README
* change No_event of general shift
* update symbolic layout
* merge symbolic_general_shift to symbolic layout
* update README.md
* following code style
* delete excess codes, change codes that don't follows the code style
-rw-r--r-- | layouts/community/ortho_4x12/symbolic/README.md | 23 | ||||
-rw-r--r-- | layouts/community/ortho_4x12/symbolic/config.h | 3 | ||||
-rw-r--r-- | layouts/community/ortho_4x12/symbolic/keymap.c | 138 |
3 files changed, 116 insertions, 48 deletions
diff --git a/layouts/community/ortho_4x12/symbolic/README.md b/layouts/community/ortho_4x12/symbolic/README.md index 37fbcd56a..2c69d5160 100644 --- a/layouts/community/ortho_4x12/symbolic/README.md +++ b/layouts/community/ortho_4x12/symbolic/README.md | |||
@@ -1,26 +1,24 @@ | |||
1 | # Symbolic ortho 4x12 layout | 1 | # Symbolic ortho 4x12 layout |
2 | 2 | ||
3 | ## Features | 3 | ## Features |
4 | 4 | ||
5 | ### QWERTY based | 5 | ### QWERTY based |
6 | 6 | ||
7 |  | 7 |  |
8 | 8 | ||
9 | * Default keymap | 9 | * Default keymap |
10 | * QWERTY layout | 10 | * QWERTY layout |
11 | * Hold and tap | 11 | * Hold and tap |
12 | * `Shift` and `Space` | ||
13 | * `Left Ctrl` and `Tab` | 12 | * `Left Ctrl` and `Tab` |
14 | * Symmetric Modifiers | 13 | * Symmetric Modifiers |
15 | * `Shift` | 14 | * `Shift` |
16 | * `Raise Layer` | 15 | * `Raise Layer` |
17 | * `Lower Layer` | 16 | * `Lower Layer` |
18 | * `GUI` | 17 | * `GUI` |
19 | * `Reset` | ||
20 | 18 | ||
21 | ### symbol charactor layer | 19 | ### symbol charactor layer |
22 | 20 | ||
23 |  | 21 |  |
24 | 22 | ||
25 | * Raise Layer | 23 | * Raise Layer |
26 | * assigned symbolic(punctuation) characters | 24 | * assigned symbolic(punctuation) characters |
@@ -37,23 +35,31 @@ | |||
37 | 35 | ||
38 | ### numbers and allows layer | 36 | ### numbers and allows layer |
39 | 37 | ||
40 |  | 38 |  |
41 | 39 | ||
42 | * Lower Layer | 40 | * Lower Layer |
43 | * entrust vim style arrows | 41 | * entrust vim style arrows |
44 | * also numkeys | 42 | * also numkeys |
45 | * additional, computer volume keys | 43 | * additional, computer volume keys |
46 | * transparent all modifiers | 44 | * transparent all modifiers |
45 | * **changed 2018/09/04** | ||
46 | * assign keys | ||
47 | * Home | ||
48 | * Page Down | ||
49 | * Page Up | ||
50 | * End | ||
51 | * Print Screen | ||
47 | 52 | ||
48 | ### Numpads and F key layer | 53 | ### Numpads and F key layer |
49 | 54 | ||
50 |  | 55 |  |
51 | 56 | ||
52 | * visibled when Raise and Lower layer visibled | 57 | * visibled when Raise and Lower layer visibled |
53 | * F keys assigned left hand side | 58 | * F keys assigned left hand side |
54 | * Numpads assigned right hand side | 59 | * Numpads assigned right hand side |
55 | * for that reason, override `RGUI` key | 60 | * for that reason, override `RGUI` key |
56 | * transparent mostly modifiers | 61 | * transparent mostly modifiers |
62 | * visibled `Reset` key on both hands | ||
57 | 63 | ||
58 | 64 | ||
59 | ### Goals | 65 | ### Goals |
@@ -63,7 +69,6 @@ | |||
63 | * simple, minimal, easy learn | 69 | * simple, minimal, easy learn |
64 | * as soon as possible, don't disable any shortcuts | 70 | * as soon as possible, don't disable any shortcuts |
65 | 71 | ||
66 | |||
67 | ### suggestions or find issues | 72 | ### suggestions or find issues |
68 | 73 | ||
69 | [post issues for my fork](https://github.com/leico/qmk_firmware/issues) | 74 | [post issues for my fork](https://github.com/leico/qmk_firmware/issues) |
diff --git a/layouts/community/ortho_4x12/symbolic/config.h b/layouts/community/ortho_4x12/symbolic/config.h index c29b07706..3f88b4cc1 100644 --- a/layouts/community/ortho_4x12/symbolic/config.h +++ b/layouts/community/ortho_4x12/symbolic/config.h | |||
@@ -20,8 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
20 | 20 | ||
21 | #pragma once | 21 | #pragma once |
22 | 22 | ||
23 | // hold & tapping delay setting | 23 | |
24 | #define TAPPING_TERM 100 | ||
25 | 24 | ||
26 | /* Use I2C or Serial, not both */ | 25 | /* Use I2C or Serial, not both */ |
27 | 26 | ||
diff --git a/layouts/community/ortho_4x12/symbolic/keymap.c b/layouts/community/ortho_4x12/symbolic/keymap.c index 1e5494d96..c29237371 100644 --- a/layouts/community/ortho_4x12/symbolic/keymap.c +++ b/layouts/community/ortho_4x12/symbolic/keymap.c | |||
@@ -19,6 +19,7 @@ enum custom_keycodes { | |||
19 | R_RAISE | 19 | R_RAISE |
20 | }; | 20 | }; |
21 | 21 | ||
22 | |||
22 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 23 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
23 | 24 | ||
24 | /* Qwerty | 25 | /* Qwerty |
@@ -30,17 +31,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
30 | * | Tab | A | S | D | F | G || H | J | K | L | ; |Enter | | 31 | * | Tab | A | S | D | F | G || H | J | K | L | ; |Enter | |
31 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 32 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
32 | * | | | | | | || | | | | | | | 33 | * | | | | | | || | | | | | | |
33 | * | | Z | X | C | V | B || N | M | , | . | ! | | | 34 | * |Shift | Z | X | C | V | B || N | M | , | . | ! |Shift | |
34 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 35 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
35 | * | | | | | |LSFT_T||RSFT_T| | | | | | | 36 | * | | | | | | || | | | | | | |
36 | * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| GUI | Del |Reset | | 37 | * |LRaise| Alt | GUI | |LLower|Space ||Space |RLower| | GUI | Del |RRaise| |
37 | * `------------------------------------------------------------------------------------' | 38 | * `------------------------------------------------------------------------------------' |
38 | */ | 39 | */ |
39 | [_QWERTY] = LAYOUT_ortho_4x12( \ | 40 | [_QWERTY] = LAYOUT_ortho_4x12( \ |
40 | KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ | 41 | KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ |
41 | LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ | 42 | LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ |
42 | XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_EXLM, XXXXXXX, \ | 43 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_EXLM, KC_RSFT, \ |
43 | RESET, KC_LALT, KC_LGUI, L_LOWER, L_RAISE, LSFT_T( KC_SPC ), RSFT_T( KC_SPC ), R_RAISE, R_LOWER, KC_RGUI, KC_DEL, RESET \ | 44 | L_RAISE, KC_LALT, KC_LGUI, XXXXXXX, L_LOWER, KC_SPC, KC_SPC, R_LOWER, XXXXXXX, KC_RGUI, KC_DEL, R_RAISE \ |
44 | ), | 45 | ), |
45 | 46 | ||
46 | /* Raise | 47 | /* Raise |
@@ -52,16 +53,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
52 | * | Tab | ~ | | | ( | ) | * || / | < | > | ' | : |Enter | | 53 | * | Tab | ~ | | | ( | ) | * || / | < | > | ' | : |Enter | |
53 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 54 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
54 | * | | | | | | || | | | | | | | 55 | * | | | | | | || | | | | | | |
55 | * | | ` | ^ | @ | $ | + || - | = | _ | " | ? | | | 56 | * |Shift | ` | ^ | @ | $ | + || - | = | _ | " | ? |Shift | |
56 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 57 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
57 | * | | | | | |LSFT_T||RSFT_T| | | | | | | 58 | * | | | | | | || | | | | | | |
58 | * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| GUI | Del |Reset | | 59 | * |LRaise| Alt | GUI | |LLower|Space ||Space |RLower| | GUI | Del |RRaise| |
59 | * `------------------------------------------------------------------------------------' | 60 | * `------------------------------------------------------------------------------------' |
60 | */ | 61 | */ |
61 | [_RAISE] = LAYOUT_ortho_4x12( \ | 62 | [_RAISE] = LAYOUT_ortho_4x12( \ |
62 | _______, XXXXXXX, KC_AMPR, KC_LCBR, KC_RCBR, KC_PERC, KC_BSLS, KC_LBRC, KC_RBRC, KC_HASH, XXXXXXX, _______, \ | 63 | _______, XXXXXXX, KC_AMPR, KC_LCBR, KC_RCBR, KC_PERC, KC_BSLS, KC_LBRC, KC_RBRC, KC_HASH, XXXXXXX, _______, \ |
63 | _______, KC_TILD, KC_PIPE, KC_LPRN, KC_RPRN, KC_ASTR, KC_SLSH, KC_LABK, KC_RABK, KC_QUOT, KC_COLN, _______, \ | 64 | _______, KC_TILD, KC_PIPE, KC_LPRN, KC_RPRN, KC_ASTR, KC_SLSH, KC_LABK, KC_RABK, KC_DQUO, KC_COLN, _______, \ |
64 | _______, KC_GRV, KC_CIRC, KC_AT, KC_DLR, KC_PLUS, KC_MINS, KC_EQL, KC_UNDS, KC_DQUO, KC_QUES, _______, \ | 65 | _______, KC_GRV, KC_CIRC, KC_AT, KC_DLR, KC_PLUS, KC_MINS, KC_EQL, KC_UNDS, KC_QUOT, KC_QUES, _______, \ |
65 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | 66 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ |
66 | ), | 67 | ), |
67 | /* Lower | 68 | /* Lower |
@@ -73,16 +74,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
73 | * | Tab | |VolDn |VolUp | Mute | || Left | Down | Up |Right | |Enter | | 74 | * | Tab | |VolDn |VolUp | Mute | || Left | Down | Up |Right | |Enter | |
74 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 75 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
75 | * | | | | | | || | | | | | | | 76 | * | | | | | | || | | | | | | |
76 | * | | | | | | || | | | | | | | 77 | * |Shift | | | | | PrSc || Home | PgDn | PgUp | End | |Shift | |
77 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 78 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
78 | * | | | | | |LSFT_T||RSFT_T| | | | | | | 79 | * | | | | | | || | | | | | | |
79 | * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| GUI | Del |Reset | | 80 | * |LRaise| Alt | GUI | |LLower|Space ||Space |RLower| | GUI | Del |RRaise| |
80 | * `------------------------------------------------------------------------------------' | 81 | * `------------------------------------------------------------------------------------' |
81 | */ | 82 | */ |
82 | [_LOWER] = LAYOUT_ortho_4x12( \ | 83 | [_LOWER] = LAYOUT_ortho_4x12( \ |
83 | _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ | 84 | _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ |
84 | _______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, _______, \ | 85 | _______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, _______, \ |
85 | _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \ | 86 | _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, _______, \ |
86 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | 87 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ |
87 | ), | 88 | ), |
88 | 89 | ||
@@ -95,55 +96,113 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
95 | * | Tab | F5 | F6 | F7 | F8 | || * | / | 4 | 5 | 6 |Enter | | 96 | * | Tab | F5 | F6 | F7 | F8 | || * | / | 4 | 5 | 6 |Enter | |
96 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 97 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
97 | * | | | | | | || | | | | | | | 98 | * | | | | | | || | | | | | | |
98 | * | | F9 | F10 | F11 | F12 | || . | , | 7 | 8 | 9 | | | 99 | * |Shift | F9 | F10 | F11 | F12 | || . | , | 7 | 8 | 9 |Shift | |
99 | * |------+------+------+------+------+------++------+------+------+------+------+------| | 100 | * |------+------+------+------+------+------++------+------+------+------+------+------| |
100 | * | | | | | |LSFT_T||RSFT_T| | | | | | | 101 | * | | | | | | || | | | | | | |
101 | * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| 0 | Del |Reset | | 102 | * |LRaise| Alt | GUI |Reset |LLower|Space ||Space |RLower|Reset | 0 | Del |RRaise| |
102 | * `------------------------------------------------------------------------------------' | 103 | * `------------------------------------------------------------------------------------' |
103 | */ | 104 | */ |
104 | [_NEUTRAL] = LAYOUT_ortho_4x12( \ | 105 | [_NEUTRAL] = LAYOUT_ortho_4x12( \ |
105 | _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PPLS, KC_PMNS, KC_P1, KC_P2, KC_P3, _______, \ | 106 | _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PPLS, KC_PMNS, KC_P1, KC_P2, KC_P3, _______, \ |
106 | _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_PAST, KC_PSLS, KC_P4, KC_P5, KC_P6, _______, \ | 107 | _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_PAST, KC_PSLS, KC_P4, KC_P5, KC_P6, _______, \ |
107 | _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_PDOT, KC_COMM, KC_P7, KC_P8, KC_P9, _______, \ | 108 | _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_PDOT, KC_COMM, KC_P7, KC_P8, KC_P9, _______, \ |
108 | _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, _______, _______ \ | 109 | _______, _______, _______, RESET, _______, _______, _______, _______, RESET, KC_P0, _______, _______ \ |
109 | ) | 110 | ) |
110 | 111 | ||
111 | 112 | ||
112 | }; | 113 | }; |
113 | 114 | ||
114 | 115 | ||
115 | void DualKeyPressed ( bool brother_state, uint8_t target ){ | ||
116 | 116 | ||
117 | if( brother_state ) return; | 117 | /**** Raise Layer functions *****/ |
118 | |||
119 | /* RaisePressed function */ | ||
120 | /* called RaiseSwitch */ | ||
121 | void RaisePressed ( keyevent_t *event, bool brother_state ){ | ||
122 | |||
123 | if( brother_state ) { return; } | ||
124 | |||
125 | layer_on( _RAISE ); | ||
126 | update_tri_layer( _LOWER, _RAISE, _NEUTRAL ); | ||
127 | return; | ||
128 | |||
129 | } | ||
130 | |||
131 | |||
132 | /* RaiseReleased function */ | ||
133 | /* called RaiseSwitch */ | ||
134 | void RaiseReleased ( bool brother_state ){ | ||
135 | |||
136 | if( brother_state ) { return; } | ||
118 | 137 | ||
119 | layer_on( target ); | 138 | layer_off( _RAISE ); |
139 | update_tri_layer( _LOWER, _RAISE, _NEUTRAL ); | ||
120 | return; | 140 | return; |
121 | } | 141 | } |
122 | 142 | ||
123 | void DualKeyReleased ( bool brother_state, uint8_t target1 ){ | ||
124 | 143 | ||
125 | if( brother_state ) return ; | 144 | /* RaiseSwitch function */ |
145 | /* called process_record_user */ | ||
146 | bool RaiseSwitch ( keyrecord_t *record, bool *key_state, bool brother ){ | ||
147 | |||
148 | if( record -> event.pressed ) { | ||
149 | *key_state = true; | ||
150 | RaisePressed( &(record -> event), brother ); | ||
151 | } else { | ||
152 | *key_state = false; | ||
153 | RaiseReleased( brother ); | ||
154 | } | ||
155 | return false; | ||
156 | |||
157 | } | ||
158 | |||
159 | |||
126 | 160 | ||
127 | layer_off( target1 ); | 161 | |
162 | |||
163 | |||
164 | /**** Lower layer functions ****/ | ||
165 | |||
166 | /* LowerPressed function */ | ||
167 | /* call from LowerSwitch */ | ||
168 | void LowerPressed ( bool brother_state ){ | ||
169 | |||
170 | if( brother_state ) { return; } | ||
171 | |||
172 | layer_on( _LOWER ); | ||
173 | update_tri_layer(_LOWER, _RAISE, _NEUTRAL ); | ||
174 | return; | ||
175 | } | ||
176 | |||
177 | /* LowerReleased function */ | ||
178 | /* call from LowerSwitch */ | ||
179 | void LowerReleased ( bool brother_state ){ | ||
180 | |||
181 | if( brother_state ) { return; } | ||
182 | |||
183 | layer_off( _LOWER ); | ||
184 | update_tri_layer(_LOWER, _RAISE, _NEUTRAL ); | ||
128 | return ; | 185 | return ; |
129 | } | 186 | } |
130 | 187 | ||
131 | bool LayerSwitch ( keyrecord_t *record, bool *key_state, bool brother, uint8_t layer ){ | 188 | /* LowerSwitch function */ |
189 | /* call from process_record_user */ | ||
190 | bool LowerSwitch ( keyrecord_t *record, bool *key_state, bool brother ){ | ||
132 | if ( record -> event.pressed ) { | 191 | if ( record -> event.pressed ) { |
133 | *key_state = true; | 192 | *key_state = true; |
134 | DualKeyPressed( brother, layer ); | 193 | LowerPressed( brother ); |
135 | } | 194 | } else { |
136 | else { | ||
137 | *key_state = false; | 195 | *key_state = false; |
138 | DualKeyReleased( brother, layer ); | 196 | LowerReleased( brother ); |
139 | } | 197 | } |
140 | 198 | ||
141 | update_tri_layer(_LOWER, _RAISE, _NEUTRAL ); | ||
142 | return false; | 199 | return false; |
143 | 200 | ||
144 | |||
145 | } | 201 | } |
146 | 202 | ||
203 | |||
204 | |||
205 | /**** process_record_user ****/ | ||
147 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 206 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
148 | 207 | ||
149 | static bool l_lower = false; | 208 | static bool l_lower = false; |
@@ -155,11 +214,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
155 | switch (keycode) { | 214 | switch (keycode) { |
156 | 215 | ||
157 | 216 | ||
158 | case L_LOWER : return LayerSwitch( record, &l_lower, r_lower, _LOWER ); break; | 217 | case L_LOWER : return LowerSwitch( record, &l_lower, r_lower ); break; |
159 | case R_LOWER : return LayerSwitch( record, &r_lower, l_lower, _LOWER ); break; | 218 | case R_LOWER : return LowerSwitch( record, &r_lower, l_lower ); break; |
160 | case L_RAISE : return LayerSwitch( record, &l_raise, r_raise, _RAISE ); break; | 219 | case L_RAISE : return RaiseSwitch( record, &l_raise, r_raise ); break; |
161 | case R_RAISE : return LayerSwitch( record, &r_raise, l_raise, _RAISE ); break; | 220 | case R_RAISE : return RaiseSwitch( record, &r_raise, l_raise ); break; |
221 | |||
222 | default: break; | ||
162 | 223 | ||
163 | } | 224 | } |
164 | return true; | 225 | return true; |
165 | } | 226 | } |
227 | |||
228 | |||
229 | |||