From ba43f2efc068ff7d45d01ff8c0b218fc67975e19 Mon Sep 17 00:00:00 2001 From: benfry Date: Wed, 11 May 2005 08:34:16 +0000 Subject: [PATCH] fix some of the quirks with cmd/ctrl keys on macosx and windows --- app/syntax/DefaultInputHandler.java | 29 +++++++++------ app/syntax/PdeTextAreaDefaults.java | 56 +++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 10 deletions(-) diff --git a/app/syntax/DefaultInputHandler.java b/app/syntax/DefaultInputHandler.java index aa4933448..7ae11121b 100644 --- a/app/syntax/DefaultInputHandler.java +++ b/app/syntax/DefaultInputHandler.java @@ -148,11 +148,26 @@ public class DefaultInputHandler extends InputHandler */ public void keyPressed(KeyEvent evt) { - int keyCode = evt.getKeyCode(); - int modifiers = evt.getModifiers(); + int keyCode = evt.getKeyCode(); + int modifiers = evt.getModifiers(); - // don't get command-s or other menu key equivs on mac - if ((modifiers & KeyEvent.META_MASK) != 0) return; + // moved this earlier so it doesn't get random meta clicks + if (keyCode == KeyEvent.VK_CONTROL || + keyCode == KeyEvent.VK_SHIFT || + keyCode == KeyEvent.VK_ALT || + keyCode == KeyEvent.VK_META) { + return; + } + + // don't get command-s or other menu key equivs on mac + // unless it's something that's specifically bound (cmd-left or right) + //if ((modifiers & KeyEvent.META_MASK) != 0) return; + if ((modifiers & KeyEvent.META_MASK) != 0) { + KeyStroke keyStroke = KeyStroke.getKeyStroke(keyCode, modifiers); + if (currentBindings.get(keyStroke) == null) { + return; + } + } /* char keyChar = evt.getKeyChar(); @@ -162,12 +177,6 @@ public class DefaultInputHandler extends InputHandler KeyEvent.VK_META); */ - if(keyCode == KeyEvent.VK_CONTROL || - keyCode == KeyEvent.VK_SHIFT || - keyCode == KeyEvent.VK_ALT || - keyCode == KeyEvent.VK_META) - return; - if((modifiers & ~KeyEvent.SHIFT_MASK) != 0 || evt.isActionKey() || keyCode == KeyEvent.VK_BACK_SPACE diff --git a/app/syntax/PdeTextAreaDefaults.java b/app/syntax/PdeTextAreaDefaults.java index 285500c53..e9caca886 100644 --- a/app/syntax/PdeTextAreaDefaults.java +++ b/app/syntax/PdeTextAreaDefaults.java @@ -33,6 +33,62 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { inputHandler = new DefaultInputHandler(); inputHandler.addDefaultKeyBindings(); + + // use option on mac for things that are ctrl on windows/linux + String mod = Base.isMacOS() ? "A" : "C"; + + inputHandler.addKeyBinding("S+BACK_SPACE", InputHandler.BACKSPACE); + inputHandler.addKeyBinding("S+DELETE", InputHandler.DELETE); + + inputHandler.addKeyBinding("BACK_SPACE", InputHandler.BACKSPACE); + inputHandler.addKeyBinding("C+BACK_SPACE", InputHandler.BACKSPACE_WORD); + inputHandler.addKeyBinding("DELETE", InputHandler.DELETE); + inputHandler.addKeyBinding("C+DELETE", InputHandler.DELETE_WORD); + + inputHandler.addKeyBinding("ENTER", InputHandler.INSERT_BREAK); + inputHandler.addKeyBinding("TAB", InputHandler.INSERT_TAB); + + inputHandler.addKeyBinding("INSERT", InputHandler.OVERWRITE); + inputHandler.addKeyBinding("C+\\", InputHandler.TOGGLE_RECT); + + // beginning and ending of the current line + inputHandler.addKeyBinding("HOME", InputHandler.HOME); + inputHandler.addKeyBinding("END", InputHandler.END); + + if (Base.isMacOS()) { + inputHandler.addKeyBinding("M+LEFT", InputHandler.HOME); + inputHandler.addKeyBinding("M+RIGHT", InputHandler.END); + } + + inputHandler.addKeyBinding("S+HOME", InputHandler.SELECT_HOME); + inputHandler.addKeyBinding("S+END", InputHandler.SELECT_END); + inputHandler.addKeyBinding(mod + "+HOME", InputHandler.DOCUMENT_HOME); + inputHandler.addKeyBinding(mod + "+END", InputHandler.DOCUMENT_END); + inputHandler.addKeyBinding(mod + "S+HOME", InputHandler.SELECT_DOC_HOME); + inputHandler.addKeyBinding(mod + "S+END", InputHandler.SELECT_DOC_END); + + inputHandler.addKeyBinding("PAGE_UP", InputHandler.PREV_PAGE); + inputHandler.addKeyBinding("PAGE_DOWN", InputHandler.NEXT_PAGE); + inputHandler.addKeyBinding("S+PAGE_UP", InputHandler.SELECT_PREV_PAGE); + inputHandler.addKeyBinding("S+PAGE_DOWN", InputHandler.SELECT_NEXT_PAGE); + + inputHandler.addKeyBinding("LEFT", InputHandler.PREV_CHAR); + inputHandler.addKeyBinding("S+LEFT", InputHandler.SELECT_PREV_CHAR); + inputHandler.addKeyBinding(mod + "+LEFT", InputHandler.PREV_WORD); + inputHandler.addKeyBinding(mod + "S+LEFT", InputHandler.SELECT_PREV_WORD); + inputHandler.addKeyBinding("RIGHT", InputHandler.NEXT_CHAR); + inputHandler.addKeyBinding("S+RIGHT", InputHandler.SELECT_NEXT_CHAR); + inputHandler.addKeyBinding(mod + "+RIGHT", InputHandler.NEXT_WORD); + inputHandler.addKeyBinding(mod + "S+RIGHT", InputHandler.SELECT_NEXT_WORD); + inputHandler.addKeyBinding("UP", InputHandler.PREV_LINE); + inputHandler.addKeyBinding(mod + "+UP", InputHandler.PREV_LINE); // p5 + inputHandler.addKeyBinding("S+UP", InputHandler.SELECT_PREV_LINE); + inputHandler.addKeyBinding("DOWN", InputHandler.NEXT_LINE); + inputHandler.addKeyBinding(mod + "+DOWN", InputHandler.NEXT_LINE); // p5 + inputHandler.addKeyBinding("S+DOWN", InputHandler.SELECT_NEXT_LINE); + + inputHandler.addKeyBinding(mod + "+ENTER", InputHandler.REPEAT); + document = new SyntaxDocument(); editable = true; electricScroll = 3;