# 10.7 USB keyboard

**Introduction**

1\) HMI support keyboard via USB port of HMI.

2\) When the keyboard function is enabled, the “Cursor Display” function is enabled by default. The user could move the cursor through the “up, down, left and right buttons” of the keyboard, and then press the Enter key to select the object.

3\) Multiple devices could be connected with HMI via USB HUB (up to 4 external devices), such as: mouse, keyboard, scanner, magnetic stripe reader, etc.

**Configuration**

1\) Enable function

In the software \[Settings menu], Click \[Project settings]-> \[Extend], and check \[Enable keyboard] in \[Input device] settings area as below shows.

![](https://3950998874-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fpi-series-user-manual%2F-LvJTXIHvy0DiPYCQstJ%2F-LvJUWL0ibyCY0-vqf3Z%2F0.png?generation=1575523064638580\&alt=media)

2\) Configuration decryption

 When the keyboard function is enabled, the “Cursor Display” function is enabled by default. The user could move the cursor through the “up, down, left and right buttons” of the keyboard, and then press the Enter key to select the object;

 NumLock: When NumLock key is not lit, the keypad number is not allowed to be input (offline simulation does not allow all numeric keys to be input, including the numeric keys on the left side of the keyboard);

 Key combination: (1) "Shift" + the left side of the keyboard and the special symbol button, to achieve special character input, such as: \~ ! @ # $ % ^ & \* ( ) \_ + { } : " < > ? ;

 Use the system special addresses "HSW1073 and HSW1074" to write custom key combinations in the script (currently only two key combinations are supported);

 Caps Lock: In lowercase mode, shift+ letters, to enter uppercase; in uppercase mode, shift+ letters enter lowercase;

3\) System special address

In practical application, the \[Enable Keyboard] function could be combined with the related "system special address" to achieve multi-key combination operation.

| **Address** | **Description**                           | **Function**                                                                                                                                                                                                                                                                                                                                                                           |
| ----------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| HSW1073     | Keyboard key value                        | <p>The currently pressed key value is displayed. The key value is shown in Table 1</p><p>(The Numeric/Character display object is not updated when it is being entered)</p>                                                                                                                                                                                                            |
| HSW1074     | Keyboard key status                       | <p>Display current key states</p><p>=0: key release</p><p>=1: key press</p><p>=2: Press and hold long</p><p>(The Numeric/Character display object is not updated when it is being entered)</p>                                                                                                                                                                                         |
| HSW1075     | Cursor speed                              | Control the movement speed of the cursor, the range is 0\~100, the default is 20                                                                                                                                                                                                                                                                                                       |
| HSW1076     | X coordinate value of cursor              | The X value of the current position of the cursor, range: 0\~screen width-1                                                                                                                                                                                                                                                                                                            |
| HSW1077     | Y coordinate value of cursor              | The Y value of the current position of the cursor, range: 0\~screen height-1                                                                                                                                                                                                                                                                                                           |
| HSW1078     | The ASCII code of keyboard key            | <p>Only the ASCII values of letters, numbers, and symbols are displayed. The ASCII value of the function keys is not displayed, as shown in Table 2</p><p>(The Numeric/Character display object is not updated when it is being entered)</p>                                                                                                                                           |
| HSW1079     | Enable cursor position and Enter key mode | <p>HSX1079.0 = 1: Set the cursor position according to HSW1076 and HSW1077 value;</p><p>HSX1079.1 = 0: When Numeric/Character display object is entered, enter key is for end input instruction. When no Numeric/Character display object is entered, enter key is for normal click;</p><p>HSX1079.1 = 1: Enter key only for normal click, not for keyboard end input instruction;</p> |

**Key-value appendix table (decimal) (104 keys)**

