Code: Alles auswählen
rem ----------------------------------------------------------------------
sub Einfuegen_Taste
' es muss ein Zeichenstil "Taste" existieren
' verwendeter Keycapfont: http://linuxlibertine.org/index.php?id=86
dim document as object
dim dispatcher as object
dim command, insert as String
Dim selCount,mySelection as object
Dim keys As Variant
Dim symbols as string
rem Tastennamen
keys = Array("strg","alt","altgr","ctrl","shift","tab","return","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","home","del","ins","end","pos1","entf","einf","leer","esc","ende","lmb","mmb","rmb","mb","backspace")
rem Tastensymbole
symbols =""
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem -------------- Wort Links vom Cursor ---------------------------------
dispatcher.executeDispatch(document, ".uno:WordLeftSel", "", 0, Array())
mySelection = ThisComponent.getCurrentSelection()
command = UCase(mySelection.getByIndex(0).getString())
rem --------------- Auf Style Taste schalten ------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Template"
args2(0).Value = "Taste"
args2(1).Name = "Family"
args2(1).Value = 1
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args2())
rem ---------------------- Tastennamen gegen Symbole tauschen --------------
for i=0 to UBound(keys)-1
cpos = Instr(command,keys(i))
if cpos <> 0 then
lpart = Left(command,cpos-1)+Mid(symbols,i+1,1)
rpart = Right(command,len(command)-cpos-len(keys(i))+1)
command = lpart+rpart
endif
next
rem ------------- string einfügen -----------------------------------------
dim args4(3) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Text"
args4(0).Value = command ' result+UCase(command)
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
rem ------------- auf Standard-Style umschalten ---------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Template"
args5(0).Value = "Standard"
args5(1).Name = "Family"
args5(1).Value = 1
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args5())
rem -------------- Leerzeichen -----------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Text"
args6(0).Value = " "
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())
end sub
Vielleicht kann es ja jemand gebrauchen der auch viele Tastendrücke im Dokument auszeichnen muss. Man schreibt jetzt z.B. strgalta und ruft das Makro auf (bei mir strg-T) und das Makro macht dann mit den Keycap Font (siehe Anmerkungen im Makro) die Magie und ersetzt strg durch das einzelne Zeichen aus dem Keycapfont.