von calli » Do, 30.09.2010 15:42
Hier mal mein Ergebnis:
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.
Gruß,
Carsten
Hier mal mein Ergebnis:
[code]
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
[/code]
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.
Gruß,
Carsten