---
title: init function
---
## Summary
Initializes KeymanWeb and configures KeymanWeb Options.
Note that this is an asynchronous operation.
`keyman.init()` is automatically called after the page loads, with default
options, if it has not already been called by scripts on the page. It is safe to
call `keyman.init()` once more in this situation, in order to set additional
options.
The [`keyman.initialized` property](initialized) may be checked to determine the
current initialization state of Keyman Engine for Web.
You should not call functions other than `keyman.init()` until Keyman
initialization is complete. As `keyman.init()` returns a Promise, the Promise
fulfilment callback is the appropriate place to perform post-init steps.
## Syntax
```js
keyman.init(initOptions);
```
### Parameters
`initOptions`
: Type: `Object`.
See the Description section below for the necessary object specification.
### Return Value
`Promise`: A [JavaScript Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
fulfilled upon full initialization.
## Initialization Options
The `initOptions` object may contain the following members:
`ui`
: `string|object` optional
The user interface to be used on desktop devices. Default value: `'float'`.
Please see below for the specification of this parameter if using an object
value.
`root`
: `string` optional
The folder KeymanWeb should consider root. Default value: `undefined`, which
sets `root` to the base folder where keymanweb.js is located.
`resources`
: `string` optional
The image folder URL for UI resources. Default value: `[root]/resources`.
`keyboards`
: `string` optional
The folder containing local keyboard resources if utilized. Default value:
`[root]/keyboards`.
`fonts`
: `string` optional
Folder containing any embedded fonts required for keyboards or the OSK.
Default value: `[root]`.
`attachType`
: `string` optional
Must be `undefined`, `'auto'`, or `'manual'`. Specifies the default behavior
for attaching KeymanWeb to any input elements on the webpage.
* If `undefined`, KeymanWeb will default to 'manual' for mobile devices and
'auto' for other devices.
* If `'auto'`, KeymanWeb will automatically attach to every non-disabled
control, even those added after page initialization.
* If `'manual'`, KeymanWeb must be instructed to attached manually to each
control it should handle input for.
`setActiveOnRegister`
: `boolean` optional
Specifies whether KeymanWeb will set the newly registered keyboard as active. Default value `true`.
* If `true`, KeymanWeb will automatically activate a keyboard when registered.
* If `false`, KeymanWeb will not activate a keyboard when registered.
**Note:** Changed from `string` type to `boolean` type in KeymanWeb 17.0 ([#8458](https://github.com/keymanapp/keyman/pull/8458)).
`useAlerts`
: `boolean` optional
Specifies whether KeymanWeb's alert feedback should be enabled. Default value `true`.
* If `true`, KeymanWeb will display its default alerts.
* If `false`, KeymanWeb will not display its default alerts. Choose this if you wish to disable them or would prefer to customize your site's error feedback.
* In either case, any calls your page makes to `keyman.util.alert()` will not be blocked. This only affects calls built into KeymanWeb itself.
`spacebarText`
: `com.keyman.SpacebarText` optional
If present, must be one of the following four constants:
* `KEYBOARD /*'keyboard'*/` - show the keyboard name in the spacebar
* `LANGUAGE /*'language'*/` - show the language name in the spacebar
* `LANGUAGE_KEYBOARD /*'languageKeyboard'*/` - show both language and
keyboard name in the spacebar, separated by hyphen
* `BLANK /*'blank'*/` - keep the spacebar blank
Note that this may be overridden on a per-keyboard basis with the registration
property `displayName`.
Default value: `LANGUAGE_KEYBOARD`.
---
If setting `initOptions.ui` with an object value, it should be specified as
follows:
`name`
: `string`
: The name of the ui to utilize for non-mobile devices.
`right`
: `boolean` optional
: A Float-UI-only option. Sets right-alignment of the UI. Defaults to false.