KeyboardShortcutsToDo

From Inkscape Wiki
Revision as of 11:37, 23 June 2004 by Matiphas (talk | contribs)
Jump to navigation Jump to search

Also See: KeyboardShortcuts

  • Make keyboard shortcuts configurable: see KeyboardProfiles
  • alt+(, alt+) - inset/outset path by 1 pixel
  • h, v in node tool: flip (each of the) selected node(s) horizontally or vertically
  • node tool: ctrl+alt+arrows: move along (left/right) or perpendicularly to the node's handles; left/right ctrl and alt select which handle
  • alt+ctrl+<>, []: scale/rotate selected nodes as a whole
  • Text tool: Tab/Shift-tab - cycle through text objects, Ins - insert new text object at cursor. Eventually, add selections support (arrows with shift) allowing to set text properties for fragments (using tspan).
  • right-click menu (alongside the current shift-f10): ctrl-m, alt-m, ctrl-space?
  • Node editor: When no nodes are selected, make Ins insert a new one-node path at mouse pointer.
  • In all tools, make esc cancel not only rubberband or drag but also drawing of any sort, with the objects returned to original place or size or status (done in selector and partly in node edit)
    • cancel rubberband in zoom tool
  • more ctrl+restriction: skew
  • copy/cut/paste shortcuts may not be global, but apply to each tool's specific kinds of objects. Thus, Node editor may implement copying and pasting of nodes, not objects. Paste style also makes sense to apply to individual nodes ("style" in this case being the node type and relative coordinates of control handles). In rectangle, "style" may include rounded corners' radius, etc.
  • Make it so that the selected nodes in node editor are not deselected by temporary switch to selector and back (using space)
  • Can we detect a single press of ctrl or alt? Illustrator uses single ctrl press to re-select what was just deselected. If we can't use ctrl, alt-esc should work for this.
    • This applies only to selection tools.
  • Make arrows resize the current shape in drawing tools (rectangle, ellipse, etc.). Make Ins insert a new standard-sized object at the pointer location, to be then tweaked and/or moved. Make Esc cancel currently created shape, and Del delete the last shape.
  • Shift-drawing: Use shift if you want the new line to be appended to the old one, just as you shift-drag to extend a selection. This append/new toggle should be added to the tool options for the drawing tools.
  • For complete keyboard control: When nothing is selected, arrow keys (with or without shift) should move the actual mouse pointer, with a way emulate left mouse button click. I found out this is possible (at least in Linux) as described here: [1] so we probably don't need to fiddle with this.

Dialogs

Add here your suggestions for shortcuts to enable in dialogs.

  • XML Editor:
    • Del delete element or attribute
    • Ins new element or attribute (depending on which pane is in focus)
    • ctr z, ctrl r, etc undo and redo must work in the editor, undoing the last XML editor action
    • shift-arrows, shift-click, ctrl-click selecting more than one element or attribute
    • ctrl-c, ctrl-x, ctrl-v copying and pasting must work on selected lines in the lists, so you can rearrange the tree by cutting and pasting stuff
  • Esc must cancel changes in the current widget and revert it to the value that it had before being entered, and defocus it. Another Esc will then defocus the dialog window.
  • Alignment, suggested by Yemu: c - center horizontally, e - center vertically, l - left (to left), r - right (to right), t - top (to top), b - bottom (to bottom) - these are key bindings from Corel which i like the most, and you must admit they are quite intuitive. I also think that by default these key shortcuts should align to "last selected". if one wants to align to center of a page - must click.

Unverified

These were given for Sodipodi but don't seem to work. Investigation is needed, and probably something completely different and more versatile will be created instead.

Transformation dialog shortcuts
  • Ctrl 1 move
  • Ctrl 2 scale
  • Ctrl 3 rotate
  • Ctrl 4 skew
  • Ctrl e toggle expand
  • Ctrl m make a copy
  • Ctrl r reset to default
  • Ctrl a apply
  • Ctrl c close
Context menu (right mouse button)
  • Shift include insensitive item (make desktop sticky)

Hmm, looks like what Lauris meant by this is that shift + right button drag pans canvas...


Implemented or no longer relevant

  • Do we want to make all ctrl-shift shorcuts for calling dialogs toggles? Advantages of toggles:
    • you can switch off a dialog without first moving focus to it
    • Illustrator behaves the same way (toggles palettes on or off)
    • I think it's far better a thing to have the dialog disappear the first time you hit this modifier, because your hand is already in position to show it again if it does disappear. --TIngham
