All Projects → wix → React Native Keyboard Input

wix / React Native Keyboard Input

Licence: mit
Use your own custom input component instead of the system keyboard

Projects that are alternatives of or similar to React Native Keyboard Input

Esp32 Ble Keyboard
Bluetooth LE Keyboard library for the ESP32 (Arduino IDE compatible)
Stars: ✭ 533 (-25.66%)
Mutual labels:  keyboard
Fluidkeyboardresize
Smoothly reacting to keyboard visibility changes in Android
Stars: ✭ 610 (-14.92%)
Mutual labels:  keyboard
Combokeys
Web browser keyboard shortcuts. CommonJS, NPM.
Stars: ✭ 675 (-5.86%)
Mutual labels:  keyboard
React Native Keyboard Manager
⚛ Library to prevent issues of keyboard sliding up and cover inputs on React-Native iOS projects.
Stars: ✭ 534 (-25.52%)
Mutual labels:  keyboard
Xy Ui
🎨面向未来的原生 web components UI组件库
Stars: ✭ 603 (-15.9%)
Mutual labels:  keyboard
Gainput
Cross-platform C++ input library supporting gamepads, keyboard, mouse, touch
Stars: ✭ 636 (-11.3%)
Mutual labels:  keyboard
Arduinomenu
Arduino generic menu/interactivity system
Stars: ✭ 520 (-27.48%)
Mutual labels:  keyboard
Input Overlay
Show keyboard, gamepad and mouse input on stream
Stars: ✭ 684 (-4.6%)
Mutual labels:  keyboard
Readline Sync
Synchronous Readline for interactively running to have a conversation with the user via a console(TTY).
Stars: ✭ 601 (-16.18%)
Mutual labels:  keyboard
Play Button Itunes Patch
Play Button iTunes Patch
Stars: ✭ 661 (-7.81%)
Mutual labels:  keyboard
Vehicle Keyboard Android
停车王车牌键盘-Android
Stars: ✭ 541 (-24.55%)
Mutual labels:  keyboard
Hotkey
Simple global shortcuts in macOS
Stars: ✭ 574 (-19.94%)
Mutual labels:  keyboard
Capslock Plus
An efficiency tool that provides various functions by enhancing the Caps Lock key into a modifier key.
Stars: ✭ 650 (-9.34%)
Mutual labels:  keyboard
Fabgl
Display Controller (VGA, SSD1306, ST7789, ILI9341), PS/2 Mouse and Keyboard Controller, Graphics Library, Sound Engine, Game Engine and ANSI/VT Terminal for the ESP32
Stars: ✭ 534 (-25.52%)
Mutual labels:  keyboard
Selectpage
A simple style and powerful selector, including ajax remote data, autocomplete, pagination, tags, i18n and keyboard navigation features
Stars: ✭ 679 (-5.3%)
Mutual labels:  keyboard
Hotkeys
➷ A robust Javascript library for capturing keyboard input. It has no dependencies.
Stars: ✭ 5,165 (+620.36%)
Mutual labels:  keyboard
Dotfiles
Zsh, Karabiner, VS Code, Sublime, Neovim, Nix
Stars: ✭ 634 (-11.58%)
Mutual labels:  keyboard
Uncap
Map Caps Lock to Escape or any key to any key
Stars: ✭ 705 (-1.67%)
Mutual labels:  keyboard
Agemojikeyboard
Emoji Keyboard for iOS
Stars: ✭ 686 (-4.32%)
Mutual labels:  keyboard
Shortcutmapper
A visual keyboard shortcuts explorer for popular applications.
Stars: ✭ 657 (-8.37%)
Mutual labels:  keyboard

Important: deprecation alert

This library is being deprecated and the repository will not be maintaned, the components have moved to our UI library - please start migrating to RN-UILib.
If you want to try out our excelent (and constantly improving) UI compoenent library, please use:

import {Keyboard} from 'react-native-ui-lib';
const KeyboardAccessoryView = Keyboard.KeyboardAccessoryView;

