LIRCd を使用して、適切な構成ファイルを使用して、リモコンで押したキーをキャプチャしています。
ドキュメントによると、ブロッキング関数が戻るのを待つ必要がありlirc_nextcode()
、次のようにデコードするのに適した行が得られます。
0000000080bf4bb4 00 CURSOR_DOWN myremote
最初の数字はキーの値、次はこのキーが押された回数(ここでは 0 です。これは押して離しただけなので)、次にキー名とリモコンの名前です。
とにかく、私がやりたいのは、リモコンのキーアップを検出することです。
一定時間ボタンを押すと、次のようになります(〜200ミリ秒ごとに改行):
0000000080bf4bb4 00 CURSOR_DOWN myremote
0000000080bf4bb4 01 CURSOR_DOWN myremote
0000000080bf4bb4 02 CURSOR_DOWN myremote
0000000080bf4bb4 03 CURSOR_DOWN myremote
0000000080bf4bb4 04 CURSOR_DOWN myremote
0000000080bf4bb4 05 CURSOR_DOWN myremote
0000000080bf4bb4 06 CURSOR_DOWN myremote
0000000080bf4bb4 07 CURSOR_DOWN myremote
0000000080bf4bb4 08 CURSOR_DOWN myremote
0000000080bf4bb4 09 CURSOR_DOWN myremote
0000000080bf4bb4 0a CURSOR_DOWN myremote
// I let go for 1s and press it again:
0000000080bf4bb4 00 CURSOR_DOWN myremote
そのため、キーを長押しするたびに 2 番目の数字が増加しますが、キーを離してもう一度押すと、0 にリセットされます。
私が欲しいのは、繰り返しが止まる瞬間を検出できることです。
これで、キーアップ検出を実装する方法がわかります。lirc_nextcode()
一定時間経過してもクラックしない場合は、キーが離されたと見なすことができます。
私があなたに尋ねているのは、それを行う別の(より適切な)方法はありますか?
おそらくLIRCdを設定することによって?
または、タイマーを使用する以外に方法がない場合、最適な実装は何ですか? 確かに、lirc_getcode()
はをブロックしているので、タイマーがクラックしたときはいつでも戻る必要があります!
編集:ところで、いいえlirc
またはlircd
タグ、あればいいですね!