Alle Tastaturshortcuts per Makro auflisten
Moderator: Moderatoren
Alle Tastaturshortcuts per Makro auflisten
Hallo,
kennt jemand einen Weg um alle Tastaturshortcuts (für alle Module) per Makro aufzulisten?
Zum Einen zumindest alle aktuell vergebenen Shortcuts, besser jedoch zusätzlich alle Shortcuts die vergeben werden könnten.
Im Grunde frage ich ob diese Funktion die für MS Word verfügbar ist, auch in OO/LO nachzubilden ist, also nach einem Makro das dasselbe tut wie das Makro namens "BefehleAuflisten" in MS Word:
Auszug aus MS Word Hilfe:
Drucken einer Liste der Tastenkombinationen
!. Zeigen Sie im Menü Extras auf Makro, und klicken Sie dann auf Makros.
2. Klicken Sie im Feld Makros in auf Word-Befehle.
3. Klicken Sie im Feld Makroname auf BefehleAuflisten.
4. Klicken Sie auf Ausführen.
5. Klicken Sie im Dialogfeld Befehle auflisten auf Aktuelle Menü- und Tastatureinstellungen.
6. Klicken Sie dann auf OK.
7. Klicken Sie im Menü Datei auf Drucken.
Gruß
Stephan
kennt jemand einen Weg um alle Tastaturshortcuts (für alle Module) per Makro aufzulisten?
Zum Einen zumindest alle aktuell vergebenen Shortcuts, besser jedoch zusätzlich alle Shortcuts die vergeben werden könnten.
Im Grunde frage ich ob diese Funktion die für MS Word verfügbar ist, auch in OO/LO nachzubilden ist, also nach einem Makro das dasselbe tut wie das Makro namens "BefehleAuflisten" in MS Word:
Auszug aus MS Word Hilfe:
Drucken einer Liste der Tastenkombinationen
!. Zeigen Sie im Menü Extras auf Makro, und klicken Sie dann auf Makros.
2. Klicken Sie im Feld Makros in auf Word-Befehle.
3. Klicken Sie im Feld Makroname auf BefehleAuflisten.
4. Klicken Sie auf Ausführen.
5. Klicken Sie im Dialogfeld Befehle auflisten auf Aktuelle Menü- und Tastatureinstellungen.
6. Klicken Sie dann auf OK.
7. Klicken Sie im Menü Datei auf Drucken.
Gruß
Stephan
Re: Alle Tastaturshortcuts per Makro auflisten
Hallo Stephan,
vielleicht kommst Du hier weiter?
Gruß R
vielleicht kommst Du hier weiter?
Code: Alles auswählen
function Accelerators
Dim oConfigProvider as Object
Dim aNodePath(0) as new com.sun.star.beans.PropertyValue
oConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
aNodePath(0).Name = "nodepath"
aNodePath(0).Value = "/org.openoffice.Office.Accelerators"
oRegistryKeyContent = oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", aNodePath())
xray oRegistryKeyContent
End Function
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Alle Tastaturshortcuts per Makro auflisten
Die 'Richtung' stimmt wahrscheinlich, aber ich sehe noch nicht wie ich ans endgültige Ziel komme.vielleicht kommst Du hier weiter?
Bei Xray kann ich nur die Tastenkombinationen anzeigen, ohne das eine Zuordnung zu einem bestimmten Befehl deutlich wird, das sieht so aus:
Leider stimmen auch die angezeigten Tastenkombinationen nicht mit der Anzeige unter Extras-Anpassen überein, d.h. XRay zeigt mehr als dort und die die in XRay 'zuviel' sind entsprechen offensichtlich nicht denjenigen die unter Extras-Anpassen ausgegraut sind.
Gruß
Stephan
Re: Alle Tastaturshortcuts per Makro auflisten
Hallo Stephan,
denke da muss man in die Tiefe gehen, Schleife über die Elementnames, der Befehl steht dann im .COMMAND.
Ein Beispiel:
oder analog
ergibt: .uno:NewDoc
Also STRG+SHIFT+N -> neues Dokument, für die globalen Tastenkürzel
Gruß R
denke da muss man in die Tiefe gehen, Schleife über die Elementnames, der Befehl steht dann im .COMMAND.
Ein Beispiel:
Code: Alles auswählen
xray oRegistryKeyContent.PrimaryKeys.Global.N_SHIFT_MOD1.Command
Code: Alles auswählen
xray oRegistryKeyContent.PrimaryKeys.getbyName("Global").getbyName("N_SHIFT_MOD1").Command
Also STRG+SHIFT+N -> neues Dokument, für die globalen Tastenkürzel
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Alle Tastaturshortcuts per Makro auflisten
... also etwa so:
Code: Alles auswählen
function Accelerators
Dim oConfigProvider as Object
Dim aNodePath(0) as new com.sun.star.beans.PropertyValue
oConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
aNodePath(0).Name = "nodepath"
aNodePath(0).Value = "/org.openoffice.Office.Accelerators"
oRegistryKeyContent = oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", aNodePath())
aGlobalElementnames = oRegistryKeyContent.PrimaryKeys.Global.ElementNames
sGlobalAccelerators = ""
for i = 0 to uBound (aGlobalElementnames)
oAccelerator = oRegistryKeyContent.PrimaryKeys.Global.getbyname(aGlobalElementnames(i)
if oAccelerator.Command >"" then
sGlobalAccelerators = sGlobalAccelerators + aGlobalElementnames(i) + ": "+oAccelerator.Command+CHR(10)
endif
next i
msgbox sGlobalAccelerators
End Function
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Alle Tastaturshortcuts per Makro auflisten
Hallo
Nachdem in Anlehnung an F3Ks Code LO reproduzierbar abstürzt bei jedem Versuch ein leeres .Command zu ermitteln - hab ich die Strategie gewechselt.
Nachdem in Anlehnung an F3Ks Code LO reproduzierbar abstürzt bei jedem Versuch ein leeres .Command zu ermitteln - hab ich die Strategie gewechselt.
Code: Alles auswählen
import re
shortnodes_rex = re.compile(r'(?:<oor:component-data xmlns:install'
'="http://openoffice.org/2004/installation" oor:'
'name=)?"Accelerators" oor:package=(.*?)</oor:component-data')
node_rex = re.compile(
r'(?:<node oor:name="(Global|\w+)">)?'
'<node oor:name="(\w+)"'
'(?: oor:op="replace">|>)?'
'<prop oor:name="Command"'
'(?:><value xml:lang="(en-US|de)">'
'\.uno:(\w+)</value></prop>|/>)?'
)
def get_shortcuts(config_file_path):
with open( config_file_path ) as configfile:
config = configfile.read()
shorts = shortnodes_rex.findall( config )
out = []
for shortblock in shorts:
out.extend(node_rex.findall(shortblock))
return out
def dump_shortcuts(*_):
"""
liest aus Configdateien Shortcut-zuordnungen
und schreibt in aktuelles Calcdokument
to do: weitere Config-dateien mit Shortcut-zuordnungen finden!!
"""
configpath = '/usr/lib/libreoffice/share/registry/main.xcd' #LO -Ubuntu-Debian
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.CurrentSelection.Spreadsheet
data = tuple(get_shortcuts( configpath ))
outrange = sheet.getCellRangeByPosition(0, 1, len(data[0])-1, len(data))
outrange.setDataArray(data)
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Alle Tastaturshortcuts per Makro auflisten
@Rik
Dein Code aus dem Post von 19:18 läuft fehlerfrei, ich muss jetzt aber ersteinmal Zeit finden dennauf alle Bereiche der Shortcuts zu erweitern und ein bisschen 'Formatierungsgedöns' drumherum zu schreiben um die ERgebnissse in in Calc- oder Writer-Dokument auszugeben.
Ich stelle das hier in den Thread sobald ich es fertig habe bzw. melde mich wenn ich dabei auf Probleme stosse.
@Karolus
ich habe die Zeile mit Configpath angepasst:
bekomme aber folgende Fehlermeldung(en), hierbei gebe ich Beide an, wissend das eine wohl falsch ist, nur mir ist auf den ersten Blick nicht klar ob ich nun get_shortcuts oder dump_shortcuts starten soll:
Wenn Du andere Infos brauchst sage Bescheid, richtig mitdiskutieren kann ich aber bei dem Python Code nicht.
Sofern Du Lust hättest das Ganze zu komplettieren (siehe Dein ToDo) und in eine endanwedertaugliche Form zu bringen (z.B. müssen Dinge wie X_MOD1 'übersetzt' werden in STRG X) ist mir das gerne willkommen, denn ich muss nachgelagert nichts weiter mit den Shortcuts tun als diese übersichtlich auszugeben, muss also nicht unbedingt Deinen Python-Code komplett verstehen.
Grund meiner Anfrage ist das ich mit einer Anwenderin in privaten Kontakt stehe die auf der OO-Mailingliste zunächst nach einigen Problemen fragte:
http://mail-archives.apache.org/mod_mbo ... lpha.de%3E
mich jetzt aber nach einer Übersicht bzw. der Möglichkeit die Shortcuts per Makro auszugeben (wie sie es aus MS Office gewöhntist) gefragt hat.
Gruß
Stephan
ja, danke. Ich war diesbezüglich nicht vollends hilflos, aber bin unter Zeitdruck und war gestern so müde das ich nur erst einmal 'Zwischenbericht' geben wollte.denke da muss man in die Tiefe gehen, Schleife über die Elementnames, der Befehl steht dann im .COMMAND
Dein Code aus dem Post von 19:18 läuft fehlerfrei, ich muss jetzt aber ersteinmal Zeit finden dennauf alle Bereiche der Shortcuts zu erweitern und ein bisschen 'Formatierungsgedöns' drumherum zu schreiben um die ERgebnissse in in Calc- oder Writer-Dokument auszugeben.
Ich stelle das hier in den Thread sobald ich es fertig habe bzw. melde mich wenn ich dabei auf Probleme stosse.
@Karolus
ich habe die Zeile mit Configpath angepasst:
Code: Alles auswählen
configpath = 'D:\AOO_411_standalone\share\registry\main.xcd
Wenn Du andere Infos brauchst sage Bescheid, richtig mitdiskutieren kann ich aber bei dem Python Code nicht.
Sofern Du Lust hättest das Ganze zu komplettieren (siehe Dein ToDo) und in eine endanwedertaugliche Form zu bringen (z.B. müssen Dinge wie X_MOD1 'übersetzt' werden in STRG X) ist mir das gerne willkommen, denn ich muss nachgelagert nichts weiter mit den Shortcuts tun als diese übersichtlich auszugeben, muss also nicht unbedingt Deinen Python-Code komplett verstehen.
Grund meiner Anfrage ist das ich mit einer Anwenderin in privaten Kontakt stehe die auf der OO-Mailingliste zunächst nach einigen Problemen fragte:
http://mail-archives.apache.org/mod_mbo ... lpha.de%3E
mich jetzt aber nach einer Übersicht bzw. der Möglichkeit die Shortcuts per Makro auszugeben (wie sie es aus MS Office gewöhntist) gefragt hat.
Gruß
Stephan
Re: Alle Tastaturshortcuts per Makro auflisten
Hallo Stephan
Es ist die übliche \Backslash-plage mit Windows, nimm die Funktion `dump_shortcuts` und probiere die Pfadangabe einmal mit normalen / statt \ ,oder alternativ auch mit einem vorangestellten r:
oder
( Schau dir die zweite Fehlermeldung genau an, -- das ...\r... in der Pfadangabe, wird als Eingabe eines Backspace-zeichens interpretiert. )
Hier nochmal eine Liste der mutmasslichen Pfade mit Shortcut-angaben
Es ist die übliche \Backslash-plage mit Windows, nimm die Funktion `dump_shortcuts` und probiere die Pfadangabe einmal mit normalen / statt \ ,oder alternativ auch mit einem vorangestellten r:
Code: Alles auswählen
configpath = r'D:\AOO_411_standalone\share\registry\main.xcd
Code: Alles auswählen
configpath = 'D:/AOO_411_standalone/share/registry/main.xcd
Hier nochmal eine Liste der mutmasslichen Pfade mit Shortcut-angaben
Code: Alles auswählen
$( AOO-| Lo-programmverzeichniss )/share/registry/main.xcd # basisinstallation
$( AOO-| Lo-programmverzeichniss) /share/registry/res/registry_de.xcd # Lokalisierung[en]?
$( Aoo|LO-benutzereconfiguration) /registrymodifications.xcu # mit den selbst eingestellten Shortcuts
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Alle Tastaturshortcuts per Makro auflisten
Hallo Karolus,
(direkt als URL zu schreiben schien mir hingegen unsicher, weil Du es auch nicht getan hast und ich nur zu 99% sicher wäre bezüglich der richtigen Nozation (file://...))
das funktioniert auf Anhieb.
mir bleibt nur zu sagen:
falls Du magst vervollständige Deine Datei und stelle sie z.B. im Bereich "Wissensarchiv" bereit, das wird sicherlich Etlichen eine Hilfe sein.
Ich selber kann mich nur für Dein Beispiel bedanken und es als Anregung im Hinterkopf behalten bin aber wissensmäßig unfähig es selbst entsprechend zu vervollständigen.
Gruß
Stephan
Ein wenig wohl auch mein Unwissen, denn ich weiß nicht was ich unter Python für den StarBasic-Ausdruck "ConvertToURL" verwenden kann.Es ist die übliche \Backslash-plage mit Windows
(direkt als URL zu schreiben schien mir hingegen unsicher, weil Du es auch nicht getan hast und ich nur zu 99% sicher wäre bezüglich der richtigen Nozation (file://...))
Code: Alles auswählen
configpath = r'D:\AOO_411_standalone\share\registry\main.xcd'
mir bleibt nur zu sagen:
falls Du magst vervollständige Deine Datei und stelle sie z.B. im Bereich "Wissensarchiv" bereit, das wird sicherlich Etlichen eine Hilfe sein.
Ich selber kann mich nur für Dein Beispiel bedanken und es als Anregung im Hinterkopf behalten bin aber wissensmäßig unfähig es selbst entsprechend zu vervollständigen.
Gruß
Stephan
Re: Alle Tastaturshortcuts per Makro auflisten
Hallo
Nur für die Übergabe von|an Api-methoden (z.B. an "com.sun.star.ucb.SimpleFileAccess" wird dann eine Konvertierung gebraucht.
Die entsprechenden Funktionen dazu gibts in ...uno.py
Karolus
python selbst benötigt für normale Datei|Verzeichniss-operationen keine URL-notation sondern System-pfad-angaben.Ein wenig wohl auch mein Unwissen, denn ich weiß nicht was ich unter Python für den StarBasic-Ausdruck "ConvertToURL" verwenden kann.
Nur für die Übergabe von|an Api-methoden (z.B. an "com.sun.star.ucb.SimpleFileAccess" wird dann eine Konvertierung gebraucht.
Die entsprechenden Funktionen dazu gibts in ...uno.py
Karolus[color=#FF0000]help(uno)[/color] hat geschrieben:...
fileUrlToSystemPath(url)
returns a system path (determined by the system, the python interpreter is running on)
....
systemPathToFileUrl(systemPath)
returns a file-url for the given system path
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)