Hmm, but why not have it jump on top by one keypress, not two? If I want to hide it I have other means for that. --bb
Disadvantages:
    • I see a dialog and I want to move focus to it to use some of its widgets. Now I press e.g. ctrl-shift-f and focus is moved to the dialog. With toggles, I will have to press ctrl-shift-f twice to do the same (once to switch it off and then on again). The same situation is when one dialog obscures another: now I press the shorcut of the bottom one and it jumps to top at once, with toggles I will have to press it twice.
    • When I have to press shortcut twice to bring dialog to top, I will lose the focused widget in that dialog. Now it's convenient: I press ctrl-shift-f, navigate to the stroke width field, type a value and press Enter. Focus moves to the canvas where I can edit the object further. Then I want to change stroke width again; I press ctrl-shift-f and I'm at once in the stroke width field (no need to navigate to it again). With toggles, this convenience will be lost.
    • When temporary hiding of all dialogs by one key is implemented (see below), why would we want to have a one-key hider shortcut for each dialog? If you need to remove something which obscures your drawing, just hide all dialogs. Hiding is an action that is different in implications and is called for in different situations than focusing, so having one key for both hiding and focusing dialogs appears counterintuitive.

  • Upon testing, we seem to agree that all dialogs except modal ones should give focus to canvas upon Esc. This is being implemented. We need new keys for:
    • opening/raising the toolbox: shift-`? ctrl-shift-` for consistency with other ctrl-shift-dialogs? we cannot use "t" since it's associated with text (both tool and dialog)
    • closing the current dialog: ctrl-F4? ctrl-w? anything else?
  • text: Make sure global shortcuts (those that do not conflict with typing, such as function keys) are not shadowed. Implement Home/End. Esc - deselect text object. (DONE)
  • toggling visibility of all dialogs: Illustrator uses Tab, but we need something else - maybe just "`"? or F12? (DONE, F12)
implementation: verb bound to the ` key; a global flag in inkscape.c; two signals, dialogs_hide and dialogs_unhide, and two functions to emit them; one function to toggle called by the verb; emit _unhide before each new dialog creation (in sp_verb_action_dialog_perform), just in case; each dialog to connect these signals to shared callbacks in dialog-events.c; use gdk_widget_{show|hide} --bb
  • Ctrl-Tab: switch among open documents (DONE)
  • Previous zoom/view: ctrl-r? backspace? did ` for now, but thinking about backspace/shift-backspace...
  • Ctrl with mouse must be consistently used for restricting motion. Now it only restricts dragging in selector (to hor/vert only) and handles in bezier tool (by 15 degrees). We need to create a global user-settable preference of the rotate step (default 15 or 30 degrees) and enable ctrl-drag to snap to the nearest rotate step in all tools where it makes sense: selector/rotate, node editor/drag control points, etc. The infrastructure for such snapping is there in the code, we only need to enable that for more tools and situations.
  • Invent keys for editing control points of a node. This is something actually new - to my knowledge no other vector editors allows to do this via keyboard. We need a lot of keys:
(two rotation directions times two rotation speeds plus two radial movements) times two handles for each node equals 12 keys or key combinations in total!
I'm thinking about how to fit this into the keyboard in a more or less elegant way that can be remembered. Suggestions welcome.
OK, nobody volunteered, so I invented this. Looks like it's possible to figure out whether left or right alt was pressed, so:
    • just [, ]: rotate both control points around the node by global rotate step (default 15 degrees)
    • leftalt-[, rightalt-[: rotate one of the controls slowly (by 1 angular pixel)
    • leftctrl-[, rightctrl-]: rotate one of the controls by global rotate step
    • leftalt-rightalt-[, leftalt-rightalt-]: rotate both controls slowly
    • just <, >: move both control points closer or further from the node, by options.defaultoffsetwidth
    • leftalt-<, rightalt->: move both control points by 1 pixel
    • leftctrl-<, rightctrl->: move both control points by options.defaultoffsetwidth
    • leftalt-rightalt-[, leftalt-rightalt-]: move both controls by 1 pixel
  • Similarly, in selector:
    • [, ] - rotate selection by global rotate step
    • alt-[, alt-] - rotate slowly (by angular pixels)
    • ctrl-[, ctrl-] - rotate by 90 deg
    • <, > - scale (around center) by options.defaultoffsetwidth
    • alt+<, alt+> - scale by 1 pixel
    • ctrl-[, ctrl-] - scale 1/2 or 2 times the original
    • ctrl+(, ctrl+) - inset/outset path by options.defaultoffsetwidth
  • F11 - toggle full screen
  • ctrl-rightclick: zoom in (shift zooms out)
  • Text spacing keys:
    • Alt+<, Alt+> expand/contract current line (not the entire text object - I think it's more useful this way) by 1 pixel by adjusting letter spacing
    • Shift+Alt+<, Shift+Alt+> same, by 10 pixels
    • Alt+[, Alt+] expand/contract text object vertically by 1 pixel by adjusting line spacing
    • Shift+Alt+[, Shift+Alt+] same, by 10 pixels (NO, ctrl+alt+> is better)
    • Alt+left, Alt+right kern closer/farther the pair of characters before and after the cursor by 1 pixel
    • Shift+Alt+left, Shift+Alt+right same, by 10 pixels
    • Alt+up, Alt+down raise/lower the character after cursor by 1 pixel
    • Shift+Alt+up, Shift+Alt+down same, by 10 pixels

Actual distance depends on zoom level. Zoom in for finer movement.

  • remove "less than" limitation for ctrl-scaling by non-corner handle