<?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>I have problem when i use nRF52840 to make a touchpad</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/122151/i-have-problem-when-i-use-nrf52840-to-make-a-touchpad</link><description>Hello, 
 I have made a PCB has 4 buttons and touchpad, now I want to drive all of them. 
 1. one button for left button of mouse. 2. one button for right button of mouse. 3. one button for copy compose key(CTRL + C) of keyboard. 4. the last button for</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 13 Jun 2025 18:50:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/122151/i-have-problem-when-i-use-nrf52840-to-make-a-touchpad" /><item><title>RE: I have problem when i use nRF52840 to make a touchpad</title><link>https://devzone.nordicsemi.com/thread/539251?ContentTypeID=1</link><pubDate>Fri, 13 Jun 2025 18:50:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd101349-d1ac-40f2-b1bf-0cf3e65e3cb7</guid><dc:creator>Hieu</dc:creator><description>[quote user="Harvey.Zhang"]Do you mean to use an endpoint using touchpad ID and another endpoint for rest?[/quote]
&lt;p&gt;We are working with HID Service over GATT, a BLE feature, and not USB HID, right? Unlike USB with endpoints, in BLE GATT, we are working with HID Service. What I mean is creating two HID Service instances, in a way that if you would perform service discovery on the device, you will see two HID Services.&lt;/p&gt;
[quote user="Harvey.Zhang"]&lt;p&gt;So we need 426 bytes for whole touchpad report descriptor.&lt;/p&gt;
&lt;p&gt;It seems need to simplify the report descriptor.&lt;/p&gt;[/quote]
&lt;p&gt;If you can optimize the descriptor size to under 512, that would be the best solution.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: I have problem when i use nRF52840 to make a touchpad</title><link>https://devzone.nordicsemi.com/thread/539153?ContentTypeID=1</link><pubDate>Fri, 13 Jun 2025 08:32:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b458c138-679c-47e2-a88e-c0791a221f04</guid><dc:creator>Harvey.Zhang</dc:creator><description>&lt;p&gt;Oh! thank you very much.&lt;/p&gt;
&lt;p&gt;Do you mean to use an endpoint using touchpad ID and another endpoint for rest?&lt;/p&gt;
&lt;p&gt;It looks can reduce the size of a single endpoint.&lt;/p&gt;
&lt;p&gt;This is the descriptor of one finger.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;
	/** 1st finger  73 */  
	0x05, 0x0d, 						/** USAGE_PAGE (Digitizers) */  
    0x09, 0x22,                         /**   USAGE (Finger) */  
    0xa1, 0x02,                         /**   COLLECTION (Logical)  */  
    0x15, 0x00,                         /**       LOGICAL_MINIMUM (0) */  
    0x25, 0x01,                         /**       LOGICAL_MAXIMUM (1) */  
    0x09, 0x47,                         /**       USAGE (Confidence) */  
    0x09, 0x42,                         /**       USAGE (Tip switch) */  
    0x95, 0x02,                         /**       REPORT_COUNT (2) */  
    0x75, 0x01,                         /**       REPORT_SIZE (1) */  
    0x81, 0x02,                         /**       INPUT (Data,Var,Abs) */ 
    0x95, 0x01,                         /**       REPORT_COUNT (1) */ 
    0x75, 0x02,                         /**       REPORT_SIZE (3) */ 
    0x25, 0x02,                         /**       LOGICAL_MAXIMUM (2) */ 
    0x09, 0x51,                         /**       USAGE (Contact Identifier) */ 
    0x81, 0x02,                         /**       INPUT (Data,Var,Abs) */ 
    0x75, 0x01,                         /**       REPORT_SIZE (1) */ 
    0x95, 0x04,                         /**       REPORT_COUNT (3) */ 
    0x81, 0x03,                         /**       INPUT (Cnst,Var,Abs) */ 
    0x05, 0x01,                         /**       USAGE_PAGE (Generic Desk.. */ 
    0x15, 0x00,                         /**       LOGICAL_MINIMUM (0) */ 
    0x26, 0x13, 0x0f,                   /**       LOGICAL_MAXIMUM (4095)  //3859 */ 
    0x75, 0x10,                         /**       REPORT_SIZE (16) */ 
    0x55, 0x0e,                         /**       UNIT_EXPONENT (-2) */ 
    0x65, 0x13,                         /**       UNIT(Inch,EngLinear) */ 
    0x09, 0x30,                         /**       USAGE (X) */ 
    0x35, 0x00,                         /**       PHYSICAL_MINIMUM (0) */ 
    0x46, 0xad, 0x01,                   /**       PHYSICAL_MAXIMUM (429,4.29inch)   800=0x0320 */ 
    0x95, 0x01,                         /**       REPORT_COUNT (1) */ 
    0x81, 0x02,                         /**       INPUT (Data,Var,Abs) */ 
    0x46, 0xD8, 0x00,                   /**       PHYSICAL_MAXIMUM (216,2.16inch)  0x0226 */ 
    0x15, 0x00,                         /**       LOGICAL_MINIMUM (0) */ 
    0x26, 0xe3, 0x07,                   /**       LOGICAL_MAXIMUM (2019) */ 
    0x09, 0x31,                         /**       USAGE (Y) */ 
    0x81, 0x02,                         /**       INPUT (Data,Var,Abs) */ 
    0xc0,                               /**    END_COLLECTION */ &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;We have five finger and touchpad report id, this is total 373 bytes.&lt;/p&gt;
