Top > OOoBasic > Generic > InputInterception

インプットインターセプション Edit

ユーザーのキーボード入力およびマウス入力を捕捉するサービス。

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

キーハンドラ Edit

キーリスナーには 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" キーを押すときキー操作が無効化されます。そのほかのキーは普通に動作します。

マウスハンドラ Edit

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