{"id":1415,"date":"2019-02-08T16:00:07","date_gmt":"2019-02-08T16:00:07","guid":{"rendered":"http:\/\/grauonline.de\/cms2\/?page_id=1415"},"modified":"2022-01-08T20:52:58","modified_gmt":"2022-01-08T20:52:58","slug":"usb-push-button-manual","status":"publish","type":"page","link":"https:\/\/main.grauonline.de\/de\/usb-push-button-manual\/","title":{"rendered":"USB Pushbutton Buzzer (PBT-Series) \/ USB Pushbox (PBL-Series) &#8211; Manual"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1415\" class=\"elementor elementor-1415\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-76a0c2c2 elementor-section-boxed elementor-section-height-default elementor-section-height-default jltma-glass-effect-no\" data-id=\"76a0c2c2\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3982f861 jltma-glass-effect-no\" data-id=\"3982f861\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4e995519 jltma-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"4e995519\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2><\/h2>\r\n<h2><a href=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot.jpg\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-1596 alignleft\" src=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot-300x253.jpg\" alt=\"pushbutton_rot\" width=\"300\" height=\"253\" srcset=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot-300x253.jpg 300w, https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot-768x648.jpg 768w, https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot-1024x864.jpg 1024w, https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot.jpg 2009w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/h2>\r\n<h2><a href=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pbl_serie_gesamt_1.jpg\"><img decoding=\"async\" class=\"size-medium wp-image-1595 alignleft\" src=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pbl_serie_gesamt_1-285x300.jpg\" alt=\"pbl_serie_gesamt_1\" width=\"285\" height=\"300\" srcset=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pbl_serie_gesamt_1-285x300.jpg 285w, https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pbl_serie_gesamt_1-768x809.jpg 768w, https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pbl_serie_gesamt_1-973x1024.jpg 973w\" sizes=\"(max-width: 285px) 100vw, 285px\" \/><\/a><\/h2>\r\n<h2><\/h2>\r\n<h2><\/h2>\r\n<h2><\/h2>\r\n<h2><\/h2>\r\n<h2><\/h2>\r\n<h2><\/h2>\r\n<h2>Install driver for programming<\/h2>\r\n<b>First connect the button to your computer. Then lay in the driver CD and wait 3 minutes to let the operating system automatically install the\u00a0serial device drivers.\u00a0After this proceed as follows:<\/b>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">Windows:<\/span>\r\n<ol>\r\n \t<li><a href=\"https:\/\/www.arduino.cc\/en\/Guide\/DriverInstallation\">Open\u00a0the control panel -&gt; device manager<\/a>.\u00a0If you see an &#8216;Arduino Leonardo&#8217; device in the section &#8216;Ports (COM &amp; LPT)&#8217; without exclamation mark, the driver installation is completed.<\/li>\r\n \t<li>In any other case\u00a0please <a href=\"https:\/\/www.arduino.cc\/en\/Main\/Software\">download<\/a>\u00a0and install the Arduino IDE. Then <a href=\"https:\/\/www.arduino.cc\/en\/Guide\/DriverInstallation\">check the device manager again<\/a>.<\/li>\r\n<\/ol>\r\n<span style=\"text-decoration: underline;\">Mac:<\/span>\r\n<ol>\r\n \t<li>Open terminal and enter:\u00a0<b>sudo screen \/dev\/tty.usbmodemHIDA1<\/b>\u00a0(type &#8220;screen \/dev\/tty.&#8221; and then TAB key to see the connected tty pushbutton devices).<\/li>\r\n<\/ol>\r\n<span style=\"text-decoration: underline;\">Linux:<\/span>\r\n<ol>\r\n \t<li>Open terminal and enter:\u00a0<b>sudo screen<\/b><\/li>\r\n \t<li>If the screen command is not found, type: &#8220;sudo apt-get install screen&#8221; for a common debian based linux distribution (like Ubuntu). If the screen has started properly,\u00a0type &#8220;exit&#8221; to get back to terminal.<\/li>\r\n \t<li>Then open the serial device with:<b> sudo screen \/dev\/ttyACM0<\/b>\u00a0(type screen \/dev\/ttyA&#8221; and then TAB key to see all pushbutton serial devices).<\/li>\r\n<\/ol>\r\n\r\n<hr \/>\r\n\r\n<h2>Connecting\u00a0with serial terminal<\/h2>\r\n<span style=\"text-decoration: underline;\">Windows:<\/span>\r\n<ol>\r\n \t<li>Download\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/download\/CoolTermWin.zip\">CoolTermWin.zip (Windows)<\/a><\/li>\r\n \t<li>Start CoolTerm, click on &#8216;Options&#8217;, choose &#8216;Serial port&#8217;, select the last COM-port in the list and\u00a0<b>baud rate 115200<\/b>\u00a0and click on &#8216;Ok&#8217;, then &#8216;Connect&#8217;. If the connection attempt fails, please choose another serial-port in the options list\u00a0and try to connect with\u00a0115200 baud.<\/li>\r\n<\/ol>\r\n<span style=\"color: #ff0000;\"><strong>NEW: <\/strong><\/span><a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/download\/pushbutton_pushbox_setup_1.0.0.2.exe\"><strong>Download the Windows pushbutton\/pushbox configuration application and setup your Pushbutton\/Pushbox much more comfortable.<\/strong><\/a>\r\n\r\n<span style=\"text-decoration: underline;\">Mac:<\/span>\r\n<ol>\r\n \t<li>Open terminal and enter:\u00a0<b>sudo screen \/dev\/tty.usbmodemCHIDA1<\/b>\u00a0(type &#8220;screen \/dev\/tty.&#8221; and then TAB key to see the connected tty pushbutton devices).<\/li>\r\n \t<li>If the GNU screen has not enough comfort for your, you can download\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/download\/CoolTermMac.zip\">CoolTermMac.zip (Mac)<\/a><\/li>\r\n \t<li>Start CoolTerm, click on &#8216;Options&#8217;, choose\u00a0<strong>serial-port\u00a0= usbmodemCHIDA1<\/strong> and\u00a0<b>baud rate 115200<\/b>\u00a0and click on &#8216;Connect&#8217;.<\/li>\r\n<\/ol>\r\n<span style=\"text-decoration: underline;\">Linux:<\/span>\r\n<ol>\r\n \t<li>Open terminal and enter:\u00a0<b>sudo screen \/dev\/ttyACM0<\/b>\u00a0(type screen \/dev\/ttyA&#8221; and then TAB key).<\/li>\r\n \t<li>If the GNU screen does not work for you, download\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/download\/CoolTermLinux.zip\">CoolTermLinux.zip (Linux)<\/a><\/li>\r\n \t<li>Start CoolTerm, click on &#8216;Options&#8217;, choose\u00a0serial-port and\u00a0<b>baud rate 115200<\/b>\u00a0and click on &#8216;Connect&#8217;.<\/li>\r\n<\/ol>\r\n\r\n<hr \/>\r\n\r\n<h2>Quick start: Get some help<\/h2>\r\nThe button is configured via serial commands. You enter a command\u00a0into the serial terminal, and send it to the push button by\u00a0typing a &#8216;;&#8217; (semicolon). You can use several commands in one line, each separated with semicolon.\r\n\r\nConnect with 115200 baud and type the\u00a0 help screen command: <strong>h;<\/strong>\r\n\r\n<span style=\"text-decoration: underline;\">Now you should see\u00a0the following screen (Note: Maximize your terminal window for a better view):<\/span>\r\n\r\nGrau GmbH Hardware&amp;Software Solutions &#8211; HID Pushbutton Version 2.1.7 &#8211; 15.03.2019\r\n\r\n&#8211;Serial commands&#8211;\r\n?; &#8211;&gt; show all command- and string lists\r\ns; \/ save; &#8211;&gt; save all lists to EEPROM\r\nh; \/ help; &#8211;&gt; show this help\r\nfactory; &#8211;&gt; reset to factory settings (includes saving to EEPROM)\r\ne1; \/ e0; &#8211;&gt; echo on\/off\r\nc0;..c7; &#8211;&gt; clear command list no. 0-7\r\nbsp=xxx; &#8211;&gt; set default button state polling interval in ms (default=100)\r\nl0;..l2; &#8211;&gt; keyboard layout 0-2: 0=GERMAN_LATIN1, 1=GERMAN_CP1252, 2=ENGLISH\r\nstr0=MyString; &#8211;&gt; store string number\r\n!1,0,x,x,x,x; &#8211;&gt; set single command at index 0 in command list number 1 (default list)\r\n\r\ncmd syntax:\r\n![commandListNo],[index],[command],[data1],[data2],[data3]\r\n&#8230;..\r\n\r\n<hr \/>\r\n\r\n&nbsp;\r\n<h2>Command row and command list<\/h2>\r\nEnter\u00a0your first &#8220;command row&#8221; into the terminal window:\r\n\r\n<a href=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/usbpb_action_sim_key_a_quick.png\"><img decoding=\"async\" class=\"size-full wp-image-1470 aligncenter\" src=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/usbpb_action_sim_key_a_quick.png\" alt=\"usbpb_action_sim_key_a_quick\" width=\"335\" height=\"101\" srcset=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/usbpb_action_sim_key_a_quick.png 335w, https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/usbpb_action_sim_key_a_quick-300x90.png 300w\" sizes=\"(max-width: 335px) 100vw, 335px\" \/><\/a>\r\n\r\nThe keycode for the key &#8216;a&#8217; is 97. To use other keys look for your keycode at <a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">this page<\/a>.\r\nNow press the push button to verify that the key &#8216;a&#8217; is simulated by a test-press on the button.\r\n\r\n<span style=\"text-decoration: underline;\">The explaination of the &#8220;command\u00a0row&#8221;\u00a0above is as follows:<\/span>\r\n<ul>\r\n \t<li><strong>! = Attention<\/strong> &#8211; I want to program a &#8220;command row&#8221;, which is a single row\/entry in a command list.<\/li>\r\n \t<li><strong>1 =<\/strong> I want to program\u00a0<strong>command list number 1<\/strong> (which is the default execution list). You can program command list 0..7.\u00a0Each list can contain up to 8 execution command rows (indexed from 0..7).\r\nIf the button is pressed\u00a0all rows in the command list are executed from index 0 to 7 (if they contain any valid command rows).<\/li>\r\n \t<li><strong>0 =<\/strong> In this\u00a0command list I want to\u00a0program\u00a0<strong>command row\/index number 0<\/strong> (=the first one)<\/li>\r\n \t<li><strong>2 =<\/strong><span style=\"color: #ff6600;\">\u00a0<\/span>I want to\u00a0program a <strong>HID-KEYBOARD-KEY<\/strong> command.\r\nOther command types are\u00a0shown below.<\/li>\r\n \t<li><strong>97 =<\/strong> I want show <strong>ASCII char 97<\/strong>.\r\nA complete list of all ASCII characters with their decimal\/hex codes is <a href=\"http:\/\/www.asciitable.com\/\">here<\/a>. Note that the button accepts decimal (97) as well as the hex value (0x61) number format.\r\nShort explaination how to test decimal char 97: Open an editor (i.e. NOTEPAD in Windows; or a terminal in Linux). Then be sure that your keyboard NUM-LOCK mode is ON: Type 8 on the numerical keypad on the right side of your keyboard. If an 8 is shown, your keyboard NUM-LOCK is on. Else hit the NUM-LOCK key and try again. Then hold the left ALT-Key, type <strong>9 7<\/strong>\u00a0on your\u00a0keypad and release ALT. The result should be that an &#8220;a&#8221; is shown.<\/li>\r\n \t<li><strong>0,0<\/strong>\u00a0=<strong> zero padding<\/strong>\/ no\u00a0further keys shall be pressed.<\/li>\r\n \t<li><strong>;<\/strong> = command row completed =&gt;\u00a0let the button <strong>process and verify<\/strong> your given command row.<\/li>\r\n \t<li><b>s;<\/b> =<strong> Save<\/strong> the current settings\/programming to EEPROM (=internal permanent flash memory).<\/li>\r\n<\/ul>\r\n<strong>Summary of our example above:<\/strong>\r\n<ul>\r\n \t<li>A <strong>command list<\/strong> is executed on button actuation. By default command list 1 is executed.<\/li>\r\n \t<li>A <strong>command list<\/strong> consists of up to 8 <strong>command rows<\/strong>. You can see all programmed command lists by typing <strong>?;<\/strong><\/li>\r\n \t<li>A complete <strong>command row<\/strong> ALWAYS consists of 6 values, separated by commas and is directly entered via serial terminal.<\/li>\r\n \t<li>A\u00a0<strong>command\u00a0row<\/strong> is completed and will be sent to the button by typing a semicolon &#8220;;&#8221; in the serial terminal.<\/li>\r\n \t<li>All indexes for any list\u00a0begin with 0. Meaning: the first row in a command list has number 0, the second number 1, etc.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n<h3><strong>Command row syntax:<\/strong><\/h3>\r\n<strong>![COMMAND_LIST_NUMBER], [EXEC_ROW_INDEX], [COMMAND_TYPE], [DATA1], [DATA2], [DATA3];<\/strong>\r\n<ul>\r\n \t<li><strong>COMMAND_LIST_NUMBER:<\/strong> 0..7\r\n1 = default execution on button press; 0 = execution if\u00a0computer is in standby ; 2..7 = user defined<\/li>\r\n \t<li><strong>ROW_INDEX:<\/strong> 0..7 ; the programmed rows containing a valid command will be executed\u00a0successively from 0 to 7.<\/li>\r\n \t<li><strong>COMMAND_TYPE:<\/strong> 0..7\r\n0 = do nothing,\r\n1 = HID_SYSTEM-KEY command. See: <a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">key-code list.<\/a>\r\n2 = KEYBOARD-KEY \/ the normal keyboard\r\n3 =\u00a0TYPE_STRING \/ type whole words\/sentences\r\n4 = HID_CONSUMER-KEY command.\u00a0See:\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">key-code list.<\/a>\r\n5 = DELAY_MS \/ delay milliseconds,\r\n6 = DELAY_S \/ delay seconds,\r\n7 = SET_CURR_LISTIDX \/ set current command list index\r\n8 = MOUSE \/ set mouse cursor position and (optional) click<\/li>\r\n \t<li><strong>DATA1..DATA3:<\/strong> 0..65535\r\nNote: DATA1 is only used for COMMAND_TYPE=3, 5, 6, 7\u00a0 =&gt; this means DATA2, DATA3\u00a0are ignored for these\u00a0COMMAND_TYPES.<\/li>\r\n<\/ul>\r\n\r\n<hr \/>\r\n\r\n<h3>Keystroke\u00a0hold and release<\/h3>\r\nBy default the button always holds the keystrokes (=data values) given in a command row. This means if you program the key-data values 97,98,99, the keys &#8220;a&#8221;, &#8220;b&#8221;, &#8220;c&#8221; will be pressed in parallel.\r\nFirst\u00a0after a command list has been completely executed all keystrokes will be auto-released.\r\n\r\nIf you want to release a keystroke immediately after press, put a &#8220;0x8000&#8221; after your key-data value.\r\nI.e. &#8220;!1,0,2,97,0&#215;8000,0; !1,1,2,98,0&#215;8000,0;\u00a0!1,2,2,99,0&#215;8000,0; s;&#8221; will press\u00a0the keys &#8220;a&#8221;, &#8220;b&#8221;, &#8220;c&#8221; one after another.\r\n\r\nFor specialists: You can also binary-OR your key-data value with 0x8000. Use Windows Calculator in programmer-mode.\r\nI.e. for decimal value 97 you type in Windows CALC: 97, you see HEX: 61 (=0x61).\r\nNow press &#8220;OR&#8221;, then type &#8220;8000&#8221; and &#8220;=&#8221;. The result is 8061. So instead of 97, you program 0x8061 as a key-data value and the key will be released immediately after press.\r\n\r\nIf you want to release all keys and actions immediately, you can also execute an &#8220;autoRelease&#8221; with the data data value &#8220;0xFFFF&#8221;. The button execute this autoRelease at every list end by default. However you can turn of the autoRelease at the command list end by setting bit7 (128) in the button pin configuration (please see below in the chapter &#8216;Physical pin configruation &#8220;@&#8230;&#8221; &#8211; command details&#8217;).\r\n\r\n<hr \/>\r\n\r\n<h3><strong>Clear whole\u00a0command lists<\/strong><\/h3>\r\nWith &#8220;c0;&#8221;..&#8221;c7;&#8221; you can clear a whole\u00a0command list (all rows). If you type &#8220;c1;&#8221; all 8 rows in\u00a0command list number 1 will be cleared.\r\nNote: If you do not save your changes with &#8220;s;&#8221;, you can undo your clear command by simply un- and replugging the USB connector.\r\n<h3>Deleting single command rows<\/h3>\r\nCommands\u00a0in a row no longer needed can be deleted by overwriting the row with zeros.\r\nExample delete the\u00a0forth row\u00a0 in action list number 1: !1,3,0,0,0,0; =&gt;\u00a0(row number 3 as all lists start with index 0)\r\n\r\n<hr \/>\r\n\r\n<h2>Parallel\u00a0key-strokes<\/h2>\r\nYou can simulate\u00a0up to 6 parallel key-strokes within one\u00a0or more command rows:\r\n\r\nfor example CTRL+SHIFT+ESC\u00a0 (=open taskmanager shortcut in Windows):\r\n\r\n<span style=\"color: #800000;\">!1,0,2,0&#215;2000,0x2001,0x4029;<\/span>\r\n\r\nNote: 0x2000, 0x2001, 0x4029 are a hexadecimal-numbers. The heading 0x stands for the hex-number format which are easier for binary operations and shown in the keycode list. Open a calculator (i.e. Windows calc) and set it to &#8216;programmer&#8217; mode. Now you can enter hex values and convert them to decimal values and vice versa.\u00a0 The push button can be programmed with decimals as well as hex numbers.\r\n\r\nThe keycodes\u00a0 0x2000, 0x2001, 0x4029 are listed in the\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">keycode list<\/a>.\u00a0All three keys are pressed simultaneously and then auto-released at the end of the command list.\r\n\r\nIf you want to press more keys, you can easily add a second command row:\r\n\r\nFor instance: CTRL+SHIFT+ALT+BACKSPACE\r\n\r\n<span style=\"color: #800000;\">c1; !1,0,2,0&#215;2000,0x2001,0x2002;\u00a0<\/span><span style=\"color: #800000;\">!1,1,2,0x402A,0x8000,0;<\/span>\r\n\r\n0x8000 is the code for key-release, we could omit it, as the keys will be auto-released on command list end. However in this example we can add append more commands in row index 2 without getting disturbed by the keystrokes from row 0 and row 1\r\n\r\n<hr \/>\r\n\r\n<h2>Show all lists\/get the complete configuration: ?;<\/h2>\r\nType the &#8220;show all lists\/ask config&#8221;-command : <strong>?;<\/strong>\r\n\r\nYou will receive an answer screen similiar to this example:\r\n\r\n&#8211;VARS&#8211;\r\nisON=1 echo=1 currListIdx=1 bsp=100 soloBtnIdx=-1\r\nkeyb_layout: 1 &#8211; GERMAN_KEYB_LAYOUT_WINDOWS_CP1252\r\n\r\n&#8211;BTNPINS&#8211;\r\n&gt;idx:0&gt;pin:18&gt;treshold:500&gt;mode:INPUT_PULLUP(2)&gt;listTrigger:-1&gt;listRepeat:-1&gt;listRelease:-1&gt; repeatDelay:400&gt;bitflags:33|TRIG_HIGH|RELEASED|LASTLVL_L|SOLOBTN\r\n&gt;idx:1&gt;pin:19&gt;treshold:500&gt;mode:INPUT_PULLUP(2)&gt;listTrigger:127&gt;listRepeat:-1&gt;listRelease:-1&gt; repeatDelay:400&gt;bitflags:16|TRIG_LOW|RELEASED|LASTLVL_H\r\n&gt;idx:2&gt;pin:20&gt;treshold:500&gt;mode:INPUT_PULLUP(2)&gt;listTrigger:-1&gt;listRepeat:-1&gt;listRelease:-1&gt; repeatDelay:400&gt;bitflags:48|TRIG_LOW|RELEASED|LASTLVL_H|SOLOBTN\r\n&gt;idx:3&gt;pin:21&gt;treshold:500&gt;mode:INPUT_PULLUP(2)&gt;listTrigger:-1&gt;listRepeat:-1&gt;listRelease:-1&gt; repeatDelay:400&gt;bitflags:48|TRIG_LOW|RELEASED|LASTLVL_H|SOLOBTN\r\n\r\n&#8211;CMD_LISTS&#8211;\r\n-listidx=0-\r\n-listidx=1-\r\nlistidx=1 idx=0 cmd=3 (typeString) data1=0(0x0) data2=0(0x0) data3=0(0x0)\r\nlistidx=1 idx=1 cmd=2 (Keyboard) data1=49192(0xC028) data2=0(0x0) data3=0(0x0)\r\nlistidx=1 idx=2 cmd=7 (currListIdx) data1=2(0x2) data2=0(0x0) data3=0(0x0)\r\n-listidx=2-\r\nlistidx=2 idx=0 cmd=3 (typeString) data1=1(0x1) data2=0(0x0) data3=0(0x0)\r\nlistidx=2 idx=1 cmd=2 (Keyboard) data1=49192(0xC028) data2=0(0x0) data3=0(0x0)\r\nlistidx=2 idx=2 cmd=7 (currListIdx) data1=1(0x1) data2=0(0x0) data3=0(0x0)\r\n-listidx=3-\r\n-listidx=4-\r\n-listidx=5-\r\n-listidx=6-\r\n-listidx=7-\r\n\r\n&#8211;STRINGS&#8211;\r\nstr0=Hello my friend!\r\nH72 e101 l108 l108 o111 32 m109 y121 32 f102 r114 i105 e101 n110 d100 !33\r\nstr1=Nice to meet you!\r\nN78 i105 c99 e101 32 t116 o111 32 m109 e101 e101 t116 32 y121 o111 u117 !33\r\n\r\ndone.\r\n\r\n&#8212;&#8212;\r\n\r\nThis output shows all\u00a0lists\u00a0stored in internal EEPROM\/permanent flash memory. The explaination of the sections above is as follows:\r\n\r\n&#8212;VARS&#8211;: this section shows all global button variables\r\n<ul>\r\n \t<li>isON=1\u00a0 =&gt;\u00a0is the\u00a0USB in suspended\/standby mode (reduced power) or Full-Power-ON mode?<\/li>\r\n \t<li>echo=1\u00a0 =&gt; shall the serial input be output again (echo function) ?<\/li>\r\n \t<li>currListIdx=1\u00a0 =&gt; the command list which is executed on next button trigger<\/li>\r\n \t<li>bsp=100\u00a0 =&gt; the buttonStatePolling-interval. The time in milliseconds the updates its internal status. More information later.<\/li>\r\n \t<li>soloBtnIdx=-1 =&gt; when any button is configured as solo-button, its triggering exclusively. No other button can interfere. This is a feature\u00a0of the USB Pushbox containing multiple buttons. The solo-button status can be set with the &#8216;physical-Pin-configuration \/ @-command&#8217;.<\/li>\r\n \t<li>keyb_layout: 1 &#8211; GERMAN_KEYB_LAYOUT_WINDOWS_CP1252 =&gt; the current layout used for typing strings. More information later.<\/li>\r\n<\/ul>\r\n&#8211;BTNPINS&#8211;: this section\u00a0explains\u00a0the physical-Pin-configuration of the\u00a0internal USB module. More information later\r\n\r\n&#8211;CMD_LISTs&#8211;: this section lists all command lists containing up to 8 command rows. Each command list starts with\u00a0the caption showing the list number, i.e. &#8220;-listidx=1-&#8220;. Then all programmed command rows follow.\r\n\r\n&#8211;STRINGS&#8211;: this sections lists all strings meaning longer words\/chars, which are programmed with COMMAND_TYPE3, as it would be too much work for single key-press programming.\r\n\r\n&nbsp;\r\n\r\n<hr \/>\r\n\r\n<h2>Details\u00a0on\u00a0COMMAND_TYPEs<\/h2>\r\n<strong>COMMAND_TYPE <span style=\"color: #00ff00;\">1<\/span> (HID-SYSTEM-KEY): DATA1..3 can be set.<\/strong>\r\n<span style=\"color: #800000;\"><em>\u00a0 c1; !1,0,<span style=\"color: #00ff00;\">1<\/span>,0x82,0,0; s;<\/em><\/span>\r\nThis line will\u00a0program the button\u00a0as a Standby-Key. 0x82 =\u00a0 HID_SYSTEM_SLEEP. See\u00a0chapter &#8220;System key codes (hex)&#8221; in our <a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">code list<\/a>.\r\nNote: The button always executes command list 0 in Standby-Mode. If you want to\u00a0wake-up your machine on second button press, program:\r\n<span style=\"color: #800000;\"><em>\u00a0 c0; !0,0,<span style=\"color: #00ff00;\">1<\/span>,0x83,0,0; s;<\/em><\/span>\r\nAlso notice that not all operating systems\u00a0support all HID-SYSTEM commands. So you can also add the SLEEP\/WAKE as HID-CONSUMER keys:\r\n<span style=\"color: #800000;\"><em>\u00a0 !1,1,4,0&#215;32,0,0;s;<\/em><\/span> =&gt; CONSUMER sleep function (see COMMAND_TYPE 4 below for more information).\r\nNotice: We put this consumer command on row index 1, as on index 0 we programmed the HID-SYSTEM_SLEEP command before.\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYPE <span style=\"color: #ff00ff;\">2<\/span> (HID-KEYBOARD-KEY = Standard Keyboard Function):\u00a0<\/strong> <strong>DATA1..3 can be set.<\/strong>\r\n\r\n<span style=\"color: #800000;\">\u00a0 c1; !1,0,<span style=\"color: #ff00ff;\">2<\/span>,32,0&#215;8000,0; !1,1,<span style=\"color: #ff00ff;\">2<\/span>,0x4028,0x8000,0; s;<\/span>\r\nThis line will\u00a0program the operations: press\u00a0SPACE (32), release last key (0x8000),\u00a0press\u00a0ENTER (0x4028),\u00a0release last key\u00a0(0x8000). See the <a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">code list for key-codes.<\/a>\r\n<span style=\"text-decoration: underline;\">Expert user notice:<\/span> You can\u00a0use USB-HID-RAW values (instead of ASCII values)\u00a0for COMMAND_TYPE2 by binary-OR them with 0x4000 (i.e. the ENTER\u00a0key\u00a0in the example above). For all RAW codes please refer to the <a href=\"https:\/\/www.usb.org\/sites\/default\/files\/documents\/hut1_12v2.pdf\">USB Organization HID usage table p.53ff.<\/a>\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYPE <span style=\"color: #0000ff;\">3<\/span> (TYPE-STRING\u00a0= Type a word\/several characters in sequence):\u00a0\u00a0DATA1..3 can be set.<\/strong>\r\n\r\n<span style=\"color: #800000;\">\u00a0 c1; str<span style=\"color: #ff6600;\">4<\/span>=Hello World!; !1,0,<span style=\"color: #0000ff;\">3<\/span>,<span style=\"color: #ff6600;\">4<\/span>,0,0; s;<\/span>\r\nIf you trigger the button, it will type &#8220;Hello World!&#8221;. &#8216;strX=anymessage;&#8217; stores your string in slot number 4. &#8216;s;&#8217; will store it to flash memory.\r\nIf you want to type another message on second button trigger, continue with the example for COMMAND_TYPE 7 (currListIdx).\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYPE <span style=\"color: #99cc00;\">4<\/span> (HID-CONSUMER-KEY = special key):\u00a0\u00a0DATA1..3 can be set.<\/strong>\r\n\r\n<span style=\"color: #800000;\">\u00a0 c1; !1,0,<span style=\"color: #99cc00;\">4<\/span>,0xE2,0,0; s;<\/span>\r\nIf you trigger the button, it will mute\/unmute your system sound volume. According to the <a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">codes list<\/a> 0xE2\u00a0 =\u00a0HID_CONSUMER_MUTE.\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYPE 5\/<span style=\"color: #33cccc;\">6<\/span> (5=delay\u00a0milliseconds\/ <span style=\"color: #3366ff;\">6<\/span>=delay seconds):\u00a0\u00a0DATA1\u00a0must be set.<\/strong>\r\n\r\n<span style=\"color: #800000;\">c1; !1,0,<span style=\"color: #3366ff;\">6<\/span>,<\/span><span style=\"color: #800000;\"><span style=\"color: #ff00ff;\"><span style=\"color: #993300;\">3<\/span><\/span><span style=\"color: #800000;\">,0,0; !1,1,2,0&#215;4028,0,0; s;<\/span><\/span>\r\nIf you trigger the button, it will wait <span style=\"color: #ff00ff;\"><span style=\"color: #993300;\">3<\/span><\/span>\u00a0<span style=\"color: #3366ff;\">seconds<\/span>. Then it will press RETURN\/ENTER (=0x4028 according to the\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/keyboard.html\">codes list<\/a>) and auto-release after execution (default behaviour if no other commands follow).\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYPE <span style=\"color: #000080;\">7<\/span> (setCurrListIdx = execute other list number on button press):<\/strong>\u00a0\u00a0<strong>DATA1\u00a0must be set.<\/strong>\r\n\r\nAs default command list 1 is executed. We now change this execution list number dynamically. First we\u00a0write a string in command list 1:\r\n<span style=\"color: #800000;\">\u00a0 c1; str4=Hello World!; !1,0,3,4,0,0;\u00a0<\/span>\r\nPress the button and see\u00a0&#8220;Hello World!&#8221;.\r\nNow we change pin physical configuration of the button to\u00a0enable the use of COMMAND_TYPE7 (setCurrListIdx):\r\n<span style=\"color: #800000;\">\u00a0 @1,19,2,0,127,-1,-1,400,500;<\/span>\r\nThis physical pin configuration\u00a0will be explained in more details below. For us important is the 127 (1=default), which allows us to change the current command execution list index (=currListIdx) on button press\/trigger.\r\nNow we\u00a0send\u00a0this line:\r\n<span style=\"color: #800000;\">\u00a0 !1,1,<span style=\"color: #000080;\">7<\/span>,5,0,0;\u00a0c5; str2=How are you?; !5,0,3,2,0,0; !5,1,<span style=\"color: #000080;\">7<\/span>,1,0,0; s;<\/span>\r\nMeaning of this line:\r\nOn second button press, list number 5 is the default execution list (!1,1,7,5,0,0;). An additional\u00a0string &#8216;How are you?&#8217; is stored in string slot 2 (str2=&#8230;).\u00a0And we type the stored string in\u00a0command list number 5, index 0 (!5,0,3,2,0,0). Then we get back to command list number <span style=\"color: #00ff00;\">1<\/span> (!5,1,<span style=\"color: #000080;\">7<\/span>,<span style=\"color: #00ff00;\">1<\/span>,0,0). Finally we save all settings to flash with &#8220;s;&#8221;.Press the button and see\u00a0&#8220;Hello World!&#8221;, press it again and see &#8220;How are you?&#8221;. Next\u00a0press again: &#8220;Hello World!&#8221;&#8230; and so forth.\r\n<strong>Important:<\/strong> As the command execution index can be changed, it is necessary to unplug- and replug the button to test the button function\u00a0properly\/ reset currListIdx to 1 (=startup value).\r\n<strong>Note:<\/strong>\u00a0currListIdx will be also shown\u00a0by typing the ask config command:\u00a0?;\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYPE <span style=\"color: #ffff00;\">8<\/span>\u00a0(set mouse cursor position and optionally click):<\/strong>\u00a0\u00a0<strong>DATA1..3 are used.\r\n<\/strong>Example:\r\n<span style=\"color: #800000;\">\u00a0 c1; !1,0,8,32256,256,1;\r\n<\/span>Result: Left mouse button click in upper right corner \/ close window (please not that the close-windows function can be more reliable performed with the ALT-F4 keystroke in Windows).\r\n\r\nSyntax: ![list],[index],8, [x], [y], [buttonclick];\r\n\r\nScreen coordinates range from 0..32768 for both x and y axis. The coordinates x=y=0 leave the cursor at the current position. ButtonClick: 0=no click; 1=left click; 2=right click; 4=middle click.\u00a0To find the proper screen coordinate values, please see below for the button coordinate test.\r\n\r\n<strong>Important note for firmware &gt;= 2.2.3:<\/strong>\r\n\r\nOlder firmwares&lt;=2.2.3 had problems with setting the mouse in Android and OS-X. From 2.2.3 &#8220;virtual screen coordinates&#8221; are used.\r\nThey are given to the OS as relative movements. This means you have to try the x\/y values between 0 and 2048 to set the cursor to a distinct position.\r\nThese virtual coordinates are quite similiar to the physical screen coordinates. However they also depend on your OS mouse driver settings (especially the additonal acceleration on movement).\r\n\r\n<hr \/>\r\n\r\n<strong>COMMAND_TYP 9 (String will be sent to integrated USB serial port ausgeben): DATA1 wird verwendet.\r\n<\/strong>Example:\r\n<span style=\"color: #800000;\">\u00a0 str0=Hello World!; c1; !1,0,9,2,0,0; s;<\/span>\r\nResult: The string &#8220;Hello World!&#8221; will be sent to the USB serial port on button trigger.\r\n\r\n<hr \/>\r\n\r\n&nbsp;\r\n<h2>Repeating\u00a0commands\/keystrokes on button hold<\/h2>\r\nNormally the button only executes a command list once and then waits for button release.\r\n\r\nBut a typical computer keyboard repeats the function when the key\/button is hold. You can also set this behaviour for your USB Pushbutton (<em>not for USB Pushbox &#8211; it is also capable for repeat on hold, but\u00a0has a different configuration for pin A0\/18; more details in the next chapter<\/em>).\r\nIf you want to auto-repeat the key simulation while the button is pressed, enter this command in the serial terminal:\r\n\r\n<strong><span style=\"color: #800000;\">@1,19,2,0,127,127,-1,400,500;s;<\/span><\/strong>\r\n\r\nIf you wish to revert to the old\/factory\u00a0&#8220;single-shot-execution setting&#8221;, type:\u00a0<strong><span style=\"color: #800000;\">@1,19,2,0,127,-1,-1,400,500;s;<\/span><\/strong>\r\n<h3>Button-sensitive function<\/h3>\r\nThe USB Pushbutton contains a NormallyConnected(NC)- and a NormallyOpen(NO)- switch. Both are physically connected. The\u00a0NC is disabled and the NO is used as by default in the physical\u00a0pin configuration.\r\nAs the NC is more sensitive to trigger (the button does not need to be pushed as low as for the NO switch), you can enable the NC and disable the NO with this command line:\r\n\r\n<strong><span style=\"color: #800000;\">@1,19,2,0,-1,-1,-1,400,500; @1,18,2,0,1,-1,-1,400,500;s;<\/span><\/strong>\r\n\r\nTest it to set how easy\/early now the button triggers if you press it slightly down. Enter this line revert to original factory\/settings:\r\n\r\n<strong><span style=\"color: #800000;\">@1,19,2,0,127,-1,-1,400,500;\u00a0@1,18,2,0,-1,-1,-1,400,500;s;<\/span><\/strong>\r\n\r\nMore details on these values\/how this works are explained as follows:\r\n\r\n<hr \/>\r\n\r\n<h2><strong>Physical pin configuration: &#8220;@&#8230;&#8221;- command details<\/strong><\/h2>\r\nEach physical button connected to the internal electronic\u00a0module can\u00a0be configured by the user.\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-decoration: underline;\">The syntax of the physical pin configuration is as follows:<\/span>\r\n\r\n<strong>@[listindex], [physPin], [pinmode], [bitflags], [listTrigger], [listRepeat], [listRelease], [repeatDelayMS], [treshold_1];<\/strong>\r\n<ul>\r\n \t<li><strong>listindex:<\/strong> 0..3 &#8211; physical\u00a0pins list index<\/li>\r\n \t<li><strong>physPin:<\/strong> 18..21 (A0..A3)<\/li>\r\n \t<li><strong>mode:<\/strong> always 2 (PULL_UP resistor) &#8211; Arduino pinMode setting<\/li>\r\n \t<li><strong>bitflags:<\/strong>\u00a0byte value\r\nbit0 (1): Shall the button trigger on LOW (0) or HIGH (1) pin level\r\nbit1 (2): STATUS: pin is triggered\r\nbit2 (4): STATUS: physical pin level has changed\r\nbit3 (8): STATUS: repetition\/hold\u00a0mode on\r\nbit4 (16): STATUS: last pin level\r\nbit5 (32): pin SOLO-mode ; if this bit is set and the button is triggered\/pressed, no other pin can trigger a command list execution; so this pin triggers exclusively until it is released.\r\nbit6 (64): pin is in digitalMode (analogMode is default) &#8211; Note: set [treshold_1] to 0 when using pin in digitalMode.\r\nbit 7 (128): noAutoRelease. Set this bit, if you want to disable the AutoRelease-execution at the command list end. Then you can manually auto-release with the data value 0xFFFF in any command list.<\/li>\r\n \t<li><strong>listTrigger:<\/strong> This command list will be executed when the button is\u00a0<strong>triggered<\/strong>\/pressed. -1 = disabled\/no function. Set to 127 when CMDTYPE_7 (setCurrListIdx) is\u00a0used.<\/li>\r\n \t<li><strong>listRepeat:<\/strong>\u00a0This command list will be executed when the button is\u00a0<strong>in repetition<\/strong>\/is hold. -1 = disabled\/no function. Set to 127 when CMDTYPE_7 (setCurrListIdx) is\u00a0used.<\/li>\r\n \t<li><strong>listRelease:<\/strong>\u00a0This command list will be executed when the button is\u00a0<strong>released<\/strong>. -1 = disabled\/no function. Set to 127 when CMDTYPE_7 (setCurrListIdx) is\u00a0used.<\/li>\r\n \t<li><strong>repeatDelayMS:<\/strong> This is the time in milliseconds after the button\u00a0starts the listRepeat command list on button hold. Typ. 400ms.<\/li>\r\n \t<li><strong>treshold_1:<\/strong>\u00a00..1024 (0..5V) &#8211; generally the analog pins\u00a0will be used. Therefore we can set the treshold\u00a0for\u00a0the logical HIGH-level. Typ. 500 (=2.5V).<\/li>\r\n<\/ul>\r\n&nbsp;\r\n<h3>The default physical pin configuration for USB Pushbuttons (not<em>\u00a0the Pushbox<\/em>)<\/h3>\r\n\/\/\r\n\/\/ phys-pin-A0-18 -&gt; NC switch &gt; GND ; on list -1=disabled\r\n\/\/ phys-pin-A1-19 -&gt; NO switch-&gt;GND ; on list 1\r\n\/\/ phys-pin-A2-20 not connected ;\u00a0on list -1=disabled\r\n\/\/ phys-pin-A3-21 not connected ;\u00a0on list -1=disabled\r\n\r\nNote: the pin-label\u00a0&#8216;A0&#8217;..&#8217;A3&#8242; printed on the\u00a0electronic\u00a0board are named pin 18..21 in the software configuration.\r\n\r\nSo we have these default software pin configurations for the physical connections above:\r\n@0,18,2,1,-1,-1,-1,400,500;\r\n@1,19,2,0,127,-1,-1,400,500;\r\n@2,20,2,0,-1,-1,-1,400,500;\r\n@3,21,2,0,-1,-1,-1,400,500;\r\ns;\r\n\r\n=&gt; The\u00a0USB Pushbutton NC switch is connected to pin18 and is disabled for all lists (-1,-1,-1).\r\n=&gt; The\u00a0USB Pushbutton NO switch is connected to pin19 and is\u00a0enabled for the default startup list index 1 and CMDTYPE_7 is allowed\u00a0(127 in the configuriaton string above). You could also use simply 1 here (run command list 1), but then CMDTYPE_7 (set currListIdx) would not work.\r\n=&gt; The two\u00a0 other pins on the board are disabled.\r\n\r\n&nbsp;\r\n<h3>Pin configuration examples<\/h3>\r\n<ul>\r\n \t<li>Execute command list 1 on button press, execute command list 2 on button hold, execute command list 3 on button release:\r\n<strong><span style=\"color: #800000;\">@1,19,2,0,1,-1,3,400,500;\u00a0<\/span><\/strong>\r\nThis example is quite useful when you have 3 different actions to operate in order. Example for a DJ sound break:\r\n1.) button trigger =&gt; command list 1: mute volume\r\n2.) button hold =&gt; do nothing\r\n3.) button release =&gt; command list 3:\u00a0unmute volume to old sound level<\/li>\r\n \t<li>Execute command list 1 on trigger and allow changing the currListIdx via CMDTYPE_7.\r\n<strong><span style=\"color: #800000;\">@1,19,2,0,127,-1,-1,400,500; s;\r\n<\/span><\/strong>The button executes command list 1 (the default startup list) on first trigger and then (if a row with CMDTYPE_7 in the first command list is used) any other list on the follow up triggers.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n<h3>ButtonStatePolling-Interval (bsp=xxx;)<\/h3>\r\nThe &#8220;bsp=xx&#8221;\u00a0sets the &#8216;buttonStatePollingIntervall&#8217; in milliseconds meaning the\u00a0frequency the physical button states will be checked and any command list can be executed. The bsp is saved to internal EEPROM and reloaded on button plug-in. Default value for the bsp is 100ms, meaning the button status will be checked every 100ms and thus only every 100ms a command list can be executed.\r\n\r\nExample for a quite fast key repetition:\r\n<ul>\r\n \t<li>Execute default command list 1, allow changing the currListIdx via CMDTYPE_7 and repeat command list execution in 50ms steps (very fast):\r\n<strong><span style=\"color: #800000;\">@1,19,2,0,127,127,-1,50,500; bsp=50; s;<\/span><\/strong><\/li>\r\n<\/ul>\r\n&nbsp;\r\n<h3>Default pin configuration for &#8220;USB Pushbox&#8221;<\/h3>\r\n\/\/ Multiple button setting:\r\n\/\/ phys-pin-A0 to NO switch-&gt;GND ; on list 1 enabled with SOLO-mode\r\n\/\/ phys-pin-A1 to NO switch-&gt;GND ; on list 2\u00a0enabled with SOLO-mode\r\n\/\/ phys-pin-A2 to NO switch-&gt;GND ; on list 3\u00a0enabled with SOLO-mode\r\n\/\/ phys-pin-A3 to NO switch-&gt;GND ; on list 4\u00a0enabled with SOLO-mode\r\n\r\ncopy this line to serial terminal to set this pin configuration:\r\n@0,18,2,32,1,-1,-1,400,500; @1,19,2,32,2,-1,-1,400,500; @2,20,2,32,3,-1,-1,400,500; @3,21,2,32,4,-1,-1,400,500; s;\r\n\r\n&nbsp;\r\n\r\n<hr \/>\r\n\r\n<h2>Delays<\/h2>\r\nCommand\u00a0executions can be delayed.\r\n\r\nExamples:\r\n\r\n!1,1,5,300,0,0;\u00a0 =&gt; wait 300 msec. in action list list number 1, row 1 (5=command &#8216;delayMicroseconds&#8217;)\r\n\r\n!1,2,6,3,0,0;\u00a0 \u00a0 =&gt; wait 3 sec. in action list number 1, row 2 (6=command &#8216;delaySeconds&#8217;)\r\n\r\n<hr \/>\r\n\r\n<h2><strong>Mouse emulation<\/strong><strong>\r\n<\/strong><\/h2>\r\nExample:\r\n<span style=\"color: #800000;\">\u00a0 c1; !1,0,8,32256,256,1;\r\n<\/span>\r\n\r\nResult: Left mouse button click upper right corner \/ close window.\r\n\r\nSyntax: ![list],[index],8, [x], [y], [buttonclick];\r\n\r\nScreen coordinates range from 0..32768 for both x and y axis. ButtonClick: 0=no click; 1=left click; 2=right click; 4=middle click\r\n\r\nPlease not that\u00a0the close-windows function can be more reliable performed with the ALT-F4 keystroke in Windows.\u00a0It\u00a0 is more reliable to navigate with ALT and\/or TAB and other keystrokes in Windows before using the mouse function, as Window positions can move. If you set X=0 and Y=0, the mouse cursor will not be re-positioned. Thus only clicking at the current cursor position is possible with X=0 and Y=0.\r\n<h3>Testing screen coordinates<\/h3>\r\nAs the screen coordinates from 0..32768 for the axis are a bit unusual, you can easily test them with the following commands:\r\n<ul>\r\n \t<li>mx+; =&gt; navigate x axis right &#8211; press the button to move<\/li>\r\n \t<li>mx-; =&gt; navigate x axis\u00a0left &#8211; press the\u00a0button to move<\/li>\r\n \t<li>my+; =&gt; navigate y axis down &#8211; press\u00a0the\u00a0button to move<\/li>\r\n \t<li>my-; =&gt; navigate y axis up &#8211; press the\u00a0button to move<\/li>\r\n \t<li>ms+; \/ ms-; =&gt; make larger\/smaller steps in x\/y<\/li>\r\n \t<li>m0; =&gt; stop test mode<\/li>\r\n<\/ul>\r\n\r\n<hr \/>\r\n\r\n<h2>Standby-Mode<\/h2>\r\nCommand list 1\u00a0is\u00a0executed by default\u00a0when the computer is powered ON (&#8216;List 1&#8217;) and command list 0 is\u00a0executed\u00a0when the computer is\u00a0in Standby-Mode\u00a0(&#8216;List 0&#8217;).\r\n\r\nNote: The STANDBY and WAKE commands differ between Windows, Linux, OS-X and other operating systems (HID-SYSTEM\/HID-CONSUMER type). Not every command is successful. So you\u00a0should\u00a0test the functions with a running serial terminal to get an operation feedback from the button.\r\n\r\n<a href=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/usbpb_poweron_off.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1419 aligncenter\" src=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/usbpb_poweron_off.png\" alt=\"usbpb_poweron_off\" width=\"687\" height=\"304\" \/><\/a>\r\n\r\n<hr \/>\r\n\r\n<h2>Keyboard layouts<\/h2>\r\nFor CMDTYPE_3 (typeSTRING) the keyboard layout is &#8216;English&#8217; by default. If you want to use another keyboard layout, you have to enter the following command in terminal (and save with &#8216;s;&#8217;):\r\n<pre> <b>l1;<\/b> for German Windows CP1252 keyboard layout (set this for a German Windows OS).\r\n <b>l0;<\/b> for German DOS-Latin-1 keyboard layout.\r\n <b>l2;<\/b> for English keyboard layout (default setting)<\/pre>\r\nMore keyboard layouts can bee added on request.\r\n\r\n<hr \/>\r\n\r\n<h2>Firmware\/ Factory settings<\/h2>\r\nPlease download the recent firmware for the\u00a0<a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/download\/pushbutton_2.3.1_firmware.zip\">USB Pushbutton<\/a>\u00a0or the <a href=\"http:\/\/main.grauonline.de\/pushbuttonwww\/download\/pushbox_2.3.1_firmware.zip\">USB Pushbox<\/a>. After download unzip the file, attach the button and execute &#8220;Please click here&#8230;&#8221;.\r\n\r\n<strong>Note:<\/strong> Your settings (command lists, strings, pin configuration) will <strong>NOT<\/strong>\u00a0be overwritten on firmware update.\r\n\r\n<strong><span style=\"text-decoration: underline;\">Factory default settings:<\/span><\/strong>\r\n\r\nYou can connect the button to a serial terminal as described above and type in &#8220;factory;&#8221; to reset your button to factory default settings.\r\n\r\nThe factory settings setup your button function to a single &#8220;ENTER&#8221; key without repetition on hold.\r\n\r\n<hr \/>\r\n\r\n<h2>More command examples<\/h2>\r\nClear you command list 1 with: &#8216;c1;&#8217;. Then choose your function:\r\n\r\nGeneral Windows OS functions:\r\n<ul>\r\n \t<li>Open Windows\u00a0Taskmanager (CTRL+SHIFT+ESC): !1,0,2,0&#215;2000,0x2001,0x4029;<\/li>\r\n \t<li>Windows: cycle Windows (CTRL+ALT+ESC): !1,0,2,0&#215;2000,0x2002,0x4029;<\/li>\r\n \t<li>three single ENTER (with instant release): !1,0,2,0xC028,0xC028,0xC028;<\/li>\r\n \t<li>left OS-Key (hold): !1,0,2,0&#215;2003,0,0;<\/li>\r\n \t<li>Windows toggle desktop\/app (OS-KEY + d): !1,0,2,0&#215;2003,100,0;<\/li>\r\n \t<li>Windows logout (OS-Key + l): !1,0,2,0&#215;2003,108,0;<\/li>\r\n \t<li>Windows open disk management (OS-KEY + r ; 500ms delay ; diskmgmt.msc ; ENTER):\r\n!1,0,2,0&#215;2003,0x15,0x8000; !1,1,5,500,0,0; str0=diskmgmt.msc; !1,2,3,0,0,0; !1,3,2,0xC028,0,0;<\/li>\r\n \t<li>Windows open skype (OS-Key + r ; 500ms delay ; &lt;skypePath&gt;\u00a0; ENTER):\r\n!1,0,2,0&#215;2003,0x15,0x8000; !1,1,5,500,0,0; str1=&#8221;C:\\Program Files (x86)\\Microsoft\\Skype for Desktop\\Skype.exe&#8221;; !1,2,3,1,0,0; !1,3,2,0&#215;4028,0,0;<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nSystem power\/standby\/wake functions:\r\n<ul>\r\n \t<li>HID System\/Consumer sleep: !1,0,1,0&#215;82,0,0;\u00a0!1,1,4,0&#215;32,0,0;<\/li>\r\n \t<li>HID System wake up:\u00a0!0,0,1,0&#215;83,0,0;<\/li>\r\n \t<li>HID System\/Consumer powerdown:\u00a0!1,0,1,0&#215;81,0,0;\u00a0!1,1,4,0&#215;30,0,0;<\/li>\r\n \t<li>OS-X powerdown:\u00a0 !1,0,2,0&#215;2000,0,0;!1,1,1,0&#215;81,0xffff,0;!1,2,5,500,0,0;!1,3,2,0xC028,0,0;<\/li>\r\n \t<li>OS-X standby\/wake: !1,0,2,0&#215;2000,0x2001,0;!1,1,1,0&#215;81,0,0;!1,2,7,0,0,0;!0,0,2,0&#215;2000,0,0;!0,1,7,1,0,0;<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nBrowser functions:\r\n<ul>\r\n \t<li>Open new window (CTRL-n):\u00a0!1,0,2,0&#215;2000,110,0;<\/li>\r\n \t<li>Open new tab (CTRL-t):\u00a0!1,0,2,0&#215;2000,116,0;<\/li>\r\n \t<li>Firefox re-open last tab (CTRL-SHIFT-t): !1,0,2,0&#215;2000,0x2001,116;<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nSound functions:\r\n<ul>\r\n \t<li>Toggle mute\/unmute sound (1st\/2nd trigger toogle): !1,0,4,0xE2,0,0;<\/li>\r\n \t<li>Sound pause on button hold\/ DJ break function (mute\u00a0on\u00a0trigger, unmute on release): c1;c3; @1,19,2,0,1,-1,3,400,500; !1,0,4,0xE2,0,0;\u00a0!3,0,4,0xE2,0,0;<\/li>\r\n \t<li>Play\/replay sound with VLC: (OS-KEY + r; 500ms delay; VLC &lt;soundpath&gt;; ENTER; change\u00a0command list to 2; Rewind in VLC with p ):\r\n!1,0,2,0&#215;2003,0x15,0x8000; !1,1,5,500,0,0;\u00a0str0=vlc &#8220;C:\\Soundsamples\\pushbutton.mp3&#8221;; !1,2,3,0,0,0;\u00a0!1,3,2,0&#215;4028,0,0;\u00a0!1,4,7,2,0,0;\u00a0!2,0,2,112,0,0;<\/li>\r\n \t<li>Volume step up\/increase (with repetition on hold): !1,0,4,0xE9,0,0;\u00a0@1,19,2,0,127,127,-1,400,500;<\/li>\r\n \t<li>Volume step down\/decrease (with repetition on hold): !1,0,4,0xEA,0,0;\u00a0@1,19,2,0,127,127,-1,400,500;<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nPowerpoint:\r\n<ul>\r\n \t<li>SPACE-Key: !1,0,2,32,0,0;<\/li>\r\n \t<li>RETURN\/ENTER: !1,0,2,0&#215;4028,0,0;<\/li>\r\n \t<li>Arrow right: !1,0,2,0x404F,0,0;<\/li>\r\n \t<li>Arrow left: !1,0,2,0&#215;4050,0,0;<\/li>\r\n \t<li>F5 to (re-)start presentation:\u00a0!1,0,2,0x403E,0,0;<\/li>\r\n \t<li>Shift-F5 to start presentation from current slide:\u00a0!1,0,2,0&#215;2001,0x403E,0;<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nLet the button speak with you:\r\n<ul>\r\n \t<li>\u00a0Toggle two\u00a0words: c1;c2; @1,19,2,0,127,-1,-1,400,500; str0=Hello my friend!; !1,0,3,0,0,0;\u00a0\u00a0!1,1,2,0xC028,0,0; !1,2,7,2,0,0;\u00a0str1=Nice to meet you!; !2,0,3,1,0,0; !2,1,2,0xC028,0,0; !2,2,7,1,0,0;<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Important:<\/strong> Always test the programmed function in\u00a0your destination application. Add delays if necessary to allow the computer to perform the programmed operation. <strong>After programming, save\u00a0to flash memory with &#8216;s;&#8217;.<\/strong> <strong>Then\u00a0unplug and re-plug the USB button and test.<\/strong>\r\n<h2><\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dc13c70 elementor-section-boxed elementor-section-height-default elementor-section-height-default jltma-glass-effect-no\" data-id=\"dc13c70\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-408262c jltma-glass-effect-no\" data-id=\"408262c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-e2a62fc elementor-section-boxed elementor-section-height-default elementor-section-height-default jltma-glass-effect-no\" data-id=\"e2a62fc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-fffe467 jltma-glass-effect-no\" data-id=\"fffe467\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5cf8bf9 elementor-align-center jltma-glass-effect-no elementor-widget elementor-widget-button\" data-id=\"5cf8bf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"https:\/\/main.grauonline.de\/?page_id=2769\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-arrow-alt-circle-left\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back to product page!<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3e12adc jltma-glass-effect-no\" data-id=\"3e12adc\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2c6d3c1 elementor-align-center jltma-glass-effect-no elementor-widget elementor-widget-button\" data-id=\"2c6d3c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"https:\/\/main.grauonline.de\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-arrow-alt-circle-up\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back to the start!<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Install driver for programming First connect the button to your computer. Then lay in the driver CD and wait 3&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1415","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>USB Pushbutton Buzzer (PBT-Series) \/ USB Pushbox (PBL-Series) - Manual - Grau GmbH Hardware &amp; Software Solutions<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/main.grauonline.de\/de\/usb-push-button-manual\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"USB Pushbutton Buzzer (PBT-Series) \/ USB Pushbox (PBL-Series) - Manual - Grau GmbH Hardware &amp; Software Solutions\" \/>\n<meta property=\"og:description\" content=\"Install driver for programming First connect the button to your computer. Then lay in the driver CD and wait 3&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/main.grauonline.de\/de\/usb-push-button-manual\/\" \/>\n<meta property=\"og:site_name\" content=\"Grau GmbH Hardware &amp; Software Solutions\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-08T20:52:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot-300x253.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"20\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/main.grauonline.de\/#website\",\"url\":\"https:\/\/main.grauonline.de\/\",\"name\":\"Grau GmbH Hardware &amp; Software Solutions\",\"description\":\"We make IT simple!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/main.grauonline.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/#primaryimage\",\"inLanguage\":\"de\",\"url\":\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot.jpg\",\"contentUrl\":\"https:\/\/main.grauonline.de\/wp-content\/uploads\/2019\/02\/pushbutton_rot.jpg\",\"width\":2009,\"height\":1696,\"caption\":\"complete with cable\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/#webpage\",\"url\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/\",\"name\":\"USB Pushbutton Buzzer (PBT-Series) \/ USB Pushbox (PBL-Series) - Manual - Grau GmbH Hardware &amp; Software Solutions\",\"isPartOf\":{\"@id\":\"https:\/\/main.grauonline.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/#primaryimage\"},\"datePublished\":\"2019-02-08T16:00:07+00:00\",\"dateModified\":\"2022-01-08T20:52:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/main.grauonline.de\/usb-push-button-manual\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@id\":\"https:\/\/main.grauonline.de\/usb-push-button-manual\/#webpage\"}}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/pages\/1415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/comments?post=1415"}],"version-history":[{"count":190,"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/pages\/1415\/revisions"}],"predecessor-version":[{"id":4198,"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/pages\/1415\/revisions\/4198"}],"wp:attachment":[{"href":"https:\/\/main.grauonline.de\/de\/wp-json\/wp\/v2\/media?parent=1415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}