GetKeyboardType function (winuser.h)

Retrieves information about the current keyboard.


int GetKeyboardType(
  int nTypeFlag



Type: int

The type of keyboard information to be retrieved. This parameter can be one of the following values.

Value Meaning
Keyboard type
Keyboard subtype
The number of function keys on the keyboard

Return value

Type: int

If the function succeeds, the return value specifies the requested information.

If the function fails and nTypeFlag is not one, the return value is zero; zero is a valid return value when nTypeFlag is one (keyboard subtype). To get extended error information, call GetLastError.


The type may be one of the following values.

Value Meaning
1 IBM PC/XT or compatible (83-key) keyboard
2 Olivetti "ICO" (102-key) keyboard
3 IBM PC/AT (84-key) or similar keyboard
4 IBM enhanced (101- or 102-key) keyboard
5 Nokia 1050 and similar keyboards
6 Nokia 9140 and similar keyboards
7 Japanese keyboard

The subtype is an original equipment manufacturer (OEM)-dependent value.

The application can also determine the number of function keys on a keyboard from the keyboard type. Following are the number of function keys for each keyboard type.

Type Number of function keys
1 10
2 12 (sometimes 18)
3 10
4 12
5 10
6 24
7 Hardware dependent and specified by the OEM

When a single USB keyboard is connected to the computer, this function returns the code 81.


Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header winuser.h (include Windows.h)
Library User32.lib
DLL User32.dll

See also

Keyboard Input Functions