| **Key**   | **Value** | **Key**       | **Value**         | **Key**          | **Value**         |
| --------- | --------- | ------------- | ----------------- | ---------------- | ----------------- |
| ESC       | 1         | i I           | 23                | Alt (Right)      | 100(offline: 56)  |
| F1        | 59        | o O           | 24                | windows(Right)   | 126(offline: 125) |
| F2        | 60        | p P           | 25                | Menu             | 127               |
| F3        | 61        | \[ {          | 26                | Right\_ctrl      | 97(offline: 29)   |
| F4        | 62        | ] }           | 27                | Print Screen     | 99                |
| F5        | 63        | Enter         | 28                | ScrollLock       | 70                |
| F6        | 64        | CapsLock      | 58                | PauseBreak       | 119               |
| F7        | 65        | a A           | 30                | Insert           | 110               |
| F8        | 66        | s S           | 31                | Home             | 102               |
| F9        | 67        | d D           | 32                | PageUp           | 104               |
| F10       | 68        | f F           | 33                | Delete           | 111               |
| F11       | 87        | g G           | 34                | End              | 107               |
| F12       | 88        | h H           | 35                | PageDown         | 109               |
| \` \~     | 41        | j J           | 36                | ↑                | 103               |
| 1 !       | 2         | k K           | 37                | ↓                | 108               |
| 2 @       | 3         | l L           | 38                | ←                | 105               |
| 3 #       | 4         | ; :           | 39                | →                | 106               |
| 4 $       | 5         | ' "           | 40                | NumLock (Keypad) | 69                |
| 5%        | 6         | \ \|          | 43                | / (Keypad)       | 98 (offline 53)   |
| 6 ^       | 7         | Shift (Left)  | 42                | \* (Keypad)      | 55 (offline: 9)   |
| 7 &       | 8         | z Z           | 44                | -　(Keypad)       | 74 (offline: 12)  |
| 8 \*      | 9         | x X           | 45                | +　(Keypad)       | 78 (offline: 13)  |
| 9 (       | 10        | c C           | 46                | Enter (Keypad)   | 96                |
| 0 )       | 11        | v V           | 47                | . (Keypad)       | 83 (offline: 9)   |
| - \_      | 12        | b B           | 48                | 0 (Keypad)       | 82 (offline: 11)  |
| + =       | 13        | n N           | 49                | 1 (Keypad)       | 79 (offline: 2)   |
| Backspace | 14        | m M           | 50                | 2 (Keypad)       | 80 (offline: 3)   |
| Tab       | 15        | , <           | 51                | 3 (Keypad)       | 81 (offline: 4)   |
| q Q       | 16        | . >           | 52                | 4 (Keypad)       | 75 (offline: 5)   |
| w W       | 17        | / ?           | 53                | 5 (Keypad)       | 76 (offline: 6)   |
| e E       | 18        | Shift (Right) | 54 (offline : 42) | 6 (Keypad)       | 77 (offline: 7)   |
| r R       | 19        | Ctrl (Left)   | 29                | 7 (Keypad)       | 71 (offline: 8)   |
| t T       | 20        | Windows(Left) | 125               | 8 (Keypad)       | 72 (offline: 9)   |
| Y y       | 21        | Alt (Left)    | 56                | 9 (Keypad)       | 73 (offline: 10)  |
| u U       | 22        | space         | 57                |                  |                   |

**ASCII code**

| **Code** | **Value** | **Code** | **Value** | **Code** | **Value** | **Code** | **Value** |
| -------- | --------- | -------- | --------- | -------- | --------- | -------- | --------- |
| 32       | space     | 56       | 8         | 80       | P         | 104      | h         |
| 33       | !         | 57       | 9         | 81       | Q         | 105      | i         |
| 34       | "         | 58       | :         | 82       | R         | 106      | j         |
| 35       | #         | 59       | ;         | 83       | S         | 107      | k         |
| 36       | $         | 60       | <         | 84       | T         | 108      | l         |
| 37       |  %        | 61       | =         | 85       | U         | 109      | m         |
| 38       | &         | 62       | >         | 86       | V         | 110      | n         |
| 39       | '         | 63       | ?         | 87       | W         | 111      | o         |
| 40       | (         | 64       | @         | 88       | X         | 112      | p         |
| 41       | )         | 65       | A         | 89       | Y         | 113      | q         |
| 42       | \*        | 66       | B         | 90       | Z         | 114      | r         |
| 43       | +         | 67       | C         | 91       | \[        | 115      | s         |
| 44       | ,         | 68       | D         | 92       | \\        | 116      | t         |
| 45       | -         | 69       | E         | 93       | ]         | 117      | u         |
| 46       | .         | 70       | F         | 94       | ^         | 118      | v         |
| 47       | /         | 71       | G         | 95       | \_        | 119      | w         |
| 48       | 0         | 72       | H         | 96       | \`        | 120      | x         |
| 49       | 1         | 73       | I         | 97       | a         | 121      | y         |
| 50       | 2         | 74       | J         | 98       | b         | 122      | z         |
| 51       | 3         | 75       | K         | 99       | c         | 123      | {         |
| 52       | 4         | 76       | L         | 100      | d         | 124      | \|        |
| 53       | 5         | 77       | M         | 101      | e         | 125      | }         |
| 54       | 6         | 78       | N         | 102      | f         | 126      | \~        |
| 55       | 7         | 79       | O         | 103      | g         |          |           |

**Scripts example**

'HSW1073 key value

'HSW1074 key states 0: released; 1: pressed; 2: Holding pressed

'HSW1078 ASCII value of key

**1) Example 1**

if @W\_HSW1073 = 29 then 'Ctrl key value is 29

&#x20;if @W\_HSW1074 = 1 or @W\_HSW1074 = 2 then 'Press Ctrl key

&#x20;@W\_HDW1000 = 1

&#x20;else 'Release Ctrl key

&#x20;@W\_HDW1000 = 0

&#x20;endif

endif

**2) Example 2**

if @W\_HSW1073 = 59 and (@W\_HSW1074 = 1 or @W\_HSW1074 = 2) then 'F1 key value is 59

&#x20;if @W\_HDW1000 = 1 then 'Combination Ctrl + F1

&#x20;@W\_HDW2000 = @W\_HDW2000 + 1 'Function of combination key is HDW2000 + 1

&#x20;endif

endif

**3) Example 3**

if @W\_HSW1073 = 60 and (@W\_HSW1074 = 1 or @W\_HSW1074 = 2) then 'the value of F2 is 60

&#x20;if @W\_HDW1000 = 1 then 'Combination Ctrl + F2

&#x20;@W\_HDW2000 = @W\_HDW2000 - 1 'Function of combination key is HDW2000 - 1

&#x20;endif

&#x20;endif

**4) Example 4**

if AsString(@W\_HSW1078) = "a" and (@W\_HSW1074 = 1 or @W\_HSW1074 = 2) then ' Page up

&#x20;if @W\_HSW13 > 0 then

&#x20;@W\_HSW13 = @W\_HSW13 - 1

&#x20;endif

endif

**5) Example 5**

if AsString(@W\_HSW1078) = "b" and (@W\_HSW1074 = 1 or @W\_HSW1074 = 2) then 'Page down

@W\_HSW13 = @W\_HSW13 + 1

&#x20;if @W\_HSW13 > 3 then

&#x20;@W\_HSW13 = 3

&#x20;endif

endif
