Hallo zusammen,
ich würde gern Tastenkombinationen für ein bestimmtes (Writer-)Dokument separat einstellen. Bei >Eintellungen>Anpassen>Tastatur kann ich diese allerdings nur für OpenOffice bzw. für Writer ändern.
Gibt es eine Möglichkeit das ganze per Makro durchzuführen? Dann könnte ich das Änderungsmakro dem Ereignis "Dokument aktivieren" und das Rücksetzen dem Ereignis "Dokument deaktivieren" zuweisen. Allerdings habe ich nichts über einen entsprechenden StarBasic-Befehl gefunden und der Makrorekordr hilft auch nicht weiter. Kann mir jemand von Euch weiterhelfen?
Danke,
Steffan.
Tastenkombination per Makro zuweisen
Moderator: Moderatoren
[gelöst] Tastenkombination per Makro zuweisen
Hallo zusammen,
ich hab das Problem inzwischen durch einen Codebeispiel (http://codesnippets.services.openoffice ... tcuts.snip), dass ich angepasst habe, lösen können und poste hier die Lösung für alle die es interessiert:
In meinem Beispiel wird bei Aktivierung des Dokuments der Taste 'A' das Makro 'showAddressinfo1' zugewiesen. Bei Deaktivierung des Dokument wird diese Zuweisung gelöscht
Steffan
ich hab das Problem inzwischen durch einen Codebeispiel (http://codesnippets.services.openoffice ... tcuts.snip), dass ich angepasst habe, lösen können und poste hier die Lösung für alle die es interessiert:
In meinem Beispiel wird bei Aktivierung des Dokuments der Taste 'A' das Makro 'showAddressinfo1' zugewiesen. Bei Deaktivierung des Dokument wird diese Zuweisung gelöscht
Code: Alles auswählen
Sub onActivate
sMacro = "vnd.sun.star.script:Standard.info.showAddressinfo1?language=Basic&location=document"
call setShortCut(512, 0, sMacro)
End Sub
Sub onDeactivate
call setShortCut(512, 0, "")
End Sub
Sub setShortCut(lKey as long, iMod as integer, sFunction as String)
'Ändert Shortcuts für Tasten bzw. Tastenkombinationen
'alte Shortcut werden ohne Rückfrage überschrieben!
' lKey ... die Taste (Keykonstanten unter http://api.openoffice.org/docs/common/ref/com/sun/star/awt/Key.html)
' iMod ... Zusatztaste (Shift = 1, Ctrl = 2, Alt =4)
' sFunction ... Makro, das ausgeführt werden soll
' Short-Cut-Manager holen
oModuleCfgMgrSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager("com.sun.star.text.TextDocument")
oWriterShortCutMgr = oModuleCfgMgr.getShortCutManager
' Werte definieren
Dim aKeyEvent As New com.sun.star.awt.KeyEvent
aKeyEvent.KeyCode = lKey
aKeyEvent.Modifiers = iMod
' vorhandene Belegung auslesen
On Error Resume Next
sLocCommand = oWriterShortCutMgr.getCommandByKeyEvent(aKeyEvent)
On Error GoTo 0
' neue Belegung zuweisen
Select Case sLocCommand
Case = "" 'Shortcut ist nicht belegt
oWriterShortCutMgr.setKeyEvent( aKeyEvent, sFunctiom )
oWriterShortCutMgr.store
Case = sFunction 'Shortcut ist schon mit richtiger Funktion belegt
Case Else 'Shortcut mit anderer Funktion belegt
oWriterShortCutMgr.removeKeyEvent( aKeyEvent)
if sFunction <>"" then oWriterShortCutMgr.setKeyEvent( aKeyEvent, sFunction )
oWriterShortCutMgr.store
End Select
End Sub
Hallo zusammen,
der Vollständigkeit halber will ich noch folgendes hinzufügen:
Das Ereignis 'Dokument deaktivieren' wird nicht beim Schließen des Dokuments ausgelöst und natürlich nicht beim Absturz des Dokuments. Damit man nicht in diesen Fällen seinen geänderten Tastenkombinationen 'sitzenbleibt' muss man noch folgendes tun:
den Ereignisen 'Dokument wird geschlossen' und 'Programmstart' das Makro 'OnDeactivate' zuweisen
Steffan.
der Vollständigkeit halber will ich noch folgendes hinzufügen:
Das Ereignis 'Dokument deaktivieren' wird nicht beim Schließen des Dokuments ausgelöst und natürlich nicht beim Absturz des Dokuments. Damit man nicht in diesen Fällen seinen geänderten Tastenkombinationen 'sitzenbleibt' muss man noch folgendes tun:
den Ereignisen 'Dokument wird geschlossen' und 'Programmstart' das Makro 'OnDeactivate' zuweisen
Steffan.