 
     cm: () =>
         return @source_editor.syncdoc.focused_codemirror()
+
+    init_keybindings: () =>
+        keybindings =  # inspired by http://www.door2windows.com/list-of-all-keyboard-shortcuts-for-sticky-notes-in-windows-7/
+            bold      : 'Cmd-B Ctrl-B'
+            italic    : 'Cmd-I Ctrl-I'
+            underline : 'Cmd-U Ctrl-U'
+            comment   : 'Shift-Ctrl-3'
+            strikethrough : 'Shift-Cmd-X Shift-Ctrl-X'
+            justifycenter : "Cmd-E Ctrl-E"
+            justifyright  : "Cmd-R Ctrl-R"
+            subscript     : "Cmd-= Ctrl-="
+            superscript   : "Shift-Cmd-= Shift-Ctrl-="
+            insertunorderedlist : "Shift-Cmd-L Shift-Ctrl-L"
+            insertimage : "Shift-Cmd-I Shift-Ctrl-I"
+
+        extra_keys = @cm().getOption("extraKeys") # current keybindings
+        for cmd, keys of keybindings
+            for k in keys.split(' ')
+                ( (cmd) => extra_keys[k] = (cm) => @command(cm, cmd) )(cmd)
+
+        for cm in @source_editor.codemirrors()
+            cm.setOption("extraKeys", extra_keys)
 
     init_draggable_split: () =>
         @_split_pos = @local_storage("split_pos")


        @init_preview_select()

        # this is entirely because of the chat
        # currently being part of @source_editor, and
        # only calling the show for that; once chat

                args = "#{args}"
                if args.indexOf(',') != -1
                    args = args.split(',')
            that.command(that.cm(), cmd, args)
            return false

        if true #  @ext != 'html'
