Top > OOoBasic > Generic > InputInterception

*インプットインターセプション [#sab8e02a]
ユーザーのキーボード入力およびマウス入力を捕捉するサービス。

#contents

com.sun.star.awt.XUserInputInterception インターフェースのメソッドを利用してハンドラを設定します。

**キーハンドラ [#l0062677]
キーリスナーには com.sun.star.awt.XKeyHandler を利用します。キーハンドラの設定は addKeyHandler メソッドで、削除は removeKeyHandler メソッドを利用します。

 Sub inputinterception_1
   oDoc = ThisComponent
   oController = oDoc.getCurrentController()
   
   oKeyHandler = CreateUnoListener( _
      "KeyHandler_","com.sun.star.awt.XKeyHandler")
   
   oController.addKeyHandler(oKeyHandler)
 End Sub
 
 
 Function KeyHandler_keyPressed( oEv )
   If oEv.KeyChar = "a" Then
     KeyHandler_keyPressed = True
   Else
     KeyHandler_keyPressed = False
   End If
 End Function
 Function KeyHandler_keyReleased( oEv )
   KeyHandler_keyReleased = False
 End Function
 Sub KeyHandler_disposing( oEv )
 End Sub

keyPressed メソッドおよび keyReleased の返り値が True のときには他のハンドラが呼ばれません。False を戻すときには他のハンドラが呼ばれます。

上記の例では "a" キーを押すときキー操作が無効化されます。そのほかのキーは普通に動作します。
**マウスハンドラ [#af845421]

 Sub inputinterception_2
   oDoc = ThisComponent
   oController = oDoc.getCurrentController()
   
   oMouseHandler = CreateUnoListener( _
     "MouseClickHandler_","com.sun.star.awt.XMouseClickHandler")
   
   oController.addMouseClickHandler(oMouseHandler)
 End Sub
 
 
 Function MouseClickHandler_mousePressed( oEv ) As Boolean
   If oEv.Buttons = com.sun.star.awt.MouseButton.RIGHT Then
     MouseHandler_mousePressed = False
   Else
     MouseHandler_mousePressed = True
   End If
 End Function
 Function MouseClickHandler_mouseReleased( oEv ) As Boolean
   MouseClickHandler_mouseReleased = False
 End Function
 Sub MouseClickHandler_disposing( oEv )
 End Sub

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes