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