<?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>HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/86848/hid-connect-key-and-modifier-sending-and-keyboard-state</link><description>Hi, 
 I am using ble_sdk_app_hids_keyboard example: 
 https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.0.0%2Fble_sdk_app_hids_keyboard.html 
 I try to HID connect an iOS MPA, toggle the keyboard and send HID keys. 
</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 19 Apr 2022 07:27:18 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/86848/hid-connect-key-and-modifier-sending-and-keyboard-state" /><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/363444?ContentTypeID=1</link><pubDate>Tue, 19 Apr 2022 07:27:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:72939914-4b47-4839-9889-8223f64f37b4</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Kobi,&lt;/p&gt;
[quote user="kobinrf"]On another matter, could u tell me what is the HID version supported by the nRF52840?[/quote]
&lt;p&gt;I see that for the HID over USB, the version is 1.1.1, and it has been for a while (several SDK releases back). But I am not sure that this is relevant for HID over BLE. If it is, I would assume that it is the same version as HID over USB.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/363341?ContentTypeID=1</link><pubDate>Mon, 18 Apr 2022 09:54:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b606caf1-472b-4098-b2ed-6e3b3fe1412c</guid><dc:creator>kobinrf</dc:creator><description>&lt;p&gt;&lt;span&gt;Hey Edvin,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I think I found the issue,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I changed the report IDs to start from 1 and not from 0.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;It is a little wired&amp;nbsp;but it did the job.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;On another matter, could u tell me what is the HID version supported by the nRF52840?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;tnx,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kobi&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/363135?ContentTypeID=1</link><pubDate>Wed, 13 Apr 2022 09:06:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3a7413ec-d9b7-4068-9eb2-f32d7de20008</guid><dc:creator>kobinrf</dc:creator><description>&lt;p&gt;Hey Edvin,&lt;/p&gt;
&lt;p&gt;1) The spotlight is just a sequence of chars sent with the HID protocol (modifier: 0x08, key: 0x2C) that causes the iOS phone to leave currently running application and move to a window called spotlight.&lt;/p&gt;
&lt;p&gt;The toggle&amp;nbsp;is also a report sent with the HID, that just brings up/down the keyboard on the iOS phone. To add this I changed the&amp;nbsp;&lt;span&gt;hids_init function as shown in the first replay above.&amp;nbsp; In short I added a report to the&amp;nbsp;report_map_data array and changed the size of&amp;nbsp;input_report_array array to 2. (please see the first replay I made)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In the example supplied&amp;nbsp;by nrf, pressing button 1 sends a char (modifier: 0x00, key: 0x0f), while if also holding button 2, the char is sent as capital letter. This is done by changing the data sent with the HID as follows:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;data[modifier_index] |= 0x02.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;While modifier_index is 0, and 0x02 simulates&amp;nbsp;a left shift press, which will cause the letter to be capital.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The thing is, after I changed the&amp;nbsp;hids_init function, the letters are always shown in the iOS as small letters. The data sent is similar, but the letters in the iOS are small. I imagen it has something&amp;nbsp;to do with the way the&amp;nbsp;report_map_data&amp;nbsp;array is written. Just did not find the reason.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2) When I connect to iOS phone, if the user was in the middle of typing ,the keyboard in the iOS phone is up and the user can keep on typing. I wished to find a way, so when the nrf connects the iOS phone, the keyboard will be disabled.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;There is a way to disable the keyboard in the iOS phone and this is done by the toggle I added and described above. The thing is, this functionality&amp;nbsp;is binary, and can only be toggled from 0-&amp;gt;1 and vice versa. It can not be set to one of the states. So, if for example, the user in the iOS phone was not typing while the nrf&amp;nbsp;&lt;/span&gt;connection, if I will send the toggle report, the keyboard will be toggled up and the user will be able to use it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/363071?ContentTypeID=1</link><pubDate>Tue, 12 Apr 2022 20:10:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0a9e2a25-97d2-404e-a533-4394714502e0</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Kobi,&lt;/p&gt;
&lt;p&gt;I was not aware of such a toggle function. Are you sure it is not just to have your application not send HID updates when the device is toggled off (or even disconnect to save power)? Either way this seems like a sort of state that you would need to keep track of in your application, or is it something that the computer can send to the keyboard as well (commands to toggle on/off)?&lt;/p&gt;
&lt;p&gt;I guess this is sort of like capslock, right?&lt;/p&gt;
&lt;p&gt;At least I see from the ble_app_hids_keyboard example that the capslock is always started with m_caps_on = false. According to the example comments, the host will re-send the output report containing the caps lock state. If you say that this spotlight functionality is causing it to print in capital letters, it may be that the&amp;nbsp;on_hid_rep_char_write() function is a bit aggressive, interpreting the output report messages to being caps lock reports?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Does the log from the nRF say anything useful when you are testing this spotlight functionality?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/363054?ContentTypeID=1</link><pubDate>Tue, 12 Apr 2022 14:04:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e9620f20-a9b9-4a68-8b0d-75e890beb3ab</guid><dc:creator>kobinrf</dc:creator><description>&lt;p&gt;Hey Edvin,&lt;/p&gt;
&lt;p&gt;First, happy Easter!&lt;/p&gt;
&lt;p&gt;1) By state I meant if the keyboard is toggled on or off, meaning does the user able to enter chars - if the kb is toggled on, it is shown on the screen and prints are enabled. If the kb is toggled off, it is not shown and no prints from the user are allowed.&lt;/p&gt;
&lt;p&gt;2) Maybe the HID or the nrf allows a way to read the descriptor of the OS keyboard, to see if the keyboard is toggled on/off.&lt;/p&gt;
&lt;p&gt;3) Please see my comment below and the use of the&amp;nbsp;hids_init function. As I said, this way of configuration enables the toggle, but somehow, interrupts with printing capital letters (using the 0x02 in the modifier field.)&lt;/p&gt;
&lt;p&gt;tnx alot!&lt;/p&gt;
&lt;p&gt;Kobi&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/363041?ContentTypeID=1</link><pubDate>Tue, 12 Apr 2022 13:37:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:951e618f-0391-43a0-bf75-c2c3f8b49ced</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
[quote user=""]1) On HID connect, the state of the keyboard is unknown[/quote]
&lt;p&gt;What state do you mean? Are you talking about caps lock?&lt;/p&gt;
&lt;p&gt;I guess 2) also depends on that question.&lt;/p&gt;
[quote user=""]3) I have been able to write characters to the screen (a, b, c..) using key - 0x04, 0x05 .. and modifiers 0x00. However, when trying to send other sequences (such as spotlight - modifier 0x08, key 0x2C), the HID send has no effect. I am using the upper example, so no sure what could go wrong.[/quote]
&lt;p&gt;What do you mean by spotlight?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I suspect that this is not really a question about our example, but more a question about the HID protocol?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Please note that we are very short staffed here in Norway due to Easter Holidays this week (and Monday next week). This will lead to a longer than usual response time. I am sorry for the inconvenience.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: HID connect, key and modifier sending and keyboard state</title><link>https://devzone.nordicsemi.com/thread/362991?ContentTypeID=1</link><pubDate>Tue, 12 Apr 2022 10:35:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aee15db3-682e-4a50-a10c-e39a57ed1fe0</guid><dc:creator>kobinrf</dc:creator><description>&lt;p&gt;I used the following HID init function flow:&lt;/p&gt;
&lt;p&gt;static void hids_init(void)&lt;br /&gt;{&lt;br /&gt; ret_code_t err_code;&lt;br /&gt; ble_hids_init_t hids_init_obj;&lt;br /&gt; ble_hids_inp_rep_init_t * p_input_report;&lt;br /&gt; ble_hids_outp_rep_init_t * p_output_report;&lt;br /&gt; ble_hids_feature_rep_init_t * p_feature_report;&lt;br /&gt; uint8_t hid_info_flags;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;static ble_hids_inp_rep_init_t input_report_array[2];&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt; static ble_hids_outp_rep_init_t output_report_array[1];&lt;br /&gt; static ble_hids_feature_rep_init_t feature_report_array[1];&lt;br /&gt; static uint8_t report_map_data[] =&lt;br /&gt; {&lt;br /&gt; 0x05, 0x01, // Usage Page (Generic Desktop)&lt;br /&gt;...&lt;/p&gt;
&lt;p&gt;0xC0,&lt;/p&gt;
&lt;p&gt;// End Collection (Application)&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;// Report ID 2: Advanced buttons&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x05, 0x0C, // Usage Page (Consumer)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x09, 0x01, // Usage (Consumer Control)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0xA1, 0x01, // Collection (Application)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x85, 0x01, // Report Id (1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x15, 0x00, // Logical minimum (0)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x25, 0x01, // Logical maximum (1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x75, 0x01, // Report Size (1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x95, 0x01, // Report Count (1)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;0x0A, 0xAE, 0x01, // Usage (AL Keyboard Layout)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0x81, 0x06, // Input (Data,Value,Relative,Bit Field)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; 0xC0 // End Collection&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt; };&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;memset((void *)input_report_array, 0, 2 * sizeof(ble_hids_inp_rep_init_t));&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt; memset((void *)output_report_array, 0, sizeof(ble_hids_outp_rep_init_t));&lt;br /&gt; memset((void *)feature_report_array, 0, sizeof(ble_hids_feature_rep_init_t));&lt;/p&gt;
&lt;p&gt;// Initialize HID Service&lt;br /&gt; p_input_report = &amp;amp;input_report_array[INPUT_REPORT_KEYS_INDEX];&lt;br /&gt; p_input_report-&amp;gt;max_len = INPUT_REPORT_KEYS_MAX_LEN;&lt;br /&gt; p_input_report-&amp;gt;rep_ref.report_id = INPUT_REP_REF_ID;&lt;br /&gt; p_input_report-&amp;gt;rep_ref.report_type = BLE_HIDS_REP_TYPE_INPUT;&lt;/p&gt;
&lt;p&gt;p_input_report-&amp;gt;sec.cccd_wr = SEC_JUST_WORKS;&lt;br /&gt; p_input_report-&amp;gt;sec.wr = SEC_JUST_WORKS;&lt;br /&gt; p_input_report-&amp;gt;sec.rd = SEC_JUST_WORKS;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;// Initialize HID Service&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report = &amp;amp;input_report_array[1];&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report-&amp;gt;max_len = INPUT_REPORT_KEYS_MAX_LEN;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report-&amp;gt;rep_ref.report_id = 1;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report-&amp;gt;rep_ref.report_type = BLE_HIDS_REP_TYPE_INPUT;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;p_input_report-&amp;gt;sec.cccd_wr = SEC_JUST_WORKS;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report-&amp;gt;sec.wr = SEC_JUST_WORKS;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report-&amp;gt;sec.rd = SEC_JUST_WORKS;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_input_report = &amp;amp;input_report_array[INPUT_REPORT_KEYS_INDEX];&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;p_output_report = &amp;amp;output_report_array[OUTPUT_REPORT_INDEX];&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_output_report-&amp;gt;max_len = OUTPUT_REPORT_MAX_LEN;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_output_report-&amp;gt;rep_ref.report_id = OUTPUT_REP_REF_ID;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_output_report-&amp;gt;rep_ref.report_type = BLE_HIDS_REP_TYPE_OUTPUT;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt;p_output_report-&amp;gt;sec.wr = SEC_JUST_WORKS;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#00ffff;"&gt;&lt;strong&gt; p_output_report-&amp;gt;sec.rd = SEC_JUST_WORKS;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;p_feature_report = &amp;amp;feature_report_array[FEATURE_REPORT_INDEX];&lt;br /&gt; p_feature_report-&amp;gt;max_len = FEATURE_REPORT_MAX_LEN;&lt;br /&gt; p_feature_report-&amp;gt;rep_ref.report_id = FEATURE_REP_REF_ID;&lt;br /&gt; p_feature_report-&amp;gt;rep_ref.report_type = BLE_HIDS_REP_TYPE_FEATURE;&lt;/p&gt;
&lt;p&gt;p_feature_report-&amp;gt;sec.rd = SEC_JUST_WORKS;&lt;br /&gt; p_feature_report-&amp;gt;sec.wr = SEC_JUST_WORKS;&lt;/p&gt;
&lt;p&gt;hid_info_flags = HID_INFO_FLAG_REMOTE_WAKE_MSK | HID_INFO_FLAG_NORMALLY_CONNECTABLE_MSK;&lt;/p&gt;
&lt;p&gt;memset(&amp;amp;hids_init_obj, 0, sizeof(hids_init_obj));&lt;/p&gt;
&lt;p&gt;hids_init_obj.evt_handler = on_hids_evt;&lt;br /&gt; hids_init_obj.error_handler = service_error_handler;&lt;br /&gt; hids_init_obj.is_kb = true;&lt;br /&gt; hids_init_obj.is_mouse = false;&lt;br /&gt; &lt;span style="color:#00ffff;"&gt;&lt;strong&gt;hids_init_obj.inp_rep_count = 2;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt; hids_init_obj.p_inp_rep_array = input_report_array;&lt;br /&gt; hids_init_obj.outp_rep_count = 1;&lt;br /&gt; hids_init_obj.p_outp_rep_array = output_report_array;&lt;br /&gt; hids_init_obj.feature_rep_count = 1;&lt;br /&gt; hids_init_obj.p_feature_rep_array = feature_report_array;&lt;br /&gt; hids_init_obj.rep_map.data_len = sizeof(report_map_data);&lt;br /&gt; hids_init_obj.rep_map.p_data = report_map_data;&lt;br /&gt; hids_init_obj.hid_information.bcd_hid = BASE_USB_HID_SPEC_VERSION;&lt;br /&gt; hids_init_obj.hid_information.b_country_code = 0;&lt;br /&gt; hids_init_obj.hid_information.flags = hid_info_flags;&lt;br /&gt; hids_init_obj.included_services_count = 0;&lt;br /&gt; hids_init_obj.p_included_services_array = NULL;&lt;/p&gt;
&lt;p&gt;hids_init_obj.rep_map.rd_sec = SEC_JUST_WORKS;&lt;br /&gt; hids_init_obj.hid_information.rd_sec = SEC_JUST_WORKS;&lt;/p&gt;
&lt;p&gt;hids_init_obj.boot_kb_inp_rep_sec.cccd_wr = SEC_JUST_WORKS;&lt;br /&gt; hids_init_obj.boot_kb_inp_rep_sec.rd = SEC_JUST_WORKS;&lt;/p&gt;
&lt;p&gt;hids_init_obj.boot_kb_outp_rep_sec.rd = SEC_JUST_WORKS;&lt;br /&gt; hids_init_obj.boot_kb_outp_rep_sec.wr = SEC_JUST_WORKS;&lt;/p&gt;
&lt;p&gt;hids_init_obj.protocol_mode_rd_sec = SEC_JUST_WORKS;&lt;br /&gt; hids_init_obj.protocol_mode_wr_sec = SEC_JUST_WORKS;&lt;br /&gt; hids_init_obj.ctrl_point_wr_sec = SEC_JUST_WORKS;&lt;/p&gt;
&lt;p&gt;err_code = ble_hids_init(&amp;amp;m_hids, &amp;amp;hids_init_obj);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;When I remove the colored lines, the shift seems to work.&lt;/p&gt;
&lt;p&gt;However, I can not use the toggle functionality.&lt;/p&gt;
&lt;p&gt;How can I use both the toggle and the Shift features?&lt;/p&gt;
&lt;p&gt;K.E.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>