<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nrf52832 nkro</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/117197/nrf52832-nkro</link><description>Hi Q&amp;amp;A 
 At present, there is no routine found on the Internet about NRF52832 Bluetooth sending more than 6 characters(NKRO) 
 I used nRF5_SDK_17.1.0， The following is the modified report_map_data[] and BOOT_KB_INPUT_REPORT_MAX_SIZE ,But never made It</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 19 Dec 2024 05:54:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/117197/nrf52832-nkro" /><item><title>RE: nrf52832 nkro</title><link>https://devzone.nordicsemi.com/thread/515638?ContentTypeID=1</link><pubDate>Thu, 19 Dec 2024 05:54:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ac65373e-a862-47ed-bb11-417b3f64ec7e</guid><dc:creator>zbxiong</dc:creator><description>&lt;p&gt;Ok, thanks for your reply!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf52832 nkro</title><link>https://devzone.nordicsemi.com/thread/515425?ContentTypeID=1</link><pubDate>Wed, 18 Dec 2024 10:27:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c882e26d-2bc6-4200-ab97-11e94a743b76</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;br /&gt;I&amp;#39;m afraid I couldn&amp;#39;t help on this. We have very limited experience with NKRO.&amp;nbsp;&lt;br /&gt;Our suggestion is to take a look at this open source project:&amp;nbsp;&lt;br /&gt;&lt;a href="https://zmk.dev/docs/config/bluetooth"&gt;https://zmk.dev/docs/config/bluetooth&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s based on Zephyr and it has NKRO supported.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf52832 nkro</title><link>https://devzone.nordicsemi.com/thread/515364?ContentTypeID=1</link><pubDate>Wed, 18 Dec 2024 01:45:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b8bea7e2-693f-46bf-8a34-321f379460ee</guid><dc:creator>zbxiong</dc:creator><description>&lt;p&gt;&lt;a class="internal-link view-user-profile" href="https://devzone.nordicsemi.com/members/hungbui"&gt;Hung Bui&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;I read the QMK NKRO generation rules.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;nkro is to split the code returned by the key by shifting it and then send it.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define NKRO_REPORT_BITS 30

typedef struct {
    uint8_t report_id;
    uint8_t mods;
    uint8_t bits[NKRO_REPORT_BITS];
}report_nkro_t;

void add_key_bit(report_nkro_t* nkro_report, uint8_t code) {
    if ((code &amp;gt;&amp;gt; 3) &amp;lt; NKRO_REPORT_BITS) {
        nkro_report-&amp;gt;bits[code &amp;gt;&amp;gt; 3] |= 1 &amp;lt;&amp;lt; (code &amp;amp; 7);
    }
}

void add_key_to_report(uint8_t key) {
    if (keyboard_protocol &amp;amp;&amp;amp; keymap_config.nkro) {
        add_key_bit(nkro_report, key);
        return;
    }
}

void host_nkro_send(report_nkro_t *report) {
    if (!driver) return;
    report-&amp;gt;report_id = REPORT_ID_NKRO;
    (*driver-&amp;gt;send_nkro)(report);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;But I don&amp;#39;t understand how the NRF52832 receiver sends this data.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;        0x05, 0x01,                     // Usage Page (Generic Desktop),
        0x09, 0x06,                     // Usage (Keyboard),
        0xA1, 0x01,                     // Collection (Application),
        0x85, REPORT_ID_KEYBOARD,       //   Report ID
        // bitmap of modifiers
        0x75, 0x01,                     //   Report Size (1),
        0x95, 0x08,                     //   Report Count (8),
        0x05, 0x07,                     //   Usage Page (Key Codes),
        0x19, 0xE0,                     //   Usage Minimum (224),
        0x29, 0xE7,                     //   Usage Maximum (231),
        0x15, 0x00,                     //   Logical Minimum (0),
        0x25, 0x01,                     //   Logical Maximum (1),
        0x81, 0x02,                     //   Input (Data, Variable, Absolute), ;Modifier byte
        // LED output report
        0x95, 0x05,                     //   Report Count (5),
        0x75, 0x01,                     //   Report Size (1),
        0x05, 0x08,                     //   Usage Page (LEDs),
        0x19, 0x01,                     //   Usage Minimum (1),
        0x29, 0x05,                     //   Usage Maximum (5),
        0x91, 0x02,                     //   Output (Data, Variable, Absolute),
        0x95, 0x01,                     //   Report Count (1),
        0x75, 0x03,                     //   Report Size (3),
        0x91, 0x03,                     //   Output (Constant),
        // bitmap of keys
        0x95, (NKRO_REPORT_BITS-1)*8,   //   Report Count (),
        0x75, 0x01,                     //   Report Size (1),
        0x15, 0x00,                     //   Logical Minimum (0),
        0x25, 0x01,                     //   Logical Maximum(1),
        0x05, 0x07,                     //   Usage Page (Key Codes),
        0x19, 0x00,                     //   Usage Minimum (0),
        0x29, NKRO_REPORT_BITS * 8 - 1, //   Usage Maximum (),
        0x81, 3,                        //0x02,   //   Input (Data, Variable, Absolute),
        0xc0,                           // End Collection&lt;/pre&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf52832 nkro</title><link>https://devzone.nordicsemi.com/thread/514466?ContentTypeID=1</link><pubDate>Wed, 11 Dec 2024 10:27:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9900f987-a6bc-461b-824b-1307ece2eb26</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Zbxiong,&amp;nbsp;&lt;br /&gt;Could you let me know what exactly happen when you try to test ?&amp;nbsp;&lt;br /&gt;There is a related ticket you can find here:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/97486/encountered-a-problem-sending-more-than-6-bytes-of-data-using-the-hid-service"&gt;Encountered a problem sending more than 6 bytes of data using the hid service&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The last reply pointed to this&amp;nbsp;&lt;a href="https://learn.adafruit.com/custom-hid-devices-in-circuitpython/n-key-rollover-nkro-hid-device"&gt;https://learn.adafruit.com/custom-hid-devices-in-circuitpython/n-key-rollover-nkro-hid-device&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Could you take a look at the page to see the report there and check if you can use that in your project ?&amp;nbsp;&lt;br /&gt;We have quite limited experience with NKRO here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>