Aus Word bekannter Shift-F3 Shortcut in OpenOffice

Unter Microsoft Word gibt es wohl den Shortcut „Shift-F3“, der die Gross- und Kleinschreibung von Woertern wie folgt aendert: „woerter Woerter WOERTER“. OpenOffice bringt diese Funktion von Haus aus nicht so mit. Abhilfe schafft dort ein kleines Makro. Dazu: Extras ->  Makros -> Makros verwalten -> [Makro|OpenOffice BASIC]. Dort auf Bearbeiten klicken und folgendes Makro einfuegen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Sub CaseToggle
' CaseToggleMk3 phb 20070828
' Should preserve formatting and bookmarks in Writer
' Should work on text within a table in Writer (but not on whole cells)
' Should work on multiple words
' Does not handle non-contiguous text selection
   dim document,dispatcher,vcursor,oText,alpha,omega,ThisSeln,oBookmark As Object
   dim seln,nextword,nextbit as string
   dim loops,posn,nSelCount as integer
   dim ctogbmpv(0) as new com.sun.star.beans.PropertyValue
   On Error GoTo ExitPoint ' In case selection is not text
   nSelCount = thiscomponent.getCurrentSelection().getCount()
   if nSelCount>1 then
      msgbox ("There seems to be more than one piece of text selected." & _
      chr(10) & "Try making one selection.",0,"Case Conversion")
      goto ExitPoint
   endif
   loops=0
   document=ThisComponent.CurrentController.Frame
   dispatcher=createUnoService("com.sun.star.frame.DispatchHelper")
   vcursor=ThisComponent.currentcontroller.getViewCursor()
   ctogbmpv(0).Name="Bookmark"
   ctogbmpv(0).Value="ctogbm"
   dispatcher.executeDispatch(document, ".uno:DeleteBookmark", "", 0, ctogbmpv())
   dispatcher.executeDispatch(document, ".uno:InsertBookmark", "", 0, ctogbmpv())
GetSeln: ' Much here is taken from Andrew Brown and Andrew Pitonyak
   oText=vcursor.getText()
   alpha=vcursor.getStart()
   omega=vcursor.getEnd()
   ThisSeln=oText.createTextCursorByRange(alpha)
   ThisSeln.goToRange(omega,TRUE)
   seln=ThisSeln.getString()
   if seln<>"" then ' There is a selection - go and change case
      goto ChgCase
   endif ' make a selection to change
   dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())
   dispatcher.executeDispatch(document, ".uno:WordLeftSel", "", 0, Array())
   loops=loops+1
   if loops=2 then goto FinishOff ' in case we failed to find any text to select
   goto GetSeln
ChgCase: 'Check case of seln and alter accordingly
   if seln=ucase(seln) then 'seln is already UPPER - set to lower
      dispatcher.executeDispatch(document, ".uno:ChangeCaseToLower", "", 0, Array())
      goto FinishOff
   endif
   if seln=lcase(seln) then 'seln is already lower - set to Title
      goto SetToTitle
   endif 'seln is probably mixed case - set to UPPER
      dispatcher.executeDispatch(document, ".uno:ChangeCaseToUpper", "", 0, Array())
      goto FinishOff
SetToTitle:
      vcursor.collapsetoStart()
      posn=0
      do while posn<len(seln)
         loops=0
         nextbit="1"
         do while nextbit=lcase(nextbit) and loops<2
            vcursor.goRight(1,TRUE)
            dispatcher.executeDispatch(document, ".uno:ChangeCaseToUpper", "", 0, Array())
            alpha=vcursor.getStart()
            omega=vcursor.getEnd()
            ThisSeln=oText.createTextCursorByRange(alpha)
            ThisSeln.goToRange(omega,TRUE)
            nextbit=ThisSeln.getString()
            loops=loops+1
         loop
            if instr(nextbit," ")>0 or instr(nextbit,chr(10))>0 then
               vcursor.goLeft(1,TRUE) ' To avoid problems due to punctuation marks
            endif
         dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
         alpha=vcursor.getStart()
         omega=vcursor.getEnd()
         ThisSeln=oText.createTextCursorByRange(alpha)
         ThisSeln.goToRange(omega,TRUE)
         nextword=ThisSeln.getString()
         posn=posn + len(nextword)
         vcursor.collapsetoEnd()
      loop
