<?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>Trying to implement longpress function for keypad, but don&amp;#39;t know what to set in the device tree for input-device</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/110167/trying-to-implement-longpress-function-for-keypad-but-don-t-know-what-to-set-in-the-device-tree-for-input-device</link><description>I&amp;#39;m running V2.60 NCD on a custom n5340 processor and I can&amp;#39;t decipher what is the proper device tree based on the examples. 
 I have a 10 button keypad and want to detect short and long presses on all the keys. 
 i tried the test suite code here: v2</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 20 Sep 2024 13:15:11 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/110167/trying-to-implement-longpress-function-for-keypad-but-don-t-know-what-to-set-in-the-device-tree-for-input-device" /><item><title>RE: Trying to implement longpress function for keypad, but don't know what to set in the device tree for input-device</title><link>https://devzone.nordicsemi.com/thread/503275?ContentTypeID=1</link><pubDate>Fri, 20 Sep 2024 13:15:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bccb36a3-d7e7-43f2-9d40-a22d888b18d8</guid><dc:creator>never</dc:creator><description>&lt;p&gt;&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/members/rocketman"&gt;RocketMan&lt;/a&gt;&amp;nbsp;You should pass a different phandle (&lt;strong&gt;buttons&lt;/strong&gt;)&amp;nbsp;to the &lt;strong&gt;longpress&lt;/strong&gt; device to be as an&amp;nbsp;&lt;strong&gt;input&lt;/strong&gt;&amp;nbsp;reference (input = &amp;lt;&amp;amp;buttons&amp;gt;). So your device tree will look like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;	buttons: buttons {
		 compatible = &amp;quot;gpio-keys&amp;quot;;
		 btntopleft: button_0 {
			gpios = &amp;lt;&amp;amp;gpio0 23 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
			label = &amp;quot;BTN_TOP_LEFT&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_0&amp;gt;;
		 };		 
		btntopmid: button_1 {
			gpios = &amp;lt;&amp;amp;gpio1 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;			
			label = &amp;quot;BTN_TOP_MIDDLE&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_1&amp;gt;;
		};		 
		btntopright: button_2 {
			gpios = &amp;lt;&amp;amp;gpio1 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;				
			label = &amp;quot;BTN_TOP_RIGHT&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_2&amp;gt;;
		};
		btnleft: button_3 {
			gpios = &amp;lt;&amp;amp;gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;			
			label = &amp;quot;BTN_LEFT&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_3&amp;gt;;
		};	
		btndpadleft: button_4 {
			gpios = &amp;lt;&amp;amp;gpio0 24 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
			label = &amp;quot;BTN_DPAD_LEFT&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_4&amp;gt;;
		};			 
		btndpadtop: button_5 {
			gpios = &amp;lt;&amp;amp;gpio0 25 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
			label = &amp;quot;BTN_DPAD_TOP&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_5&amp;gt;;
		 };
		btndpadright: button_6 {
		   	gpios = &amp;lt;&amp;amp;gpio0 26 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
		   	label = &amp;quot;BTN_DPAD_RIGHT&amp;quot;;	
			   zephyr,code = &amp;lt;INPUT_KEY_6&amp;gt;;	
		}; 		 
		 btndpadbot: button_7 {
			gpios = &amp;lt;&amp;amp;gpio0 28 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
			label = &amp;quot;BTN_DPAD_BOTTOM&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_7&amp;gt;;
		 };
		 btnright: button_8 {
			gpios = &amp;lt;&amp;amp;gpio0 27 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
			label = &amp;quot;BTN_RIGHT&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_8&amp;gt;;
		};
		 btnbot: button_9 {
//			gpios = &amp;lt;&amp;amp;gpio0 29 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;
			gpios = &amp;lt;&amp;amp;gpio1 10 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)&amp;gt;;		// trigger for testing 
			label = &amp;quot;BTN_BOTTOM&amp;quot;;
			zephyr,code = &amp;lt;INPUT_KEY_9&amp;gt;;
		};
	};
	
    // No need for kp_input_device

	longpress: longpress {
		input = &amp;lt;&amp;amp;buttons&amp;gt;;
		compatible = &amp;quot;zephyr,input-longpress&amp;quot;;
        input-codes = &amp;lt;INPUT_KEY_0&amp;gt;,&amp;lt;INPUT_KEY_1&amp;gt;,&amp;lt;INPUT_KEY_2&amp;gt;,&amp;lt;INPUT_KEY_3&amp;gt;,&amp;lt;INPUT_KEY_4&amp;gt;,&amp;lt;INPUT_KEY_5&amp;gt;,&amp;lt;INPUT_KEY_6&amp;gt;,&amp;lt;INPUT_KEY_7&amp;gt;,&amp;lt;INPUT_KEY_8&amp;gt;, &amp;lt;INPUT_KEY_9&amp;gt;;
        short-codes = &amp;lt;INPUT_KEY_A&amp;gt;,&amp;lt;INPUT_KEY_B&amp;gt;,&amp;lt;INPUT_KEY_C&amp;gt;,&amp;lt;INPUT_KEY_D&amp;gt;,&amp;lt;INPUT_KEY_E&amp;gt;,&amp;lt;INPUT_KEY_F&amp;gt;,&amp;lt;INPUT_KEY_G&amp;gt;,&amp;lt;INPUT_KEY_H&amp;gt;,&amp;lt;INPUT_KEY_I&amp;gt;, &amp;lt;INPUT_KEY_J&amp;gt;;  
		long-codes  = &amp;lt;INPUT_KEY_K&amp;gt;,&amp;lt;INPUT_KEY_L&amp;gt;,&amp;lt;INPUT_KEY_M&amp;gt;,&amp;lt;INPUT_KEY_N&amp;gt;,&amp;lt;INPUT_KEY_O&amp;gt;,&amp;lt;INPUT_KEY_P&amp;gt;,&amp;lt;INPUT_KEY_Q&amp;gt;,&amp;lt;INPUT_KEY_R&amp;gt;,&amp;lt;INPUT_KEY_S&amp;gt;, &amp;lt;INPUT_KEY_T&amp;gt;;
        long-delay-ms = &amp;lt;1000&amp;gt;;
    };&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;In your source code you don&amp;#39;t need lines&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;static const struct device *const kp_dev = DEVICE_DT_GET(
    DT_NODELABEL(kp_input_device));&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;and&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;DEVICE_DT_DEFINE(DT_INST(0, vnd_input_device), NULL, NULL, NULL, NULL,
		 PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, NULL);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;since your keypad device is actually &lt;strong&gt;buttons&lt;/strong&gt; and they&amp;#39;ve already been instantiated by Zephyr.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trying to implement longpress function for keypad, but don't know what to set in the device tree for input-device</title><link>https://devzone.nordicsemi.com/thread/478589?ContentTypeID=1</link><pubDate>Fri, 12 Apr 2024 15:33:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:59b23677-3e4f-42e5-b4cd-afbd8a2cc5a8</guid><dc:creator>RocketMan</dc:creator><description>&lt;p&gt;thanks Siguard.&amp;nbsp; That is working, but I was trying to use the longpress feature in the devicetree (using CONFIG_INPUT=y).&amp;nbsp; I thought that would be an easier way.&amp;nbsp; The other question using the longpress feature, if it would work to detect two buttons pressed together.&amp;nbsp; I&amp;#39;ll stay with your solution unless I hear otherwise.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trying to implement longpress function for keypad, but don't know what to set in the device tree for input-device</title><link>https://devzone.nordicsemi.com/thread/478489?ContentTypeID=1</link><pubDate>Fri, 12 Apr 2024 08:50:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8a87425-c9e7-4c0e-9ca6-621b6b91e368</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Have a look at this sample:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/martelmy/NCS_examples/tree/main/peripherals/long_press_button"&gt;https://github.com/martelmy/NCS_examples/tree/main/peripherals/long_press_button&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;does that help?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Sigurd Hellesvik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trying to implement longpress function for keypad, but don't know what to set in the device tree for input-device</title><link>https://devzone.nordicsemi.com/thread/478423?ContentTypeID=1</link><pubDate>Fri, 12 Apr 2024 02:59:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f7fa4908-cbfe-4bf6-88df-00e91e7a06d8</guid><dc:creator>RocketMan</dc:creator><description>&lt;p&gt;here&amp;#39;s the code where I get the keys from the device tree in case I&amp;#39;m missing something...&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gpio_dt_spec&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;key_topleft&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;GPIO_DT_SPEC_GET&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;DT_NODELABEL&lt;/span&gt;&lt;span&gt;(btntopleft), gpios); &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;gpio_pin_configure_dt&lt;/span&gt;&lt;span&gt;(&amp;amp;&lt;/span&gt;&lt;span&gt;key_topleft&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;GPIO_INPUT&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>