Tweet

ボタンドライバ

最近の Linux では LED 同様,GPIO に接続されたボタンも抽象化されていて,共通のインターフェースで利用することができるようになっています. で,ボタンがどのように見えるかというと,なんとキーボードの1つのキーとしての扱いとなっています.

HDL-GXR では

HDL-GXR に先日移植したパッチでは

電源ボタン
KEY_POWER
コピーボタン
KEY_COPY
リセットボタン
KEY_RESTART

に割り当てています.

キーボードイベントの捕捉

ユーザランドプログラムからはキーボードのキーの press / release は,/dev/input/event0, event1, ... (デバイスの認識順序によって割り当ては異なる)から取得することができます.

試しにダンプしてみましょう.

# hexdump -C /dev/input/event0                                         
00000000  15 44 44 49 58 85 01 00  01 00 74 00 01 00 00 00  |.DDIX.....t.....|← 電源ボタン press
00000010  15 44 44 49 64 85 01 00  00 00 00 00 00 00 00 00  |.DDId...........|← SYN
00000020  15 44 44 49 c5 e2 07 00  01 00 74 00 00 00 00 00  |.DDI......t.....|← 電源ボタン release
00000030  15 44 44 49 cd e2 07 00  00 00 00 00 00 00 00 00  |.DDI............|← SYN
00000040  17 44 44 49 14 c4 02 00  01 00 85 00 01 00 00 00  |.DDI............|← コピーボタン press
00000050  17 44 44 49 20 c4 02 00  00 00 00 00 00 00 00 00  |.DDI ...........|← SYN
00000060  17 44 44 49 77 cb 04 00  01 00 85 00 00 00 00 00  |.DDIw...........|← コピーボタン release
00000070  17 44 44 49 7e cb 04 00  00 00 00 00 00 00 00 00  |.DDI~...........|← SYN 
00000080  1f 44 44 49 2d ae 05 00  01 00 98 01 01 00 00 00  |.DDI-...........|← RESET ボタン press
00000090  1f 44 44 49 39 ae 05 00  00 00 00 00 00 00 00 00  |.DDI9...........|← SYN
000000a0  1f 44 44 49 a2 78 09 00  01 00 98 01 00 00 00 00  |.DDI.x..........|← RESET ボタン release
000000b0  1f 44 44 49 a9 78 09 00  00 00 00 00 00 00 00 00  |.DDI.x..........|← SYN
^C                                                                              
landisk:~# 

各イベントは linux/include/input.h 内の

struct input_event {
        struct timeval time;
        __u16 type;
        __u16 code;
        __s32 value;
};

の形で通知されています. というわけで,これを解釈する perl スクリプトを作ってみました.

こんな形でダンプされます.

# ./event_dump /dev/input/event0                              
sec: 1229211366.618994                                                          
type: EV_KEY                                                                    
code: KEY_POWER                                                                 
value: 1                                                                        
                                                                               
sec: 1229211366.619006                                                          
type: EV_SYN                                                                    
code: 0                                                                         
value: 0                                                                        
                                                                               
sec: 1229211367.986704                                                          
type: EV_KEY                                                                    
code: KEY_POWER                                                                 
value: 0                                                                        
                                                                               
sec: 1229211367.986712                                                          
type: EV_SYN                                                                    
code: 0                                                                         
value: 0                                                                        
                                                                               
sec: 1229211370.623228                                                          
type: EV_KEY                                                                    
code: KEY_COPY                                                                  
value: 1                                                                        
                                                                               
sec: 1229211370.623240                                                          
type: EV_SYN                                                                    
code: 0                                                                         
value: 0                                                                        
                                                                               
sec: 1229211371.721910                                                          
type: EV_KEY                                                                    
code: KEY_COPY                                                                  
value: 0                                                                        
                                                                               
sec: 1229211371.721918                                                          
type: EV_SYN                                                                    
code: 0                                                                         
value: 0                                                                        
                                                                               
sec: 1229211373.120396                                                          
type: EV_KEY                                                                    
code: KEY_RESTART                                                               
value: 1                                                                        
                                                                               
sec: 1229211373.120407                                                          
type: EV_SYN                                                                    
code: 0                                                                         
value: 0                                                                        
                                                                               
sec: 1229211374.642596                                                          
type: EV_KEY                                                                    
code: KEY_RESTART                                                               
value: 0                                                                        
                                                                               
sec: 1229211374.642604                                                          
type: EV_SYN                                                                    
code: 0                                                                         
value: 0                                                                        
                                                                               
^C                                                                            
#

添付ファイル: fileevent_dump 1420件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-14 (日) 06:43:39 (4060d)