If you don't want to import the whole library, you can use only the keyboard package:

import {KeyboardAccessoryView} from 'react-native-ui-lib/keyboard';

React Native Keyboard Input

Presents a React component as an input view which replaces the system keyboard. Can be used for creating custom input views such as an image gallery, stickers, etc.

Supports both iOS and Android.

Installation

Install the package from npm:

yarn add react-native-keyboard-input or npm i --save react-native-keyboard-input

Android

Update your dependencies in android/app/build.gradle:

dependencies {
  // Add this dependency:
  compile project(":reactnativekeyboardinput")
}

Update your android/settings.gradle:

include ':reactnativekeyboardinput'
project(':reactnativekeyboardinput').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keyboard-input/lib/android')

In your MainApplication.java, add to the getPackages() list:

import com.wix.reactnativekeyboardinput.KeyboardInputPackage;

@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      // Add this package:
      new KeyboardInputPackage(this) // (this = Android application object)
    );
}

ProGuard

If you have pro-guard enabled and are having trouble with your build, apply this to your project's main proguard-rules.pro:

-dontwarn com.wix.reactnativekeyboardinput.**

iOS

In Xcode, drag both RCTCustomInputController.xcodeproj and KeyboardTrackingView.xcodeproj from your node_modules to the Libraries folder in the Project Navigator, then add libRCTCustomInputController.a and libKeyboardTrackingView.a to your app target "Linked Frameworks and Libraries".

Covering the whold keyboard in predictive mode

To utilize this feature you'll need to add KeyboardTrackingView to your projects scheme build action.

From Xcode menu:

  1. product -> scheme -> manage schemes -> double-click your project
  2. Slect build at the right menu, click the + icon at the bottom of the targets list and select KeyboardTrackingView.
  3. Drag and position KeyboardTrackingView to be first, above your project, and unmark "Parallelize Build" option at the top.

If necessary, you can take a look at how it is set-up in the demo project.

Usage

There are 2 main parts necessary for the implementation:

1. A keyboard component

Create a component that you wish to use as a keyboard input. For example:

class KeyboardView extends Component {
  static propTypes = {
    title: PropTypes.string,
  };
  render() {
    return (
      <ScrollView contentContainerStyle={[styles.keyboardContainer, {backgroundColor: 'purple'}]}>
        <Text style={{color: 'white'}}>HELOOOO!!!</Text>
        <Text style={{color: 'white'}}>{this.props.title}</Text>
      </ScrollView>
    );
  }
}

Now register with the keyboard registry so it can be used later as a keyboard:

import {KeyboardRegistry} from 'react-native-keyboard-input';

KeyboardRegistry.registerKeyboard('MyKeyboardView', () => KeyboardView);

When you need to notify about selecting an item in the keyboard, use:

KeyboardRegistry.onItemSelected(`MyKeyboardView`, params);

2. Using the keyboard component as an input view

While this package provides several component and classes for low-level control over custom keyboard inputs, the easiets way would be to use KeyboardAccessoryView. It's the only thing you'll need to show your Keyboard component as a custom input. For example:

<KeyboardAccessoryView
  renderContent={this.keyboardToolbarContent}
  kbInputRef={this.textInputRef}
  kbComponent={this.state.customKeyboard.component}
  kbInitialProp={this.state.customKeyboard.initialProps}
/>
Prop Type Description
renderContent Function a fucntion for rendering the content of the keyboard toolbar
kbInputRef Object A ref to the input component which triggers the showing of the keyboard
kbComponent String The registered component name
kbInitialProps Object Initial props to pass to the registered keyboard component
onItemSelected Function a callback function for a selection of an item in the keyboard component

This component takes care of making your toolbar (which is rendered via renderContent) "float" above the keyboard (necessary for iOS), and for setting your component as the keyboard input when the kbComponent changes.

Demo

See demoScreen.js for a full working example.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].