# [key]()
Key管理設備按鍵事件
### 方法:
- [addEventListener](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.addEventListener): 添加按鍵事件監聽器
- [removeEventListener](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.removeEventListener): 移除按鍵事件監聽器
### 對象:
- [KeyType](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyType): 按鍵類型
- [KeyEvent](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyEvent): 按鍵事件
### 回調方法:
- [KeyEventCallback](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyEventCallback): 按鍵事件的回調函數
# [addEventListener]()
添加按鍵事件監聽器
~~~
plus.key.addEventListener( keyevent, listener, capture );
~~~
### 說明:
添加按鍵事件監聽器,當指定的按鍵事件發生時,回調函數將觸發。 應用中存在多個Webview窗口時,按照窗口的顯示棧順序從后往前查找,查找到添加按鍵事件監聽器的窗口后停止(中斷前面Webview窗口對按鍵事件的監聽),并向窗口觸發執行按鍵回調事件。 在同一Webview窗口中可多次調用此方法對同一事件添加多個監聽器,觸發時按照添加的順序先后調用。
### 參數:
- event: *( [KeyType](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyType) ) 必選 *要監聽的按鍵事件類型
- listener: *( [KeyEventCallback](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyEventCallback) ) 必選 *監聽按鍵事件發生時調用的回調函數
- capture: *( Boolean ) 可選 *捕獲按鍵事件流順序,暫作為保留參數
### 返回值:
void : 無
### 示例:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Key Example</title>
<script type="text/javascript">
// 監聽“返回”按鈕事件
function addEventTest() {
plus.key.addEventListener("backbutton",function(){
alert( "BackButton Key pressed!" );
});
}
</script>
</head>
<body>
<button onclick="addEventTest()">監聽“返回”按鍵</button>
</body>
</html>
~~~
# [removeEventListener]()
移除按鍵事件監聽器
~~~
plus.key.removeEventListener( event, listener );
~~~
### 說明:
從窗口移除指定的事件監聽器。若沒有查找到對應的事件監聽器,則無任何作用。
### 參數:
- event: *( [KeyType](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyType) ) 必選 *要移除的事件類型
- listener: *( [EventCallback](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.EventCallback) ) 必選 *要移除回調函數對象
### 返回值:
void : 無
### 示例:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Key Example</title>
<script type="text/javascript">
function onback(){
alert( "BackButton Key pressed!" );
}
// 監聽“返回”按鈕事件
function addEventTest() {
plus.key.addEventListener("backbutton",onback);
}
// 取消監聽“返回”按鈕事件
function removeEventTest(){
plus.key.removeEventListener("backbutton",onback);
}
</script>
</head>
<body>
<button onclick="addEventTest()">監聽“返回”按鍵</button>
<button onclick="removeEventTest()">取消監聽“返回”按鍵</button>
</body>
</html>
~~~
# [KeyType]()
按鍵類型
### 常量:
- "backbutton": *(DOMString 類型)*設備“返回”按鈕按鍵事件
如果需要改變默認“返回”按鈕的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"backbutton"事件。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯為退出應用。
- "keydown": *(DOMString 類型)*鍵按下事件
如果需要改變默認鍵按下的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"keydown"事件。 可通過回調函數中KeyEvent對象的keyCode來獲取按下的鍵值。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯由系統決定。
- "keyup": *(DOMString 類型)*鍵松開事件
如果需要改變默認鍵松開的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"keyup"事件。 可通過回調函數中KeyEvent對象的keyCode來獲取松開的鍵值。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯由系統決定。
- "longpressed": *(DOMString 類型)*長按鍵事件
如果需要改變默認長按鍵的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"longpressed"事件。 長按鍵時會多次觸發回調函數,通過回調函數中KeyEvent對象的keyCode來獲取長按的鍵值。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯由系統決定。
- "menubutton": *(DOMString 類型)*設備“菜單”按鈕按鍵事件
如果需要改變默認“菜單”按鈕的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"menubutton"事件。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯無操作。
- "searchbutton": *(DOMString 類型)*設備“搜索”按鈕按鍵事件
如果需要改變默認“搜索”按鈕的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"searchbutton"事件。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯為打開系統搜索應用。
- "volumeupbutton": *(DOMString 類型)*設備“音量+”按鈕按鍵事件
如果需要改變默認“音量+”按鈕的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"volumeupbutton"事件。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯為增加系統音量。
- "volumedownbutton": *(DOMString 類型)*設備“音量-”按鈕按鍵事件
如果需要改變默認“音量-”按鈕的處理邏輯,則可通過plus.key.addEventListener來注冊監聽"volumedownbutton"事件。
### 平臺支持
- Android - 2.2+ (支持): 默認處理邏輯為減少系統音量。
# [KeyEvent]()
按鍵事件
### 屬性:
- [keyCode](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyEvent.keyCode): 觸發按鍵事件的鍵值
- [keyType](http://www.dcloud.io/docs/api/zh_cn/key.shtml#plus.key.KeyEvent.keyType): 按鍵事件類型
# [keyCode]()
觸發按鍵事件的鍵值
### 說明:
Number 類型
鍵值由各系統平臺定義,一些特殊按鍵在不同的設備上可能存在差異。
### 示例:
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Key Example</title>
<script type="text/javascript">
// H5 plus事件處理
function plusReady(){
// 監聽鍵按下事件
plus.key.addEventListener("keydown",function(e){
console.log("keydown: "+e.keyCode);
},false);
// 監聽鍵松開事件
plus.key.addEventListener("keyup",function(e){
console.log("keyup: "+e.keyCode);
},false);
// 監聽長按鍵事件
plus.key.addEventListener("longpressed",function(e){
console.log("longpressed: "+e.keyCode);
},false);
}
if(window.plus){
plusReady();
}else{
document.addEventListener("plusready",plusReady,false);
}
</script>
</head>
<body>
監聽鍵事件<br/>
</body>
</html>
~~~
# [keyType]()
按鍵事件類型
### 說明:
KeyType 類型
用于表明觸發此按鍵事件的類型,值為KeyType中定義的值。
# [KeyEventCallback]()
按鍵事件的回調函數
~~~
void onKeyEvent( KeyEvent event ){
// Event handled code.
var key=event.keyCode; // 用戶按鍵的鍵值
}
~~~
### 參數:
- event: *( KeyEvent ) 必選 *監聽用戶按鍵操作返回的數據
可通過event的keyCode屬性(String類型)獲取用戶按鍵的類型,參考KeyType類型。
### 返回值:
void : 無
- API參考
- Accelerometer
- Audio
- Camera
- Contacts
- Device
- Downloader
- Events
- Gallery
- Geolocation
- IO
- Key
- Messaging
- NativeUI
- Navigator
- Orientation
- Proximity
- SplashScreen
- Storage
- UI
- Uploader
- InterfaceOrientation
- Runtime
- WebView
- XMLHttpRequest
- Zip
- Plugins
- Barcode
- Maps
- Payment
- Push
- Share
- Speech
- Statistic
- Native.js
- Android
- iOS