Why an HMI picks a numeric entry keypad by tag data type

6 min read · Published November 10, 2026

The keypad that pops up on a Numeric Entry object is picked from the linked tag's data type, not from a layout you assign. An integer tag brings digits only, floating point adds the decimal point, a string tag brings text keys, and a signed type adds the +/- key. Change the tag type where the logic allows it, or build a User Defined Keypad and select it on the object's General tab.

Press a Numeric Entry object on the panel and a keypad pops up. Which keypad appears is not a layout you assign. The panel reads the data type of the tag linked to the object and picks the matching System Default layout from it: digits only for an integer, a decimal point for floating point, text keys for a string, and a +/- key when the type is signed. That is also why the keypad list on the object's General tab offers nothing but System Default until you build a keypad of your own, and why pasting a keypad onto a project screen does not put it in that list. This page gives the mapping, the range math that decides between a floating point tag and a scaled integer, and the two ways to change what pops up.

The answer: the data type picks the keypad

Open the Numeric Entry object and look at the keypad selector on its General tab. It lists System Default plus any User Defined Keypad you have created. There is no field where you assign Default 1 through Default 5 to the project. The five built-in System Default layouts live under the Define Keypad screen, reached from the Screen tab of the Navigation window or from the Database menu's Define Keypad item, and the panel chooses among them from the entry's data type.

The mapping in practice:

Tag data type Keypad that pops up Decimal point +/- key
Integer, unsigned Default 1 no no
Integer, signed the integer default layout no yes
Floating point Default 4 yes only if the type is signed
ASCII string Default 5 no no

Decimal and sign are separate questions. Default 4 answers whether the value can hold a fraction. The +/- key answers whether the value can be negative: a signed type shows the same digit layout with the key added, and the unsigned type shows it without. A keypad with no decimal point is not a broken layout. It is the integer default doing its job, because the register it writes cannot hold a fraction.

How to get decimal entry

Pick the route from the PLC logic, not from the keypad you like the look of.

Floating point tag. When the receiving logic is meant to hold fractions, point the object's data format at a floating point type. Default 4 pops up, with the decimal point. Changing a type across a project is its own job, and changing a tag data type without rebuilding every object is the short version of it. If the type field is greyed out, something references the tag and locks it; fixing a tag data type that is greyed out walks that down.

Scaled integer. When the register must stay an integer, store tenths or hundredths and set the object's decimal places to 1 or 2 in the same data-format screen where the type is set. A register value of 366 then reads 36.6 on the screen. The type is unchanged, so the default keypad is unchanged too; the decimal point lives in the display format. The arithmetic that keeps this honest is in scaled integer math when your PLC has no floating point.

Change the type only when the value is genuinely fractional. A floating point tag writes floats to the PLC, and logic that compares the register against an integer setpoint breaks. Move the type and the logic together, or keep the scaled integer.

Build a User Defined Keypad when the layout itself is wrong

A data type change fixes the decimal point. It does nothing about key size, key position or keys that should not exist. For that, build a User Defined Keypad:

  1. Open the keypad area: Navigation window, Screen tab, Define Keypad icon, or the Database menu's Define Keypad item.
  2. Copy the built-in layout closest to what you need and paste it into a new keypad screen. Keypad screens are separate from your project screens.
  3. Edit the keys: enlarge them, move them, and delete keys operators must never be able to press.
  4. Open the Numeric Entry object's General tab and pick the new keypad from the list. It appears there because it now exists as a keypad screen.

The common trap: pasting keypad objects onto an ordinary project screen puts keys on a display page, and it does not put the layout in the object's keypad list. The layout has to be created in the keypad screen area. The steps for assigning a user-defined keypad to a numeric entry object start once the keypad screen exists.

Key size is physical as well as graphical. A crowded default keypad mis-keys on a small panel no matter how well the project is drawn, so if entry errors are the complaint, compare panel sizes as part of the fix; the panel-mount display range is the place to do that.

What signed and unsigned change

The +/- key means the type is signed, and sign costs range. A 16-bit integer register holds -32768 to 32767 signed or 0 to 65535 unsigned, so switching to signed halves the positive side. Choose signed when the value can legitimately read below zero, such as an ambient or freezer temperature, and stay unsigned when it cannot.

Floating point trades the fixed decimal for range and precision. A 32-bit IEEE 754 value carries about 7 significant decimal digits and moves the decimal point instead of storing fixed tenths, which is what Default 4 keys into it.

When a display suddenly shows a huge positive number where a small one belongs, the signed and unsigned settings disagree between the PLC and the panel. The tag's data format is the first thing to check; why the panel shows large positive numbers covers that symptom.

Worked example: barrel setpoint in 0.1 °C steps

Scenario: an operator must set a barrel temperature from 0.0 to 100.0 °C in 0.1 °C steps, and the Numeric Entry object pops up a keypad with no decimal point.

  1. Read the tag. The object points at a 16-bit unsigned integer register. That explains the keypad: Default 1, digits only.
  2. Range check for the integer route. 100.0 °C stored as tenths is 100 x 10 = 1000 counts. 1000 sits well inside 0 to 65535, so the existing register holds the full range with room above 100.0 °C.
  3. Logic check. The PLC compares the register against an integer setpoint in tenths. Switching to floating point would force a rewrite of that logic, so keep the integer.
  4. Apply. Store tenths and set the object's decimal places to 1. A register value of 366 reads 36.6, and the keypad still pops up digits-only, because the type never changed.
  5. Keypad improvement. Operators mis-key the small default keys, so copy the built-in layout into a new keypad screen, enlarge the digit keys, delete the unused ones, and select the new keypad on the General tab.

Result: the layout follows the tag type in every step; the decimal places setting controls how the value reads; and the range math, 1000 counts against 65535, is what makes the integer route safe. If the PLC logic had been ready for floats, step 3 would have gone the other way and Default 4 would have supplied the decimal point.

Check the change before the panel goes back on the wall

Run the project and press the object, then check three things. The popup shows the keys the entry needs. A value typed in the required format lands in the tag as the right number, read back on a screen that displays the raw register. Every other object linked to the same tag still behaves, because the keypad follows the tag: change the type and every object that points at it changes with it.

Recommendation

Recommendation: when a Numeric Entry keypad is missing the decimal point, read the tag type before touching anything. Switch the entry to floating point only when the receiving logic is meant to hold fractions. Keep the integer register and display tenths with one decimal place when the logic is fixed, after checking that tenths of the maximum value fit inside 32767 or 65535. Build a User Defined Keypad when the problem is key size, key position or keys that must not exist, and select it on the object's General tab. The keypad and the register have to agree, so never change a production tag's type just to make one key appear.

Questions

If I change a tag's data type, what happens on other screens that use the same tag?

Every Numeric Entry object linked to that tag picks up the new default keypad, because the layout follows the tag's type and not the object. List the screens that reference the tag first and confirm each one expects fractions before you change a production type. If only one screen needs decimal entry, give that screen its own floating point tag or a user-defined keypad and leave the shared tag alone.

Can a user-defined keypad be used for password and text entry too?

Yes. The user-defined keypad feature covers the password, numeric entry and text entry keypads, so one custom layout can serve several entry objects. Build the layout once as a keypad screen, then select it from each object's keypad list. The usual reason to build one is restriction: remove the keys a field must never receive, so operators can only enter valid values.

Can one custom keypad serve every numeric entry in the project?

The assignment is per object, so build the layout once as a keypad screen and select it on each Numeric Entry object's General tab. Objects left on System Default keep the type-based layout, which is fine where the built-in keys already fit. Consistency helps where operators move between panels: the same keys in the same places cuts entry errors.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote