Android sendevent/geteventの使い方
getevent/sendeventソースコード
この2つのコマンドのソースコードはsystem/core/toolbox/でsendevent.c getevent.c
getevent
geteventを使用して/dev/input/eventXデバイスが報告するイベントを取得します.このコマンドは、次のようにすべてのeventデバイスの基本情報を出力します.
add device 1:/dev/input/event1 name: "mxc_ts"add device 2:/dev/input/event0 name: "mxckpd"
システムにはinputデバイスtouchscreen,keyboardに対応する2つのeventデバイスがあることを示した.
Androidはsendeventを使用してタッチスクリーン、キーボード、その他のイベントをシミュレートすることができます.
sendevent/dev/input/eventX type code value
/dev/input/eventXは1つのeventデバイスに対応し、geteventによって利用可能なeventデバイスを得ることができる.
type,code,valueの定義はkernel/include/linux/input.を参照することができる.h
typeは以下のように定義する
一般的によく使われるのがEV_KEY, EV_REL, EV_ABS, EV_SYN
keyboard、相対座標、絶対座標、同期イベントにそれぞれ対応
EV_SYNは、完全なイベントのセットが完了したことを示し、処理が必要であり、EV_SYNのcode定義イベント配信のタイプ
EV_SYN対応コードは以下の通り
EV_KEYのコードが多いので、ここでは列挙しません.input.を参照してください.h
EV_REL対応コード
EV_ABS対応コード
input keyevent
ボタンをシミュレートしたい場合はsend eventが煩雑で、input keyeventで代用できます
以下はinput keyeventのいくつかの比較的よく使われる使い方です.
input keyevent 3 //Home
input keyevent 4 //Back
input keyevent 19 //Up
input keyevent 20 //Down
input keyevent 21 //Left
input keyevent 22 //Right
input keyevent 23 //Select/Ok
input keyevent 24 //Volume+
input keyevent 25 //Volume-
input keyevent 82//Menuメニュー
seneventでタッチスクリーンイベントをシミュレートする
sendevent/dev/input/event 1 0003 0000 0000015 e//ABS x座標
sendevent/dev/input/event 1:0003 0001 00000 df//ABS y座標
sendevent/dev/input/event 1:0001 014 a 00000001//BTN touchイベント値1
sendevent/dev/input/event 1:0003 0018億円//ABS pressureイベント
sendevent/dev/input/event 1:0001 014 a 00000000//BTN touchイベント値0
sendevent/dev/input/event 1:0000 00000000//syncイベント
この2つのコマンドのソースコードはsystem/core/toolbox/でsendevent.c getevent.c
getevent
geteventを使用して/dev/input/eventXデバイスが報告するイベントを取得します.このコマンドは、次のようにすべてのeventデバイスの基本情報を出力します.
add device 1:/dev/input/event1 name: "mxc_ts"add device 2:/dev/input/event0 name: "mxckpd"
システムにはinputデバイスtouchscreen,keyboardに対応する2つのeventデバイスがあることを示した.
Androidはsendeventを使用してタッチスクリーン、キーボード、その他のイベントをシミュレートすることができます.
sendevent/dev/input/eventX type code value
/dev/input/eventXは1つのeventデバイスに対応し、geteventによって利用可能なeventデバイスを得ることができる.
type,code,valueの定義はkernel/include/linux/input.を参照することができる.h
typeは以下のように定義する
/*
* Event types
*/
#define EV_SYN 0x00
#define EV_KEY 0x01
#define EV_REL 0x02
#define EV_ABS 0x03
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX+1)
一般的によく使われるのがEV_KEY, EV_REL, EV_ABS, EV_SYN
keyboard、相対座標、絶対座標、同期イベントにそれぞれ対応
EV_SYNは、完全なイベントのセットが完了したことを示し、処理が必要であり、EV_SYNのcode定義イベント配信のタイプ
EV_SYN対応コードは以下の通り
/*
* Synchronization events.
*/
#define SYN_REPORT 0
#define SYN_CONFIG 1
#define SYN_MT_REPORT 2
EV_KEYのコードが多いので、ここでは列挙しません.input.を参照してください.h
EV_REL対応コード
/*
* Relative axes
*/
#define REL_X 0x00
#define REL_Y 0x01
#define REL_Z 0x02
#define REL_RX 0x03
#define REL_RY 0x04
#define REL_RZ 0x05
#define REL_HWHEEL 0x06
#define REL_DIAL 0x07
#define REL_WHEEL 0x08
#define REL_MISC 0x09
#define REL_MAX 0x0f
#define REL_CNT (REL_MAX+1)
EV_ABS対応コード
/*
* Absolute axes
*/
#define ABS_X 0x00
#define ABS_Y 0x01
#define ABS_Z 0x02
#define ABS_RX 0x03
#define ABS_RY 0x04
#define ABS_RZ 0x05
#define ABS_THROTTLE 0x06
#define ABS_RUDDER 0x07
#define ABS_WHEEL 0x08
#define ABS_GAS 0x09
#define ABS_BRAKE 0x0a
#define ABS_HAT0X 0x10
#define ABS_HAT0Y 0x11
#define ABS_HAT1X 0x12
#define ABS_HAT1Y 0x13
#define ABS_HAT2X 0x14
#define ABS_HAT2Y 0x15
#define ABS_HAT3X 0x16
#define ABS_HAT3Y 0x17
#define ABS_PRESSURE 0x18
#define ABS_DISTANCE 0x19
#define ABS_TILT_X 0x1a
#define ABS_TILT_Y 0x1b
#define ABS_TOOL_WIDTH 0x1c
#define ABS_VOLUME 0x20
#define ABS_MISC 0x28
#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
#define ABS_MAX 0x3f
#define ABS_CNT (ABS_MAX+1)
input keyevent
ボタンをシミュレートしたい場合はsend eventが煩雑で、input keyeventで代用できます
以下はinput keyeventのいくつかの比較的よく使われる使い方です.
input keyevent 3 //Home
input keyevent 4 //Back
input keyevent 19 //Up
input keyevent 20 //Down
input keyevent 21 //Left
input keyevent 22 //Right
input keyevent 23 //Select/Ok
input keyevent 24 //Volume+
input keyevent 25 //Volume-
input keyevent 82//Menuメニュー
seneventでタッチスクリーンイベントをシミュレートする
sendevent/dev/input/event 1 0003 0000 0000015 e//ABS x座標
sendevent/dev/input/event 1:0003 0001 00000 df//ABS y座標
sendevent/dev/input/event 1:0001 014 a 00000001//BTN touchイベント値1
sendevent/dev/input/event 1:0003 0018億円//ABS pressureイベント
sendevent/dev/input/event 1:0001 014 a 00000000//BTN touchイベント値0
sendevent/dev/input/event 1:0000 00000000//syncイベント