I want to capture the backspace event, just do the backspace's action, then add other action, but I am not sure the backspace's original action:Selection. Delete , -1 ?
Sub AddKeyBinding()
With Application
' \\ Do customization in THIS document
.CustomizationContext = ThisDocument
' \\ Add keybinding to this document Shorcut: Backspace
.KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyBackspace), _
KeyCategory:=wdKeyCategoryCommand, Command:="TestKeybinding"
End With
End Sub
' \\ Test sub for keybinding
Sub TestKeybinding()
Selection.Delete , -1 ' I am not sure how to impl the original command
If Selection.Style = "Some...Style" And Selection.Range.ListFormat.ListString = "" Then
Selection.Style = "DefaultStyle"
End If
End Sub
At last I try use autohotkey to solve this question,some code like down:
#IfWinActive,ahk_class OpusApp
;回车键
enter::
send {enter}
checkStyle()
return
backspace::
send {backspace}
checkStyle()
return
checkStyle(){
word:=ComObjActive("word.application")
if(word.Selection.Style.NameLocal="ListItemStyle" and word.Selection.Range.ListFormat.ListString = "")
{
word.Selection.Style := "someStyle"
TrayTip, hint, style chnaged, 3, 17
}
}
It's a little kludgy, but it works:
Public blnCatchBackspace As Boolean
Public Sub CatchBackspace()
If blnCatchBackspace Then
ToggleBackspaceCatch 'Remove the backspace key binding
SendKeys "{BACKSPACE}"
DoEvents
'insert code here
ToggleBackspaceCatch 'Reapply the backspace key binding
End If
End Sub
Public Sub ToggleBackspaceCatch()
Dim lngProtection As Long
With ActiveDocument
'key binding will error if the document is protected
'save the current protection state and unprotect the document
lngProtection = .ProtectionType
If lngProtection <> wdNoProtection Then .Protect wdNoProtection
End With
With Application
If blnCatchBackspace Then 'clear the key binding
blnCatchBackspace = False
FindKey(wdKeyBackspace).Clear
Else 'apply the key binding
blnCatchBackspace = True
.CustomizationContext = ActiveDocument
.KeyBindings.Add KeyCategory:=wdKeyCategoryMacro, _
Command:="CatchBackspace", _
KeyCode:=BuildKeyCode(wdKeyBackspace)
End If
End With
'reapply the original document protection
ActiveDocument.Protect lngProtection
End Sub