alvicstep.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "kinesis.h"
  2. // begin section origin https://github.com/alvicstep/tmk_keyboard
  3. void all_led_off(void)
  4. {
  5. PORTD = 0b11111111;
  6. }
  7. void all_led_on(void)
  8. {
  9. PORTD = 0b00000000;
  10. }
  11. void num_lock_led_on(void)
  12. {
  13. PORTD = 0b11101111;
  14. }
  15. void caps_lock_led_on(void)
  16. {
  17. PORTD = 0b01111111;
  18. }
  19. void scroll_lock_led_on(void)
  20. {
  21. PORTD = 0b11011111;
  22. }
  23. void keypad_led_on(void)
  24. {
  25. PORTD = 0b10111111;
  26. }
  27. void blink_all_leds(void)
  28. {
  29. all_led_on();
  30. _delay_ms(500);
  31. all_led_off();
  32. _delay_ms(100);
  33. caps_lock_led_on();
  34. _delay_ms(100);
  35. num_lock_led_on();
  36. _delay_ms(100);
  37. scroll_lock_led_on();
  38. _delay_ms(100);
  39. keypad_led_on();
  40. _delay_ms(100);
  41. //back
  42. scroll_lock_led_on();
  43. _delay_ms(100);
  44. num_lock_led_on();
  45. _delay_ms(100);
  46. caps_lock_led_on();
  47. _delay_ms(100);
  48. all_led_off();
  49. }
  50. // End section origin https://github.com/alvicstep/tmk_keyboard
  51. void matrix_init_kb(void) {
  52. blink_all_leds();
  53. matrix_init_user();
  54. }
  55. void matrix_scan_kb(void) {
  56. // put your looping keyboard code here
  57. // runs every cycle (a lot)
  58. matrix_scan_user();
  59. }
  60. bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
  61. // put your per-action keyboard code here
  62. // runs for every action, just before processing by the firmware
  63. return process_record_user(keycode, record);
  64. }
  65. void led_set_kb(uint8_t usb_led) {
  66. // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
  67. //Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
  68. uint8_t leds = 0xF0;
  69. if (usb_led & 1 << USB_LED_NUM_LOCK)
  70. leds &= ~0x10;
  71. if (usb_led & 1 << USB_LED_CAPS_LOCK)
  72. leds &= ~0x80;
  73. if (usb_led & 1 << USB_LED_SCROLL_LOCK)
  74. leds &= ~0x20;
  75. PORTD = (PORTD & 0x0F) | leds;
  76. led_set_user(usb_led);
  77. }