<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h3id="example-keycode-injection"tabindex="-1">Keycode Injection <aclass="header-anchor"href="#example-keycode-injection"aria-label="Permalink to "Keycode Injection {#example-keycode-injection}""></a></h3><p>This example types out opening and closing curly braces, then taps the left arrow key to move the cursor between the two.</p><divclass="language-c vp-adaptive-theme"><buttontitle="Copy Code"class="copy"></button><spanclass="lang">c</span><preclass="shiki shiki-themes github-light github-dark vp-code"><code><spanclass="line"><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SEND_STRING</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"{}"</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> SS_TAP</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(X_LEFT));</span></span></code></pre></div><p>This example types Ctrl+A, then Ctrl+C, without releasing Ctrl.</p><divclass="language-c vp-adaptive-theme"><buttontitle="Copy Code"class="copy"></button><spanclass="lang">c</span><preclass="shiki shiki-themes github-light github-dark vp-code"><code><spanclass="line"><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SEND_STRING</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">SS_LCTL</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"ac"</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span></code></pre></div><h2id="api"tabindex="-1">API <aclass="header-anchor"href="#api"aria-label="Permalink to "API {#api}""></a></h2><h3id="api-send-string"tabindex="-1"><code>void send_string(const char *string)</code><aclass="header-anchor"href="#api-send-string"aria-label="Permalink to "`void send_string(const char *string)` {#api-send-string}""></a></h3><p>Type out a string of ASCII characters.</p><p>This function simply calls <code>send_string_with_delay(string, 0)</code>.</p><h4id="api-send-string-arguments"tabindex="-1">Arguments <aclass="header-anchor"href="#api-send-string-arguments"aria-label="Permalink to "Arguments {#api-send-string-arguments}""></a></h4><ul><li><code>const char *string</code><br> The string to type out.</li></ul><hr><h3id="api-send-string-with-delay"tabindex="-1"><code>void send_string_with_delay(const char *string, uint8_t interval)</code><aclass="header-anchor"href="#api-send-string-with-delay"aria-label="Permalink to "`void send_string_with_delay(const char *string, uint8_t interval)` {#api-send-string-with-delay}""></a></h3><p>Type out a string of ASCII characters, with a delay between each character.</p><h4id="api-send-string-with-delay-arguments"tabindex="-1">Arguments <aclass="header-anchor"href="#api-send-string-with-delay-arguments"aria-label="Permalink to "Arguments {#api-send-string-with-delay-arguments}""></a></h4><ul><li><code>const char *string</code><br> The string to type out.</li><li><code>uint8_t interval</code><br> The amount of time, in milliseconds, to wait before typing the next character.</li></ul><hr><h3id="api-send-string-p"tabindex="-1"><code>void send_string_P(const char *string)</code><aclass="header-anchor"href="#api-send-string-p"aria-label="Permalink to "`void send_string_P(const char *string)` {#api-send-string-p}""></a></h3><p>Type out a PROGMEM string of ASCII characters.</p><p>On ARM devices, this function is simply an alias for <code>send_string_with_delay(string, 0)</code>.</p><h4id="api-send-string-p-arguments"tabindex="-1">Arguments <aclass="header-anchor"href="#api-send-string-p-arguments"aria-label="Permalink to "Arguments {#api-send-string-p-arguments}""></a></h4><ul><li><code>const cha