<?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>Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/81008/zephyr-hid-mouse-and-keyboard-sample</link><description>I need to implement a mouse and keyboard (combo) HOG device. There are mouse and keyboard samples, but may I integrate them in just one? 
 Is there any samplecode? 
 I have already write the reports data describing mouse and keyboard, each one with its</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 01 Nov 2021 13:45:21 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/81008/zephyr-hid-mouse-and-keyboard-sample" /><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/336886?ContentTypeID=1</link><pubDate>Mon, 01 Nov 2021 13:45:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d577365a-324f-4be6-900d-31e78368c409</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;That is great news Aleks!&lt;/p&gt;
&lt;p&gt;The best of luck with your project &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/336651?ContentTypeID=1</link><pubDate>Fri, 29 Oct 2021 11:17:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d8673c2c-d1fd-48e2-9ed1-d7b85d8605e1</guid><dc:creator>Marcelo Aleks</dc:creator><description>&lt;p&gt;Good morning [perhaps afternoon !-) ]&amp;nbsp; &lt;span&gt;Torbj&amp;oslash;rn!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; I had success!!!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; My mistake was that I do not created a second characteristic for the mouse. Now everything is working pretty well!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; I really appreciated your help, Thank you!!!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/336639?ContentTypeID=1</link><pubDate>Fri, 29 Oct 2021 10:32:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ccf74f00-256f-4e53-8999-4511e11ea29f</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Aleks&lt;/p&gt;
&lt;p&gt;Are you able to share your sample with me so I can try to reproduce the issue on my side?&lt;/p&gt;
&lt;p&gt;If you don&amp;#39;t want to share your code in a public case just let me know, and I will make the case private.&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/336519?ContentTypeID=1</link><pubDate>Thu, 28 Oct 2021 14:04:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:30004a0f-8fe6-450e-8b71-f7cbc41dcf6d</guid><dc:creator>Marcelo Aleks</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;span&gt;Torbj&amp;oslash;rn,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; I really do not understand what is happening.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; See, below is my report map:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="json"&gt;    0x05, 0x01, // Usage Pg (Generic Desktop)
    0x09, 0x06, // Usage (Keyboard)
    0xA1, 0x01, // Collection: (Application)
    0x85, 0x01, // Report Id (1)
    //
    0x05, 0x07, //   Usage Pg (Key Codes)
    0x19, 0xE0, //   Usage Min (224)
    0x29, 0xE7, //   Usage Max (231)
    0x15, 0x00, //   Log Min (0)
    0x25, 0x01, //   Log Max (1)
    //
    //   Modifier byte
    0x75, 0x01, //   Report Size (1)
    0x95, 0x08, //   Report Count (8)
    0x81, 0x02, //   Input: (Data, Variable, Absolute)
    //
    //   Reserved byte
    0x95, 0x01, //   Report Count (1)
    0x75, 0x08, //   Report Size (8)
    0x81, 0x01, //   Input: (Constant)
    //
    //   LED report
    0x95, 0x05, //   Report Count (5)
    0x75, 0x01, //   Report Size (1)
    0x05, 0x08, //   Usage Pg (LEDs)
    0x19, 0x01, //   Usage Min (1)
    0x29, 0x05, //   Usage Max (5)
    0x91, 0x02, //   Output: (Data, Variable, Absolute)
    //
    //   LED report padding
    0x95, 0x01, //   Report Count (1)
    0x75, 0x03, //   Report Size (3)
    0x91, 0x01, //   Output: (Constant)
    //
    //   Key arrays (6 bytes)
    0x95, 0x06, //   Report Count (6)
    0x75, 0x08, //   Report Size (8)
    0x15, 0x00, //   Log Min (0)
    0x25, 0x65, //   Log Max (101)
    0x05, 0x07, //   Usage Pg (Key Codes)
    0x19, 0x00, //   Usage Min (0)
    0x29, 0x65, //   Usage Max (101)
    0x81, 0x00, //   Input: (Data, Array)
    //
    0xC0, // End Collection
    //


    0x05, 0x01, // Usage Page (Generic Desktop)
    0x09, 0x02, // Usage (Mouse)
    0xA1, 0x01, // Collection (Application)
    0x85, 0x02, // Report Id (2)
    0x09, 0x01, //   Usage (Pointer)
    0xA1, 0x00, //   Collection (Physical)
    0x05, 0x09, //     Usage Page (Buttons)
    0x19, 0x01, //     Usage Minimum (01) - Button 1
    0x29, 0x03, //     Usage Maximum (03) - Button 3
    0x15, 0x00, //     Logical Minimum (0)
    0x25, 0x01, //     Logical Maximum (1)
    0x75, 0x01, //     Report Size (1)
    0x95, 0x03, //     Report Count (3)
    0x81, 0x02, //     Input (Data, Variable, Absolute) - Button states
    0x75, 0x05, //     Report Size (5)
    0x95, 0x01, //     Report Count (1)
    0x81, 0x01, //     Input (Constant) - Padding or Reserved bits
    0x05, 0x01, //     Usage Page (Generic Desktop)
    0x09, 0x30, //     Usage (X)
    0x09, 0x31, //     Usage (Y)
    0x09, 0x38, //     Usage (Wheel)
    0x15, 0x81, //     Logical Minimum (-127)
    0x25, 0x7F, //     Logical Maximum (127)
    0x75, 0x08, //     Report Size (8)
    0x95, 0x03, //     Report Count (3)
    0x81, 0x06, //     Input (Data, Variable, Relative) - X &amp;amp; Y coordinate
    0xC0,       //   End Collection
    0xC0,       // End Collection
