diff --git a/README.md b/README.md
index 80ee695..dbfc64c 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ Run `yarn add react-native-keyevent`
1. In `android/setting.gradle`
- ```
+ ```gradle
...
include ':react-native-keyevent'
project(':react-native-keyevent').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keyevent/android')
@@ -44,7 +44,7 @@ Run `yarn add react-native-keyevent`
2. In `android/app/build.gradle`
- ```
+ ```gradle
...
dependencies {
...
@@ -54,7 +54,7 @@ Run `yarn add react-native-keyevent`
3. Register module (in MainApplication.java)
- ```
+ ``` java
import com.github.kevinejohn.keyevent.KeyEventPackage; // <--- import
public class MainApplication extends Application implements ReactApplication {
@@ -81,9 +81,88 @@ Follow the instrutions listed here: [Manually Linking iOS](https://facebook.gith
#### Android
-Implement onConfigurationChanged method in MainActivity.java
+
+RN version >= 0.73.0
+
+Implement these methods in MainActivity.kt
+
+```kotlin
+ import android.view.KeyEvent; // <--- import
+ import com.github.kevinejohn.keyevent.KeyEventModule; // <--- import
+
+
+ class MainActivity : ReactActivity() {
+ ......
+ // Add this method if you want to react to keyDown
+ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
+
+ // A. Prevent multiple events on long button press
+ // In the default behavior multiple events are fired if a button
+ // is pressed for a while. You can prevent this behavior if you
+ // forward only the first event:
+ // if (event.getRepeatCount() == 0) {
+ // KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
+ // }
+ //
+ // B. If multiple Events shall be fired when the button is pressed
+ // for a while use this code:
+ // KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
+ //
+ // Using B.
+ KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
+
+ // There are 2 ways this can be done:
+ // 1. Override the default keyboard event behavior
+ // super.onKeyDown(keyCode, event);
+ // return true;
+
+ // 2. Keep default keyboard event behavior
+ // return super.onKeyDown(keyCode, event);
+
+ // Using method #1 without blocking multiple
+ super.onKeyDown(keyCode, event)
+ return true
+
+ // Using method #2
+ return super.onKeyDown(keyCode, event);
+ }
+
+ // Add this method if you want to react to keyUp
+ override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
+ KeyEventModule.getInstance().onKeyUpEvent(keyCode, event);
+
+ // There are 2 ways this can be done:
+ // 1. Override the default keyboard event behavior
+ // super.onKeyUp(keyCode, event)
+ // return true
+ // 2. Keep default keyboard event behavior
+ // return super.onKeyUp(keyCode, event)
+
+ // Using method #1
+ super.onKeyUp(keyCode, event)
+ return true
+
+ // Using method #2
+ return super.onKeyUp(keyCode, event)
+ }
+
+ override fun onKeyMultiple(keyCode: Int, repeatCount: Int, event: KeyEvent): Boolean {
+ KeyEventModule.getInstance().onKeyMultipleEvent(keyCode, repeatCount, event);
+ return super.onKeyMultiple(keyCode, repeatCount, event);
+ }
+ ......
+
+ }
```
+
+
+
+RN version <= 0.72.20
+
+Implement onConfigurationChanged method in MainActivity.java
+
+```java
import android.view.KeyEvent; // <--- import
import com.github.kevinejohn.keyevent.KeyEventModule; // <--- import
@@ -147,6 +226,7 @@ Implement onConfigurationChanged method in MainActivity.java
}
```
+
#### iOS
diff --git a/index.d.ts b/index.d.ts
index d886b8a..75f72ec 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -2,9 +2,11 @@ declare module 'react-native-keyevent';
export type KeyEventProps = { action: number; keyCode: number; pressedKey: string; characters: string };
-export function onKeyDownListener(keyEvent: any): void;
-export function onKeyUpListener(keyEvent: any): void;
-export function onKeyMultipleListener(keyEvent: any): void;
+type eventListenerCallback = (keyEvent: KeyEventProps) => void;
+
+export function onKeyDownListener(callback: eventListenerCallback): void;
+export function onKeyUpListener(callback: eventListenerCallback): void;
+export function onKeyMultipleListener(callback: eventListenerCallback): void;
export function removeKeyDownListener(): void;
export function removeKeyUpListener(): void;