summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjack <jack@pngu.org>2024-07-11 07:39:45 -0600
committerGitHub <noreply@github.com>2024-07-11 14:39:45 +0100
commitcc62eb503d8e0b1cb1be869597a5a972ebbca5f6 (patch)
treea9b2bd526eff778bb39a9065d68699d532afd601
parent0c4fd514f1146224c8407591a5e42a0db456b536 (diff)
[Keyboard] Add boardsource/sessenta (#23823)
-rw-r--r--keyboards/boardsource/sessanta/keyboard.json255
-rw-r--r--keyboards/boardsource/sessanta/keymaps/default/keymap.json21
-rw-r--r--keyboards/boardsource/sessanta/keymaps/via/keymap.json26
-rw-r--r--keyboards/boardsource/sessanta/readme.md27
4 files changed, 329 insertions, 0 deletions
diff --git a/keyboards/boardsource/sessanta/keyboard.json b/keyboards/boardsource/sessanta/keyboard.json
new file mode 100644
index 0000000000..c129e3acf5
--- /dev/null
+++ b/keyboards/boardsource/sessanta/keyboard.json
@@ -0,0 +1,255 @@
1{
2 "manufacturer": "Boardsource",
3 "keyboard_name": "Sessanta",
4 "maintainer": "waffle87",
5 "development_board": "promicro",
6 "diode_direction": "COL2ROW",
7 "features": {
8 "bootmagic": true,
9 "extrakey": true,
10 "mousekey": true,
11 "nkro": true,
12 "rgb_matrix": true
13 },
14 "matrix_pins": {
15 "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "D3"],
16 "rows": ["D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5"]
17 },
18 "rgb_matrix": {
19 "animations": {
20 "alphas_mods": true,
21 "band_sat": true,
22 "band_val": true,
23 "breathing": true,
24 "gradient_left_right": true
25 },
26 "driver": "ws2812",
27 "layout": [
28 {"x": 224, "y": 4, "flags": 2},
29 {"x": 156, "y": 0, "flags": 2},
30 {"x": 82, "y": 0, "flags": 2},
31 {"x": 13, "y": 4, "flags": 2},
32 {"x": 24, "y": 50, "flags": 2},
33 {"x": 68, "y": 52, "flags": 2},
34 {"x": 121, "y": 52, "flags": 2},
35 {"x": 220, "y": 52, "flags": 2},
36 {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
37 {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
38 {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
39 {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
40 {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
41 {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
42 {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
43 {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
44 {"matrix": [0, 8], "x": 119, "y": 0, "flags": 4},
45 {"matrix": [1, 0], "x": 134, "y": 0, "flags": 4},
46 {"matrix": [1, 1], "x": 149, "y": 0, "flags": 4},
47 {"matrix": [1, 2], "x": 164, "y": 0, "flags": 4},
48 {"matrix": [1, 3], "x": 179, "y": 0, "flags": 4},
49 {"matrix": [1, 4], "x": 202, "y": 0, "flags": 1},
50 {"matrix": [1, 5], "x": 4, "y": 16, "flags": 1},
51 {"matrix": [1, 6], "x": 22, "y": 16, "flags": 4},
52 {"matrix": [1, 7], "x": 37, "y": 16, "flags": 4},
53 {"matrix": [1, 8], "x": 52, "y": 16, "flags": 4},
54 {"matrix": [2, 0], "x": 67, "y": 16, "flags": 4},
55 {"matrix": [2, 1], "x": 82, "y": 16, "flags": 4},
56 {"matrix": [2, 2], "x": 97, "y": 16, "flags": 4},
57 {"matrix": [2, 3], "x": 112, "y": 16, "flags": 4},
58 {"matrix": [2, 4], "x": 127, "y": 16, "flags": 4},
59 {"matrix": [2, 5], "x": 142, "y": 16, "flags": 4},
60 {"matrix": [2, 6], "x": 157, "y": 16, "flags": 4},
61 {"matrix": [2, 7], "x": 172, "y": 16, "flags": 4},
62 {"matrix": [2, 8], "x": 187, "y": 16, "flags": 4},
63 {"matrix": [3, 0], "x": 205, "y": 16, "flags": 1},
64 {"matrix": [3, 1], "x": 6, "y": 32, "flags": 1},
65 {"matrix": [3, 2], "x": 26, "y": 32, "flags": 4},
66 {"matrix": [3, 3], "x": 41, "y": 32, "flags": 4},
67 {"matrix": [3, 4], "x": 56, "y": 32, "flags": 4},
68 {"matrix": [3, 5], "x": 71, "y": 32, "flags": 4},
69 {"matrix": [3, 6], "x": 86, "y": 32, "flags": 4},
70 {"matrix": [3, 7], "x": 101, "y": 32, "flags": 4},
71 {"matrix": [3, 8], "x": 116, "y": 32, "flags": 4},
72 {"matrix": [4, 0], "x": 131, "y": 32, "flags": 4},
73 {"matrix": [4, 1], "x": 146, "y": 32, "flags": 4},
74 {"matrix": [4, 2], "x": 161, "y": 32, "flags": 4},
75 {"matrix": [4, 3], "x": 175, "y": 32, "flags": 4},
76 {"matrix": [4, 4], "x": 200, "y": 32, "flags": 1},
77 {"matrix": [4, 5], "x": 224, "y": 32, "flags": 1},
78 {"matrix": [4, 6], "x": 9, "y": 48, "flags": 1},
79 {"matrix": [4, 7], "x": 34, "y": 48, "flags": 4},
80 {"matrix": [4, 8], "x": 49, "y": 48, "flags": 4},
81 {"matrix": [5, 0], "x": 63, "y": 48, "flags": 4},
82 {"matrix": [5, 1], "x": 78, "y": 48, "flags": 4},
83 {"matrix": [5, 2], "x": 93, "y": 48, "flags": 4},
84 {"matrix": [5, 3], "x": 108, "y": 48, "flags": 4},
85 {"matrix": [5, 4], "x": 123, "y": 48, "flags": 4},
86 {"matrix": [5, 5], "x": 138, "y": 48, "flags": 4},
87 {"matrix": [5, 6], "x": 153, "y": 48, "flags": 4},
88 {"matrix": [5, 7], "x": 168, "y": 48, "flags": 4},
89 {"matrix": [5, 8], "x": 196, "y": 48, "flags": 1},
90 {"matrix": [6, 0], "x": 224, "y": 48, "flags": 1},
91 {"matrix": [6, 1], "x": 2, "y": 64, "flags": 1},
92 {"matrix": [6, 2], "x": 21, "y": 64, "flags": 1},
93 {"matrix": [6, 3], "x": 39, "y": 64, "flags": 1},
94 {"matrix": [6, 4], "x": 95, "y": 64, "flags": 4},
95 {"matrix": [6, 5], "x": 151, "y": 64, "flags": 1},
96 {"matrix": [6, 6], "x": 170, "y": 64, "flags": 1},
97 {"matrix": [6, 7], "x": 189, "y": 64, "flags": 1},
98 {"matrix": [6, 8], "x": 207, "y": 64, "flags": 1},
99 {"matrix": [7, 0], "x": 224, "y": 64, "flags": 1}
100 ],
101 "max_brightness": 150,
102 "sleep": true
103 },
104 "url": "https://boardsource.xyz",
105 "usb": {
106 "device_version": "1.0.0",
107 "pid": "0x17AC",
108 "vid": "0x4273"
109 },
110 "ws2812": {
111 "pin": "D2"
112 },
113 "layouts": {
114 "LAYOUT_625_bar": {
115 "layout": [
116 {"matrix": [0, 0], "x": 0, "y": 0},
117 {"matrix": [0, 1], "x": 1, "y": 0},
118 {"matrix": [0, 2], "x": 2, "y": 0},
119 {"matrix": [0, 3], "x": 3, "y": 0},
120 {"matrix": [0, 4], "x": 4, "y": 0},
121 {"matrix": [0, 5], "x": 5, "y": 0},
122 {"matrix": [0, 6], "x": 6, "y": 0},
123 {"matrix": [0, 7], "x": 7, "y": 0},
124 {"matrix": [0, 8], "x": 8, "y": 0},
125 {"matrix": [1, 0], "x": 9, "y": 0},
126 {"matrix": [1, 1], "x": 10, "y": 0},
127 {"matrix": [1, 2], "x": 11, "y": 0},
128 {"matrix": [1, 3], "x": 12, "y": 0},
129 {"matrix": [1, 4], "x": 13, "y": 0, "w": 2},
130 {"matrix": [1, 5], "x": 0, "y": 1, "w": 1.5},
131 {"matrix": [1, 6], "x": 1.5, "y": 1},
132 {"matrix": [1, 7], "x": 2.5, "y": 1},
133 {"matrix": [1, 8], "x": 3.5, "y": 1},
134 {"matrix": [2, 0], "x": 4.5, "y": 1},
135 {"matrix": [2, 1], "x": 5.5, "y": 1},
136 {"matrix": [2, 2], "x": 6.5, "y": 1},
137 {"matrix": [2, 3], "x": 7.5, "y": 1},
138 {"matrix": [2, 4], "x": 8.5, "y": 1},
139 {"matrix": [2, 5], "x": 9.5, "y": 1},
140 {"matrix": [2, 6], "x": 10.5, "y": 1},
141 {"matrix": [2, 7], "x": 11.5, "y": 1},
142 {"matrix": [2, 8], "x": 12.5, "y": 1},
143 {"matrix": [3, 0], "x": 13.5, "y": 1, "w": 1.5},
144 {"matrix": [3, 1], "x": 0, "y": 2, "w": 1.75},
145 {"matrix": [3, 2], "x": 1.75, "y": 2},
146 {"matrix": [3, 3], "x": 2.75, "y": 2},
147 {"matrix": [3, 4], "x": 3.75, "y": 2},
148 {"matrix": [3, 5], "x": 4.75, "y": 2},
149 {"matrix": [3, 6], "x": 5.75, "y": 2},
150 {"matrix": [3, 7], "x": 6.75, "y": 2},
151 {"matrix": [3, 8], "x": 7.75, "y": 2},
152 {"matrix": [4, 0], "x": 8.75, "y": 2},
153 {"matrix": [4, 1], "x": 9.75, "y": 2},
154 {"matrix": [4, 2], "x": 10.75, "y": 2},
155 {"matrix": [4, 3], "x": 11.75, "y": 2},
156 {"matrix": [4, 4], "x": 12.75, "y": 2, "w": 2.25},
157 {"matrix": [4, 5], "x": 15, "y": 2},
158 {"matrix": [4, 6], "x": 0, "y": 3, "w": 2.25},
159 {"matrix": [4, 7], "x": 2.25, "y": 3},
160 {"matrix": [4, 8], "x": 3.25, "y": 3},
161 {"matrix": [5, 0], "x": 4.25, "y": 3},
162 {"matrix": [5, 1], "x": 5.25, "y": 3},
163 {"matrix": [5, 2], "x": 6.25, "y": 3},
164 {"matrix": [5, 3], "x": 7.25, "y": 3},
165 {"matrix": [5, 4], "x": 8.25, "y": 3},
166 {"matrix": [5, 5], "x": 9.25, "y": 3},
167 {"matrix": [5, 6], "x": 10.25, "y": 3},
168 {"matrix": [5, 7], "x": 11.25, "y": 3},
169 {"matrix": [5, 8], "x": 12.25, "y": 3, "w": 2.75},
170 {"matrix": [6, 0], "x": 15, "y": 3},
171 {"matrix": [6, 1], "x": 0, "y": 4, "w": 1.25},
172 {"matrix": [6, 2], "x": 1.25, "y": 4, "w": 1.25},
173 {"matrix": [6, 3], "x": 2.5, "y": 4, "w": 1.25},
174 {"matrix": [6, 4], "x": 3.75, "y": 4, "w": 6.25},
175 {"matrix": [6, 5], "x": 10, "y": 4, "w": 1.25},
176 {"matrix": [6, 6], "x": 11.25, "y": 4, "w": 1.25},
177 {"matrix": [6, 7], "x": 12.5, "y": 4, "w": 1.25},
178 {"matrix": [6, 8], "x": 13.75, "y": 4, "w": 1.25},
179 {"matrix": [7, 0], "x": 15, "y": 4}
180 ]
181 },
182 "LAYOUT_all": {
183 "layout": [
184 {"matrix": [0, 0], "x": 0, "y": 0},
185 {"matrix": [0, 1], "x": 1, "y": 0},
186 {"matrix": [0, 2], "x": 2, "y": 0},
187 {"matrix": [0, 3], "x": 3, "y": 0},
188 {"matrix": [0, 4], "x": 4, "y": 0},
189 {"matrix": [0, 5], "x": 5, "y": 0},
190 {"matrix": [0, 6], "x": 6, "y": 0},
191 {"matrix": [0, 7], "x": 7, "y": 0},
192 {"matrix": [0, 8], "x": 8, "y": 0},
193 {"matrix": [1, 0], "x": 9, "y": 0},
194 {"matrix": [1, 1], "x": 10, "y": 0},
195 {"matrix": [1, 2], "x": 11, "y": 0},
196 {"matrix": [1, 3], "x": 12, "y": 0},
197 {"matrix": [1, 4], "x": 13, "y": 0, "w": 2},
198 {"matrix": [1, 5], "x": 0, "y": 1, "w": 1.5},
199 {"matrix": [1, 6], "x": 1.5, "y": 1},
200 {"matrix": [1, 7], "x": 2.5, "y": 1},
201 {"matrix": [1, 8], "x": 3.5, "y": 1},
202 {"matrix": [2, 0], "x": 4.5, "y": 1},
203 {"matrix": [2, 1], "x": 5.5, "y": 1},
204 {"matrix": [2, 2], "x": 6.5, "y": 1},
205 {"matrix": [2, 3], "x": 7.5, "y": 1},
206 {"matrix": [2, 4], "x": 8.5, "y": 1},
207 {"matrix": [2, 5], "x": 9.5, "y": 1},
208 {"matrix": [2, 6], "x": 10.5, "y": 1},
209 {"matrix": [2, 7], "x": 11.5, "y": 1},
210 {"matrix": [2, 8], "x": 12.5, "y": 1},
211 {"matrix": [3, 0], "x": 13.5, "y": 1, "w": 1.5},
212 {"matrix": [3, 1], "x": 0, "y": 2, "w": 1.75},
213 {"matrix": [3, 2], "x": 1.75, "y": 2},
214 {"matrix": [3, 3], "x": 2.75, "y": 2},
215 {"matrix": [3, 4], "x": 3.75, "y": 2},
216 {"matrix": [3, 5], "x": 4.75, "y": 2},
217 {"matrix": [3, 6], "x": 5.75, "y": 2},
218 {"matrix": [3, 7], "x": 6.75, "y": 2},
219 {"matrix": [3, 8], "x": 7.75, "y": 2},
220 {"matrix": [4, 0], "x": 8.75, "y": 2},
221 {"matrix": [4, 1], "x": 9.75, "y": 2},
222 {"matrix": [4, 2], "x": 10.75, "y": 2},
223 {"matrix": [4, 3], "x": 11.75, "y": 2},
224 {"matrix": [4, 4], "x": 12.75, "y": 2, "w": 2.25},
225 {"matrix": [4, 5], "x": 15, "y": 2},
226 {"matrix": [4, 6], "x": 0, "y": 3, "w": 2.25},
227 {"matrix": [4, 7], "x": 2.25, "y": 3},
228 {"matrix": [4, 8], "x": 3.25, "y": 3},
229 {"matrix": [5, 0], "x": 4.25, "y": 3},
230 {"matrix": [5, 1], "x": 5.25, "y": 3},
231 {"matrix": [5, 2], "x": 6.25, "y": 3},
232 {"matrix": [5, 3], "x": 7.25, "y": 3},
233 {"matrix": [5, 4], "x": 8.25, "y": 3},
234 {"matrix": [5, 5], "x": 9.25, "y": 3},
235 {"matrix": [5, 6], "x": 10.25, "y": 3},
236 {"matrix": [5, 7], "x": 11.25, "y": 3},
237 {"matrix": [5, 8], "x": 12.25, "y": 3, "w": 2.75},
238 {"matrix": [6, 0], "x": 15, "y": 3},
239 {"matrix": [6, 1], "x": 0, "y": 4, "w": 1.25},
240 {"matrix": [6, 2], "x": 1.25, "y": 4, "w": 1.25},
241 {"matrix": [6, 3], "x": 2.5, "y": 4, "w": 1.25},
242 {"matrix": [7, 1], "x": 3.75, "y": 4, "w": 1.5},
243 {"matrix": [7, 2], "x": 5.25, "y": 4},
244 {"matrix": [6, 4], "x": 6.25, "y": 4, "w": 1.25},
245 {"matrix": [7, 3], "x": 7.5, "y": 4},
246 {"matrix": [7, 4], "x": 8.5, "y": 4, "w": 1.5},
247 {"matrix": [6, 5], "x": 10, "y": 4, "w": 1.25},
248 {"matrix": [6, 6], "x": 11.25, "y": 4, "w": 1.25},
249 {"matrix": [6, 7], "x": 12.5, "y": 4, "w": 1.25},
250 {"matrix": [6, 8], "x": 13.75, "y": 4, "w": 1.25},
251 {"matrix": [7, 0], "x": 15, "y": 4}
252 ]
253 }
254 }
255}
diff --git a/keyboards/boardsource/sessanta/keymaps/default/keymap.json b/keyboards/boardsource/sessanta/keymaps/default/keymap.json
new file mode 100644
index 0000000000..b99333c46d
--- /dev/null
+++ b/keyboards/boardsource/sessanta/keymaps/default/keymap.json
@@ -0,0 +1,21 @@
1{
2 "keyboard": "boardsource/sessanta",
3 "keymap": "default",
4 "layout": "LAYOUT_625_bar",
5 "layers": [
6 [
7 "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",
8 "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",
9 "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_VOLU",
10 "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_MPLY",
11 "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "MO(1)", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_VOLD"
12 ],
13 [
14 "QK_BOOT", "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_F13",
15 "QK_RBT", "RGB_MOD", "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_TOG", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
16 "EE_CLR", "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
17 "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
18 "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
19 ]
20 ]
21}
diff --git a/keyboards/boardsource/sessanta/keymaps/via/keymap.json b/keyboards/boardsource/sessanta/keymaps/via/keymap.json
new file mode 100644
index 0000000000..68e8e5fb20
--- /dev/null
+++ b/keyboards/boardsource/sessanta/keymaps/via/keymap.json
@@ -0,0 +1,26 @@
1{
2 "keyboard": "boardsource/sessanta",
3 "keymap": "via",
4 "layout": "LAYOUT_all",
5 "config": {
6 "features": {
7 "via": true
8 }
9 },
10 "layers": [
11 [
12 "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",
13 "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",
14 "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_VOLU",
15 "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_MPLY",
16 "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "MO(1)", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_VOLD"
17 ],
18 [
19 "QK_BOOT", "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_F13",
20 "QK_RBT", "RGB_MOD", "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_TOG", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
21 "EE_CLR", "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
22 "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
23 "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
24 ]
25 ]
26}
diff --git a/keyboards/boardsource/sessanta/readme.md b/keyboards/boardsource/sessanta/readme.md
new file mode 100644
index 0000000000..35c841271c
--- /dev/null
+++ b/keyboards/boardsource/sessanta/readme.md
@@ -0,0 +1,27 @@
1# Sessanta
2
3![image](https://i.imgur.com/ALvvC53.jpeg)
4
5A 60% keyboard offered in an MX or Choc PCB with per-key RGB
6
7* Keyboard Maintainer: [waffle87](https://github.com/waffle87)
8* Hardware Supported: Sessanta PCB w/ Pro Micro compatible microcontroller
9* Hardware Availability: [boardsource.xyz](https://boardsource.xyz)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make boardsource/sessanta:default
14
15Flashing example for this keyboard:
16
17 make boardsource/sessanta:default:flash
18
19See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
20
21## Bootloader
22
23Enter the bootloader in 3 ways:
24
25* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard
26* **Physical reset button**: Briefly press the button on the back of the PCB near microcontroller
27* **Keycode in layout**: Press the key mapped to `QK_BOOT`