FinishOff: 'set vcursor back to the original position
   oBookmark=ThisComponent.getBookmarks().getByName("ctogbm")
   ThisComponent.getCurrentController().select(oBookmark)
   dispatcher.executeDispatch(document, ".uno:DeleteBookmark", "", 0, ctogbmpv())
ExitPoint:
end Sub

Das Makro habe ich auf dieser Seite gefunden. Ueber Datei -> Speichern abspeichern und dann schliessen. Nun noch das Makro dem gewuenschten Shortcut zuordnen. Dafuer: Extras -> Anpassen, in den Tab Tastatur wechseln, als Tastenkombination Umschalt+F3 auswaehlen, als Funktion unter OpenOffice.org Makros -> user -> Standard -> Module1 das soeben gespeicherte CaseToggle auswaehlen und anschliessend (oben) auf Aendern klicken. Danach steht die gewuenschte Funktionalitaet zur Verfuegung

debian, grub, kernelupdate, falsches root-device

Grad mit Thomas drueber gesprochen und er meinte ich sollte mal nen Blogeintrag schreiben, weil sich das keiner durch liesst. Das Problem ist, dass bei einem Debian System, in diesem Fall Lenny auf einem Dell Poweredge 1950/2950 bei einem Kernelupdate immer automatisch auch die /boot/grub/menu.lst geupdated wird, und da dann immer ein falsches root-device genommen wird, so dass das booten scheitert. Die Ursache bei den Poweredge Systemen ist, dass sie eine Broadcom NetXtreme II Netzwerkkarte verbaut haben mit einer propietaeren Firmware, die man beim installieren via USB-Stick nachliefern muss. Der USB-Stick wird als /dev/sda und die Festplatten dann als /dev/sdb etc. erkannt. Das root-device ist danach in der fstab und menu.lst /dev/sdb. Nach dem manuellen aendern bleibt die fstab auch den rest Ihres lebens so, die menu.lst wiegesagt nicht. Das ganze kann man aendern, indem man in der /boot/grub/menu.lst die Zeile

#kopt=root=/dev/sdb1 ro

sucht und entsprechend abaendert in das _richtige_ root-device. Wichtig ist, dass man das ganze auskommentiert laesst. Wenn man ein bisschen drueber liesst, steht das da auch, aber wie Thomas schon richtig anmerkte: das liest ja eh keiner. Bei mir hat es auch mehrere Stunden gedauert ;-)

Autsch…

Wenn morgens das Telefon klingelt mit Usern die nicht an Ihre Daten kommen…

Wenn man seine Mails abruft und XYZ neue ungelesene Mails hat die kein SPAM sind, von Usern, die nicht an Ihre Daten kommen…

Wenn der Server um den es sich handelt einer ist, den man vom Vorgaenger uebernommen hat, und fuer den man offiziell keine Garantie uebernimmt…

Wenn man sich auf dem entsprechenden Server einloggt und dann mit einem Allgemeinen Ein-Ausgabefehler auf /home empfangen wird

Dann … wird einem erstmal mulmig im Magen… Mit dem Backup auf Baendern koennen die User nix anfangen…

uapsfs:/home/jan# grep sda4 /var/log/syslog.0
Jan 20 01:11:11 uapsfs kernel: xfs_force_shutdown(sda4,0x8) called from line 4258 of file fs/xfs/xfs_bmap.c.  Return address = 0xe0a4bf28
Jan 20 01:11:11 uapsfs kernel: Filesystem "sda4": Corruption of in-memory data detected.  Shutting down filesystem: sda4
uapsfs:/home/jan#

Zum Glueck konnte ein Restart das Problem beheben, aber hoffentlich gibts nun bald mal was neues!!