Skip to content

Mikael-Aberg/react-native-easy-keyboard

Repository files navigation

react-native-easy-keyboard

A simple way to create virtual keyboards for React Native

Installation

Install the package with npm

npm i --save react-native-easy-keyboard

or with yarn

yarn add react-native-easy-keyboard

How do I change the layout of my keyboard?

react-native-easy-keyboard layouts are made up of lists of strings or KeyConfig objects representing each row of the keyboard.

With strings

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [
      ['7', '8', '9'],
      ['4', '5', '6'],
      ['1', '2', '3'],
    ],
  },
};

return <EasyKeyboard config={myCustomLayout} />;

With KeyConfig objects

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [
      [{value: '7'}, {value: '8'}, {value: '9'}],
      [{value: '4'}, {value: '5'}, {value: '6'}],
      [{value: '1'}, {value: '2'}, {value: '3'}],
    ],
  },
};

<EasyKeyboard config={myCustomLayout} />;

They can also be mixed

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [
      ['7', {value: '8'}, '9'],
      [{value: '4'}, '5', {value: '6'}],
      ['1', {value: '2'}, '3'],
    ],
  },
};

<EasyKeyboard config={myCustomLayout} />;

How do I change the size of my keys?

To change the size of a key you can either use the size property of the KeyConfig object or end your string with a pair of curly brackets containing the desired size.

The "8" key in these examples will be the width of 3 default size keys

With strings

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [['7', '8{3}', '9']],
  },
};

return <EasyKeyboard config={myCustomLayout} />;

With KeyConfig objects

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [[{value: '7'}, {value: '8', size: 3}, {value: '9'}]],
  },
};

<EasyKeyboard config={myCustomLayout} />;

How do I change the style of my keyboard?

import EasyKeyboard, {KeyboardTheme} from 'react-native-easy-keyboard';

const myTheme: KeyboardTheme = {
  containerStyle: {
    alignItems: 'center',
    justifyContent: 'flex-end',
  },
  rowStyle: {},
  keyStyle: {},
  textStyle: {},
};

<EasyKeyboard theme={myTheme} />;

How do I change the text on a key?

To change the text displayed on a key you can either configure the displayOptions in the KeyboardConfig, (this will affect all keys in every layout) or you can use the display option in the KeyConfig object.

With displayOptions

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [['7', '8', '9', '{del}']],
  },
  displayOptions: {
    display: {
      '{del}': '<- Delete',
      '9': 'Nine',
    },
  },
};

<EasyKeyboard config={myCustomLayout} />;

With KeyConfig

import EasyKeyboard, {KeyboardConfig} from 'react-native-easy-keyboard';

const myCustomLayout: KeyboardConfig = {
  layouts: {
    default: [
      [
        '7',
        '8',
        {value: '9', display: 'Nine'},
        {value: '{del}', display: '<- Delete'},
      ],
    ],
  },
};

<EasyKeyboard config={myCustomLayout} />;

KeyboardTheme

Property Type Notes
keyStyle ViewStyle The style applied to TouchableOpacity for each key
textStyle TextStyle The style applied to the Text for each key
rowStyle ViewStyle The style applied to to View containing each row
containerStyle ViewStyle The style applied to the main View containing the keyboard

KeyConfig

Property Type Notes
value string The value that will be returned when the key is pressed (Required)
size number The size of the key. 2 = double the size of a normal key, 0.5 = half the size of a normal key. Only affects the width of the key (Default 1)
isTrigger boolean If the key should trigger the onTriggerPressed callback (Default false)
display string The text to be displayed on the key. If undefined value property is used instead
keyStyle ViewStyle Style for the keys TouchableOpacity component
textStyle TextStyle Style for the keys Text component

EasyKeyboard Component

Methods

Method name Arguments Notes
setKeyboardLayout layoutName: string Changes the layout of the keyboard if the layout exists in the config

Props

Prop Type Required Note
config KeyboardConfig true The configuration for the keyboard, containing all the layouts
theme KeyboardTheme false

Events

Event Name Returns Notes
onKeyPress key: string Callback that is called when a key is pressed
onTriggerPress trigger: string Callback that is called when a trigger key is pressed