&lt;p&gt;And that need to be added for the scanning time, keys and the number of contacts, as follow,&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/**  scan time&amp;amp; buttons. end input. +57 */ 
    0x05, 0x0d, 						/** USAGE_PAGE (Digitizers) */ 
    0x55, 0x0C,                         /**    UNIT_EXPONENT (-4) */ 
    0x66, 0x01, 0x10,                   /**    UNIT (Seconds) */ 
    0x47, 0xff, 0xff, 0x00, 0x00,      /**     PHYSICAL_MAXIMUM (65535) */ 
    0x27, 0xff, 0xff, 0x00, 0x00,         /**  LOGICAL_MAXIMUM (65535) */ 
    0x75, 0x10,                           /**  REPORT_SIZE (16) */ 
    0x95, 0x01,                           /**  REPORT_COUNT (1) */ 
    0x05, 0x0d,                         /**    USAGE_PAGE (Digitizers) */ 
    0x09, 0x56,                         /**    USAGE (Scan Time) */ 
    0x81, 0x02,                           /**  INPUT (Data,Var,Abs) */ 
    0x09, 0x54,                         /**    USAGE (Contact count) */ 
    0x25, 0x7f,                           /**  LOGICAL_MAXIMUM (127) */ 
    0x95, 0x01,                         /**    REPORT_COUNT (1) */ 
    0x75, 0x08,                         /**    REPORT_SIZE (8) */ 
    0x81, 0x02,                         /**    INPUT (Data,Var,Abs) */ 
    0x05, 0x09,                         /**    USAGE_PAGE (Button) */ 
    0x09, 0x01,                         /**    USAGE_(Button 1) */ 
    0x09, 0x02,                         /**    USAGE_(Button 2) */ 
    0x09, 0x03,                         /**    USAGE_(Button 3) */ 
    0x25, 0x01,                         /**    LOGICAL_MAXIMUM (1) */ 
    0x75, 0x01,                         /**    REPORT_SIZE (1) */ 
    0x95, 0x03,                         /**    REPORT_COUNT (3) */ 
    0x81, 0x02,                         /**    INPUT (Data,Var,Abs) */ 
    0x95, 0x05,                          /**   REPORT_COUNT (5) */ 
    0x81, 0x03,                         /**    INPUT (Cnst,Var,Abs) */ &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This is total 53 bytes.&lt;/p&gt;
&lt;p&gt;So we need 426 bytes for whole touchpad report descriptor.&lt;/p&gt;
&lt;p&gt;It seems need to simplify the report descriptor.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: I have problem when i use nRF52840 to make a touchpad</title><link>https://devzone.nordicsemi.com/thread/538897?ContentTypeID=1</link><pubDate>Wed, 11 Jun 2025 19:28:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3fec89ae-3c61-4fb0-9301-ffe8ccca9bce</guid><dc:creator>Hieu</dc:creator><description>&lt;p&gt;Hello Harvey.Zhang,&lt;/p&gt;
&lt;p&gt;615 bytes is longer than 512, which is the maximum length of&amp;nbsp;a HID Service. In this case, you need to split your record into two half, and support two HIDS instances. Refer to &lt;a href="https://www.bluetooth.com/specifications/specs/html/?src=HOGP_v1.0/out/en/index-en.html#UUID-2974713d-e7f9-ea51-51b4-1a4c1a71a719"&gt;section 2.5 of the HID over GATT Profile Specification&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, I experimented with it a little bit 2 years ago and found that Android devices don&amp;#39;t handle two HIDS instances very well. It might be safer to see if you can minimize the descriptor further.&lt;/p&gt;
&lt;p&gt;I am not familiar with a touchpad report descriptor, but I know for sure there have been mouse and keyboard report descriptor done successfully. Does a touchpad require far more reports than a mouse?&lt;/p&gt;
&lt;p&gt;Hieu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>