From 633ef1441b23755186f95b55957c50fb5c568e9f Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 12 Oct 2021 00:41:31 +1100 Subject: handwired/nicekey optimisation (#14788) * handwired/nicekey optimisation * Add some consts * Read address from progmem, pass it into send_string_with_delay_P --- .../handwired/nicekey/keymaps/default/keymap.c | 187 ++++++++++++++------- keyboards/handwired/nicekey/readme.md | 9 +- keyboards/handwired/nicekey/rules.mk | 19 ++- 3 files changed, 138 insertions(+), 77 deletions(-) diff --git a/keyboards/handwired/nicekey/keymaps/default/keymap.c b/keyboards/handwired/nicekey/keymaps/default/keymap.c index 139ea6a3be..d7539a5c17 100644 --- a/keyboards/handwired/nicekey/keymaps/default/keymap.c +++ b/keyboards/handwired/nicekey/keymaps/default/keymap.c @@ -1,75 +1,132 @@ #include QMK_KEYBOARD_H +#define RANDOM_STRING_DELAY 100 + enum custom_keycodes { - RANDOM_STRING_MACRO = SAFE_RANGE + RANDOM_STRING_MACRO = SAFE_RANGE }; -const int delay = 100; -const char *sentences[] = { - "I hope you have a great day!\n", - "You are an awesome person.\n", - "I wish I knew you better, you seem nice!\n", - "Your views restore my faith in humanity\n", - "You are as cool as a norm-critical disney princess\n", - "You have impeccable manners.\n", - "You are making me smile\n", - "You are making a difference\n", - "You bring out the best in other people\n", - "You are all that and a super-size bag of chips.\n", - "You are not someone I pretend to not see in public.\n", - "Are you a beaver, because damn.\n", - "I bet you make babies smile.\n", - "You are awkward, in a cute way. Like an elevator ride, but with puppies.\n", - "Looking like a complete idiot with you is really fun.\n", - "If you cooked something really bad, I would tell you instead of eating it.\n", - "I love how passionate you are about your hobby.\n", - "Our conversations always make me feel better.\n", - "It is amazing how far out of your way you go to help people.\n", - "I am so glad that you wrote something here.\n", - "Hey you! How nice to see a friendly person in my feed!\n", - "I hope we know each other for a long time.\n", - "I bet if Britney Spears knew you, 2008 would have gone a lot differently.\n", - "I would trust you with my passwords.\n", - "You are a great problem solver\n", - "I would love to hear you laugh!\n", - "Please, have a monologue about your week, I just want to listen to you!\n", - "You are very far from being Trump.\n", - "I think my dog might like you more than me\n", - "I feel like you would be a great person to do a group project with\n", - "I bet animals love you\n", - "I bet even Kanye would like you more than himself\n", - "You are just doing a great job at life\n", - "I like how you are challenging me.\n", - "You would do be a great mother!\n", - "I... Baked bread for you.\n", - "Wow. You.\n", - "You would not have let that balrog pass!\n", - "Thank you.\n", - "You would be standing out in a crowd\n", - "Your sense of style is amazing.\n", - "You have a beautiful mind.\n", - "I like that big juicy brain of yours\n", - "I would share my cinnamon bun with you\n", - "I like you more than i like my moms apple pie\n", - "You give me the same feeling as a summers night\n", - "I enjoy you more than the click of my mechanical switch\n", - "I would let you pop my bubble wrap\n", - "Being near you is like being inside of a poem\n" +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + RANDOM_STRING_MACRO + ) +}; + +const char sentence_01[] PROGMEM = "I hope you have a great day!"; +const char sentence_02[] PROGMEM = "You are an awesome person."; +const char sentence_03[] PROGMEM = "I wish I knew you better, you seem nice!"; +const char sentence_04[] PROGMEM = "Your views restore my faith in humanity"; +const char sentence_05[] PROGMEM = "You are as cool as a norm-critical disney princess"; +const char sentence_06[] PROGMEM = "You have impeccable manners."; +const char sentence_07[] PROGMEM = "You are making me smile"; +const char sentence_08[] PROGMEM = "You are making a difference"; +const char sentence_09[] PROGMEM = "You bring out the best in other people"; +const char sentence_10[] PROGMEM = "You are all that and a super-size bag of chips."; +const char sentence_11[] PROGMEM = "You are not someone I pretend to not see in public."; +const char sentence_12[] PROGMEM = "Are you a beaver, because damn."; +const char sentence_13[] PROGMEM = "I bet you make babies smile."; +const char sentence_14[] PROGMEM = "You are awkward, in a cute way. Like an elevator ride, but with puppies."; +const char sentence_15[] PROGMEM = "Looking like a complete idiot with you is really fun."; +const char sentence_16[] PROGMEM = "If you cooked something really bad, I would tell you instead of eating it."; +const char sentence_17[] PROGMEM = "I love how passionate you are about your hobby."; +const char sentence_18[] PROGMEM = "Our conversations always make me feel better."; +const char sentence_19[] PROGMEM = "It is amazing how far out of your way you go to help people."; +const char sentence_20[] PROGMEM = "I am so glad that you wrote something here."; +const char sentence_21[] PROGMEM = "Hey you! How nice to see a friendly person in my feed!"; +const char sentence_22[] PROGMEM = "I hope we know each other for a long time."; +const char sentence_23[] PROGMEM = "I bet if Britney Spears knew you, 2008 would have gone a lot differently."; +const char sentence_24[] PROGMEM = "I would trust you with my passwords."; +const char sentence_25[] PROGMEM = "You are a great problem solver"; +const char sentence_26[] PROGMEM = "I would love to hear you laugh!"; +const char sentence_27[] PROGMEM = "Please, have a monologue about your week, I just want to listen to you!"; +const char sentence_28[] PROGMEM = "You are very far from being Trump."; +const char sentence_29[] PROGMEM = "I think my dog might like you more than me"; +const char sentence_30[] PROGMEM = "I feel like you would be a great person to do a group project with"; +const char sentence_31[] PROGMEM = "I bet animals love you"; +const char sentence_32[] PROGMEM = "I bet even Kanye would like you more than himself"; +const char sentence_33[] PROGMEM = "You are just doing a great job at life"; +const char sentence_34[] PROGMEM = "I like how you are challenging me."; +const char sentence_35[] PROGMEM = "You would do be a great mother!"; +const char sentence_36[] PROGMEM = "I... Baked bread for you."; +const char sentence_37[] PROGMEM = "Wow. You."; +const char sentence_38[] PROGMEM = "You would not have let that balrog pass!"; +const char sentence_39[] PROGMEM = "Thank you."; +const char sentence_40[] PROGMEM = "You would be standing out in a crowd"; +const char sentence_41[] PROGMEM = "Your sense of style is amazing."; +const char sentence_42[] PROGMEM = "You have a beautiful mind."; +const char sentence_43[] PROGMEM = "I like that big juicy brain of yours"; +const char sentence_44[] PROGMEM = "I would share my cinnamon bun with you"; +const char sentence_45[] PROGMEM = "I like you more than i like my moms apple pie"; +const char sentence_46[] PROGMEM = "You give me the same feeling as a summers night"; +const char sentence_47[] PROGMEM = "I enjoy you more than the click of my mechanical switch"; +const char sentence_48[] PROGMEM = "I would let you pop my bubble wrap"; +const char sentence_49[] PROGMEM = "Being near you is like being inside of a poem"; + +PGM_P const sentences[] PROGMEM = { + sentence_01, + sentence_02, + sentence_03, + sentence_04, + sentence_05, + sentence_06, + sentence_07, + sentence_08, + sentence_09, + sentence_10, + sentence_11, + sentence_12, + sentence_13, + sentence_14, + sentence_15, + sentence_16, + sentence_17, + sentence_18, + sentence_19, + sentence_20, + sentence_21, + sentence_22, + sentence_23, + sentence_24, + sentence_25, + sentence_26, + sentence_27, + sentence_28, + sentence_29, + sentence_30, + sentence_31, + sentence_32, + sentence_33, + sentence_34, + sentence_35, + sentence_36, + sentence_37, + sentence_38, + sentence_39, + sentence_40, + sentence_41, + sentence_42, + sentence_43, + sentence_44, + sentence_45, + sentence_46, + sentence_47, + sentence_48, + sentence_49 }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - int sentences_size = sizeof(sentences) / sizeof(sentences[0]); - int i = rand() % sentences_size; - switch(keycode) { - case RANDOM_STRING_MACRO: - send_string_with_delay(sentences[i], delay); - return false; + if (record->event.pressed) { + int sentences_size = sizeof(sentences) / sizeof(sentences[0]); + int i = rand() % sentences_size; + + switch (keycode) { + case RANDOM_STRING_MACRO: + send_string_with_delay_P((PGM_P)pgm_read_word(&(sentences[i])), RANDOM_STRING_DELAY); + tap_code(KC_ENT); + + return false; + } } - } - return true; -}; -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT( RANDOM_STRING_MACRO ) -}; + return true; +} diff --git a/keyboards/handwired/nicekey/readme.md b/keyboards/handwired/nicekey/readme.md index e108b38dd1..8215fc2705 100644 --- a/keyboards/handwired/nicekey/readme.md +++ b/keyboards/handwired/nicekey/readme.md @@ -2,14 +2,13 @@ ![The first NiceKey](https://s3.eu-central-1.amazonaws.com/mindlevel/nicekey.jpg) - Custom handwired nicekey, a one key keyboard that writes random compliments. -Keyboard Maintainer: [spydon](https://github.com/spydon) -Hardware Supported: Custom handwired one key -Hardware Availability: +* Keyboard Maintainer: [spydon](https://github.com/spydon) +* Hardware Supported: Custom handwired one key +* Hardware Availability: n/a -Switch must be connected to pins C6 and B6. +Switch must be connected to pins C6 and B6. Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/handwired/nicekey/rules.mk b/keyboards/handwired/nicekey/rules.mk index 45ade5409a..6302e743d4 100644 --- a/keyboards/handwired/nicekey/rules.mk +++ b/keyboards/handwired/nicekey/rules.mk @@ -5,12 +5,17 @@ MCU = atmega32u4 BOOTLOADER = caterina # Build Options -# comment out to disable the options. +# change yes to no to disable # BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output -- cgit v1.2.1