&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;When i connect the device (named SAFE), the OS (Linux) got 2 new devices :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;dmesg:

[ 1556.472958] input: SAFE Keyboard as /devices/virtual/misc/uhid/0005:0000:0000.0050/input/input176
[ 1556.473985] input: SAFE Mouse as /devices/virtual/misc/uhid/0005:0000:0000.0050/input/input177
[ 1556.474294] hid-generic 0005:0000:0000.0050: input,hidraw3: BLUETOOTH HID v0.01 Keyboard [SAFE] on 00:1a:7d:da:71:0a&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;From btmon, i am intending to send messages to mouse using &amp;#39;2&amp;#39; as preamble so i can verify:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;gt; ACL Data RX: Handle 71 flags 0x02 dlen 12                                                                                                                 #108 [hci2] 6.972096
      ATT: Handle Value Notification (0x1b) len 7
        Handle: 0x0024
          Data: 0200000000
&amp;gt; ACL Data RX: Handle 71 flags 0x02 dlen 12                                                                                                                 #109 [hci2] 7.021703
      ATT: Handle Value Notification (0x1b) len 7
        Handle: 0x0024
          Data: 0201001400  &amp;lt;----- (button pressed dx=0, dy=20, wheel=0) ok!
...&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But it is being interpreted as&amp;nbsp;keyboard output,&amp;nbsp; echoing only characters....&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Do you have any clue?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&amp;nbsp;Aleks&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/336289?ContentTypeID=1</link><pubDate>Wed, 27 Oct 2021 17:51:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f141eb9a-09d2-463f-a714-7c1b7ccfb2db</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Aleks&lt;/p&gt;
&lt;p&gt;It shouldn&amp;#39;t be necessary to make any changes to the way the service is put together, no.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Either you have to setup a single HoG service that implements both mouse and keyboard as one (using different report ID&amp;#39;s and a combined report map), or you would need to configure two independent HoG services that implement mouse and keyboard separately.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Have you tried to combine the hid_init() function from the two examples into one?&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/336056?ContentTypeID=1</link><pubDate>Tue, 26 Oct 2021 18:49:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd28f30e-0885-4fa1-952e-f5de750bcd17</guid><dc:creator>Marcelo Aleks</dc:creator><description>&lt;p&gt;Hi &lt;span&gt;Torbj&amp;oslash;rn&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I am working in a project a little complex and we are&amp;nbsp;trying to &amp;quot;materialize&amp;quot;&amp;nbsp;all the proof of concepts to be sure that the project is really feasible. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, one of them, is get the composite device working.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I got the hog (samples/bluetooth/peripheral_hids) sample in the zephyr repository and I already had success to make it work with keyboard and mouse report maps, but only in separate.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;report id starts in 1.&lt;/p&gt;
&lt;p&gt;I am not sure if the ATT must be changed when I use both&amp;nbsp;devices&amp;nbsp;at the same time.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;BT_GATT_SERVICE_DEFINE(
    hog_svc, BT_GATT_PRIMARY_SERVICE(BT_UUID_HIDS),
    BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_INFO, BT_GATT_CHRC_READ,
                           BT_GATT_PERM_READ, read_info, NULL, &amp;amp;info),
    BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT_MAP, BT_GATT_CHRC_READ,
                           BT_GATT_PERM_READ, read_report_map, NULL, NULL),
    BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_REPORT,
                           BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY,
                           BT_GATT_PERM_READ, read_input_report, NULL, //AUTHEN
                           NULL),
    BT_GATT_CCC(input_ccc_changed,
                BT_GATT_PERM_READ | BT_GATT_PERM_WRITE), //AUTHEN read e write
    BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT_REF, BT_GATT_PERM_READ, read_report,
                       NULL, &amp;amp;input),
    BT_GATT_CHARACTERISTIC(BT_UUID_HIDS_CTRL_POINT,
                           BT_GATT_CHRC_WRITE_WITHOUT_RESP, BT_GATT_PERM_WRITE,
                           NULL, write_ctrl_point, &amp;amp;ctrl_point),


);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
&lt;div style="height:13.4095px;left:318.162px;position:absolute;top:206.171px;width:44.981px;" id="gtx-anchor"&gt;&lt;/div&gt;
&lt;div class="jfk-bubble gtx-bubble" style="left:-146px;top:92px;"&gt;
&lt;div class="jfk-bubble-content-id" id="bubble-8"&gt;
&lt;div id="gtx-host"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="jfk-bubble-closebtn-id jfk-bubble-closebtn"&gt;&lt;/div&gt;
&lt;div class="jfk-bubble-arrow-id jfk-bubble-arrow jfk-bubble-arrowdown" style="left:332.662px;"&gt;
&lt;div class="jfk-bubble-arrowimplbefore"&gt;&lt;/div&gt;
&lt;div class="jfk-bubble-arrowimplafter"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/335877?ContentTypeID=1</link><pubDate>Tue, 26 Oct 2021 08:25:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:12d092de-2adc-4b7d-8150-a38ba1177ae1</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Aleks&lt;/p&gt;
&lt;p&gt;Have you made sure that all the report ID&amp;#39;s in the report map are unique, and that the values correspond to the ones you send in the payload?&lt;/p&gt;
&lt;p&gt;Also, I believe the report ID has to start at 1 and increment from there, not from 0.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Maybe you can share the HIDS init function with me so I can have a look at it?&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/335821?ContentTypeID=1</link><pubDate>Mon, 25 Oct 2021 16:49:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:115ae82e-b5a5-4fb7-9e4f-235e881fdd26</guid><dc:creator>Marcelo Aleks</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/members/ovrebekk"&gt;ovrebekk&lt;/a&gt;&amp;nbsp;Thank you for your answer!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have already created a unique report map, and i&amp;nbsp; am sending the&amp;nbsp;reports with different &amp;quot;report id&amp;quot; (as i defined in the map) in the&amp;nbsp;first&amp;nbsp;byte, but it still not works.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It seems the report id is being ignored.&lt;/p&gt;
&lt;p&gt;Do i need to do something else when i define multiple devices?&lt;/p&gt;
&lt;p&gt;Regards, Aleks&lt;/p&gt;
&lt;p&gt;ps: I am using Zephyr framework&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="height:13.4095px;left:8px;position:absolute;top:158.114px;width:40.3238px;" id="gtx-anchor"&gt;&lt;/div&gt;
&lt;div class="jfk-bubble gtx-bubble" style="left:13px;top:2px;"&gt;
&lt;div class="jfk-bubble-content-id" id="bubble-3"&gt;
&lt;div id="gtx-host"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="jfk-bubble-closebtn-id jfk-bubble-closebtn"&gt;&lt;/div&gt;
&lt;div class="jfk-bubble-arrow-id jfk-bubble-arrow jfk-bubble-arrowdown" style="left:20px;"&gt;
&lt;div class="jfk-bubble-arrowimplbefore"&gt;&lt;/div&gt;
&lt;div class="jfk-bubble-arrowimplafter"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr HID mouse and keyboard sample</title><link>https://devzone.nordicsemi.com/thread/335789?ContentTypeID=1</link><pubDate>Mon, 25 Oct 2021 13:57:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:03250f20-1069-42cd-bd75-117151d8b9f7</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Aleks&lt;/p&gt;
&lt;p&gt;It should be possible to combine the peripheral_hids_mouse and peripheral_hids_keyboard samples into one, but it requires a bit of manual cut and paste to make it work.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Essentially you need to define both the mouse and keyboard in one large report map, and setup the rest of the hids init accordingly.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alternatively it should be possible to configure the&amp;nbsp;nrf_desktop application to run mouse and keyboard on the same device. For more information about the nrf_desktop reference design, please have a look &lt;a href="http://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.7.0/nrf/applications/nrf_desktop/README.html"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>