Mercurial > louis > kiibohd-controller
comparison Scan/MBC-55X/scan_loop.c @ 450:48ede6680396 master
Updating MBC-55X scan module
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sun, 12 Jun 2016 15:53:25 -0700 |
parents | 9afed592bcb5 |
children |
comparison
equal
deleted
inserted
replaced
449:45feb80a2ad1 | 450:48ede6680396 |
---|---|
1 /* Copyright (C) 2013,2014 by Jacob Alexander | 1 /* Copyright (C) 2013,2014,2016 by Jacob Alexander |
2 * | 2 * |
3 * Permission is hereby granted, free of charge, to any person obtaining a copy | 3 * Permission is hereby granted, free of charge, to any person obtaining a copy |
4 * of this software and associated documentation files (the "Software"), to deal | 4 * of this software and associated documentation files (the "Software"), to deal |
5 * in the Software without restriction, including without limitation the rights | 5 * in the Software without restriction, including without limitation the rights |
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
23 | 23 |
24 // Compiler Includes | 24 // Compiler Includes |
25 #include <Lib/ScanLib.h> | 25 #include <Lib/ScanLib.h> |
26 | 26 |
27 // Project Includes | 27 // Project Includes |
28 #include <kll_defs.h> | |
28 #include <led.h> | 29 #include <led.h> |
29 #include <macro.h> | 30 #include <macro.h> |
30 #include <print.h> | 31 #include <print.h> |
31 | 32 |
32 // Local Includes | 33 // Local Includes |
36 | 37 |
37 // ----- Defines ----- | 38 // ----- Defines ----- |
38 | 39 |
39 | 40 |
40 // ----- Macros ----- | 41 // ----- Macros ----- |
42 | |
43 | |
44 // ----- Enums ----- | |
45 | |
46 // Keypress States | |
47 typedef enum KeyPosition { | |
48 KeyState_Off = 0, | |
49 KeyState_Press = 1, | |
50 KeyState_Hold = 2, | |
51 KeyState_Release = 3, | |
52 KeyState_Invalid, | |
53 } KeyPosition; | |
41 | 54 |
42 | 55 |
43 | 56 |
44 // ----- Variables ----- | 57 // ----- Variables ----- |
45 | 58 |
210 // Exception keys | 223 // Exception keys |
211 case 0x08: // ^H | 224 case 0x08: // ^H |
212 case 0x09: // ^I | 225 case 0x09: // ^I |
213 case 0x0D: // ^M | 226 case 0x0D: // ^M |
214 case 0x1B: // ^[ | 227 case 0x1B: // ^[ |
215 Macro_bufferAdd( keyValue ); | 228 Macro_keyState( keyValue, KeyState_Press ); |
216 break; | 229 break; |
217 // 0x40 Offset Keys | 230 // 0x40 Offset Keys |
218 // Add Ctrl key and offset to the lower alphabet | 231 // Add Ctrl key and offset to the lower alphabet |
219 case 0x00: // ^@ | 232 case 0x00: // ^@ |
220 case 0x1C: // "^\" | 233 case 0x1C: // "^\" |
221 case 0x1D: // ^] | 234 case 0x1D: // ^] |
222 case 0x1E: // ^^ | 235 case 0x1E: // ^^ |
223 case 0x1F: // ^_ | 236 case 0x1F: // ^_ |
224 Macro_bufferAdd( 0xF6 ); | 237 Macro_keyState( 0xF6, KeyState_Press ); |
225 Macro_bufferAdd( keyValue + 0x40 ); | 238 Macro_keyState( keyValue + 0x40, KeyState_Press ); |
226 break; | 239 break; |
227 | 240 |
228 // - Add Shift key and offset to non-shifted key - | 241 // - Add Shift key and offset to non-shifted key - |
229 // 0x10 Offset Keys | 242 // 0x10 Offset Keys |
230 case 0x21: // ! | 243 case 0x21: // ! |
231 case 0x23: // # | 244 case 0x23: // # |
232 case 0x24: // $ | 245 case 0x24: // $ |
233 case 0x25: // % | 246 case 0x25: // % |
234 Macro_bufferAdd( 0xF5 ); | 247 Macro_keyState( 0xF5, KeyState_Press ); |
235 Macro_bufferAdd( keyValue + 0x10 ); | 248 Macro_keyState( keyValue + 0x10, KeyState_Press ); |
236 break; | 249 break; |
237 // 0x11 Offset Keys | 250 // 0x11 Offset Keys |
238 case 0x26: // & | 251 case 0x26: // & |
239 case 0x28: // ( | 252 case 0x28: // ( |
240 Macro_bufferAdd( 0xF5 ); | 253 Macro_keyState( 0xF5, KeyState_Press ); |
241 Macro_bufferAdd( keyValue + 0x11 ); | 254 Macro_keyState( keyValue + 0x11, KeyState_Press ); |
242 break; | 255 break; |
243 // 0x07 Offset Keys | 256 // 0x07 Offset Keys |
244 case 0x29: // ) | 257 case 0x29: // ) |
245 Macro_bufferAdd( 0xF5 ); | 258 Macro_keyState( 0xF5, KeyState_Press ); |
246 Macro_bufferAdd( keyValue + 0x07 ); | 259 Macro_keyState( keyValue + 0x07, KeyState_Press ); |
247 break; | 260 break; |
248 // -0x0E Offset Keys | 261 // -0x0E Offset Keys |
249 case 0x40: // @ | 262 case 0x40: // @ |
250 Macro_bufferAdd( 0xF5 ); | 263 Macro_keyState( 0xF5, KeyState_Press ); |
251 Macro_bufferAdd( keyValue - 0x0E ); | 264 Macro_keyState( keyValue - 0x0E, KeyState_Press ); |
252 break; | 265 break; |
253 // 0x0E Offset Keys | 266 // 0x0E Offset Keys |
254 case 0x2A: // * | 267 case 0x2A: // * |
255 Macro_bufferAdd( 0xF5 ); | 268 Macro_keyState( 0xF5, KeyState_Press ); |
256 Macro_bufferAdd( keyValue + 0x0E ); | 269 Macro_keyState( keyValue + 0x0E, KeyState_Press ); |
257 break; | 270 break; |
258 // 0x12 Offset Keys | 271 // 0x12 Offset Keys |
259 case 0x2B: // + | 272 case 0x2B: // + |
260 Macro_bufferAdd( 0xF5 ); | 273 Macro_keyState( 0xF5, KeyState_Press ); |
261 Macro_bufferAdd( keyValue + 0x12 ); | 274 Macro_keyState( keyValue + 0x12, KeyState_Press ); |
262 break; | 275 break; |
263 // 0x05 Offset Keys | 276 // 0x05 Offset Keys |
264 case 0x22: // " | 277 case 0x22: // " |
265 Macro_bufferAdd( 0xF5 ); | 278 Macro_keyState( 0xF5, KeyState_Press ); |
266 Macro_bufferAdd( keyValue + 0x05 ); | 279 Macro_keyState( keyValue + 0x05, KeyState_Press ); |
267 break; | 280 break; |
268 // 0x01 Offset Keys | 281 // 0x01 Offset Keys |
269 case 0x3A: // : | 282 case 0x3A: // : |
270 Macro_bufferAdd( 0xF5 ); | 283 Macro_keyState( 0xF5, KeyState_Press ); |
271 Macro_bufferAdd( keyValue + 0x01 ); | 284 Macro_keyState( keyValue + 0x01, KeyState_Press ); |
272 break; | 285 break; |
273 // -0x10 Offset Keys | 286 // -0x10 Offset Keys |
274 case 0x3C: // < | 287 case 0x3C: // < |
275 case 0x3E: // > | 288 case 0x3E: // > |
276 case 0x3F: // ? | 289 case 0x3F: // ? |
277 Macro_bufferAdd( 0xF5 ); | 290 Macro_keyState( 0xF5, KeyState_Press ); |
278 Macro_bufferAdd( keyValue - 0x10 ); | 291 Macro_keyState( keyValue - 0x10, KeyState_Press ); |
279 break; | 292 break; |
280 // -0x28 Offset Keys | 293 // -0x28 Offset Keys |
281 case 0x5E: // ^ | 294 case 0x5E: // ^ |
282 Macro_bufferAdd( 0xF5 ); | 295 Macro_keyState( 0xF5, KeyState_Press ); |
283 Macro_bufferAdd( keyValue - 0x28 ); | 296 Macro_keyState( keyValue - 0x28, KeyState_Press ); |
284 break; | 297 break; |
285 // -0x32 Offset Keys | 298 // -0x32 Offset Keys |
286 case 0x5F: // _ | 299 case 0x5F: // _ |
287 Macro_bufferAdd( 0xF5 ); | 300 Macro_keyState( 0xF5, KeyState_Press ); |
288 Macro_bufferAdd( keyValue - 0x32 ); | 301 Macro_keyState( keyValue - 0x32, KeyState_Press ); |
289 break; | 302 break; |
290 // -0x20 Offset Keys | 303 // -0x20 Offset Keys |
291 case 0x7B: // { | 304 case 0x7B: // { |
292 case 0x7C: // | | 305 case 0x7C: // | |
293 case 0x7D: // } | 306 case 0x7D: // } |
294 Macro_bufferAdd( 0xF5 ); | 307 Macro_keyState( 0xF5, KeyState_Press ); |
295 Macro_bufferAdd( keyValue - 0x20 ); | 308 Macro_keyState( keyValue - 0x20, KeyState_Press ); |
296 break; | 309 break; |
297 // -0x1E Offset Keys | 310 // -0x1E Offset Keys |
298 case 0x7E: // ~ | 311 case 0x7E: // ~ |
299 Macro_bufferAdd( 0xF5 ); | 312 Macro_keyState( 0xF5, KeyState_Press ); |
300 Macro_bufferAdd( keyValue - 0x1E ); | 313 Macro_keyState( keyValue - 0x1E, KeyState_Press ); |
301 break; | 314 break; |
302 // All other keys | 315 // All other keys |
303 default: | 316 default: |
304 // Ctrl Characters are from 0x00 to 0x1F, excluding: | 317 // Ctrl Characters are from 0x00 to 0x1F, excluding: |
305 // 0x08 - Backspace | 318 // 0x08 - Backspace |
310 | 323 |
311 // 0x60 Offset Keys | 324 // 0x60 Offset Keys |
312 // Add Ctrl key and offset to the lower alphabet | 325 // Add Ctrl key and offset to the lower alphabet |
313 if ( keyValue >= 0x00 && keyValue <= 0x1F ) | 326 if ( keyValue >= 0x00 && keyValue <= 0x1F ) |
314 { | 327 { |
315 Macro_bufferAdd( 0xF6 ); | 328 Macro_keyState( 0xF6, KeyState_Press ); |
316 Macro_bufferAdd( keyValue + 0x60 ); | 329 Macro_keyState( keyValue + 0x60, KeyState_Press ); |
317 } | 330 } |
318 | 331 |
319 // Shift Characters are from 0x41 to 0x59 | 332 // Shift Characters are from 0x41 to 0x59 |
320 // No exceptions here :D | 333 // No exceptions here :D |
321 // Add Shift key and offset to the lower alphabet | 334 // Add Shift key and offset to the lower alphabet |
322 else if ( keyValue >= 0x41 && keyValue <= 0x5A ) | 335 else if ( keyValue >= 0x41 && keyValue <= 0x5A ) |
323 { | 336 { |
324 Macro_bufferAdd( 0xF5 ); | 337 Macro_keyState( 0xF5, KeyState_Press ); |
325 Macro_bufferAdd( keyValue + 0x20 ); | 338 Macro_keyState( keyValue + 0x20, KeyState_Press ); |
326 } | 339 } |
327 | 340 |
328 // Everything else | 341 // Everything else |
329 else | 342 else |
330 { | 343 { |
331 Macro_bufferAdd( keyValue ); | 344 Macro_keyState( keyValue, KeyState_Press ); |
332 } | 345 } |
333 break; | 346 break; |
334 } | 347 } |
335 } | 348 } |
336 | 349 |
351 | 364 |
352 return 0; | 365 return 0; |
353 } | 366 } |
354 | 367 |
355 // Signal KeyIndex_Buffer that it has been properly read | 368 // Signal KeyIndex_Buffer that it has been properly read |
356 void Scan_finishedWithBuffer( uint8_t sentKeys ) | 369 void Scan_finishedWithMacro( uint8_t sentKeys ) |
357 { | 370 { |
358 } | 371 } |
359 | 372 |
360 // Signal that the keys have been properly sent over USB | 373 // Signal that the keys have been properly sent over USB |
361 void Scan_finishedWithUSBBuffer( uint8_t sentKeys ) | 374 void Scan_finishedWithOutput( uint8_t sentKeys ) |
362 { | 375 { |
363 cli(); // Disable Interrupts | 376 cli(); // Disable Interrupts |
364 | 377 |
365 // Reset the buffer counter | 378 // Reset the buffer counter |
366 KeyIndex_BufferUsed = 0; | 379 KeyIndex_BufferUsed = 0; |
377 // NOTE: Does nothing with the MBC-55x | 390 // NOTE: Does nothing with the MBC-55x |
378 void Scan_unlockKeyboard( void ) | 391 void Scan_unlockKeyboard( void ) |
379 { | 392 { |
380 } | 393 } |
381 | 394 |
395 // NOTE: Does nothing with the MBC-55x | |
396 void Scan_currentChange( unsigned int current ) | |
397 { | |
398 } | |
399 |