Alex Rivera | Logout

Java Keybinding Plus Key

Asked 2013-03-24T22:55:59.267
11

I was trying to create shortcuts for zooming in and out in an image editing application I'm creating and I noticed something strange. To bind the combination of ctrl + +, I had to use the = key and a control and shift mask:

getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK + KeyEvent.SHIFT_DOWN_MASK),"ZoomIn");

Neither of the combinations where I tried to directly bind to VK_PLUS worked:

getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK + KeyEvent.SHIFT_DOWN_MASK),"ZoomIn");

getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK),"ZoomIn");

It works right now with the very first line of code, but I was wondering why neither of the bottom two work and if this could (theoretically) be a problem if a keyboard did not have the + key as the shifted = key.

Edit
Report

1 Answer

5

As I understand it, the VK_ADD is actually used for the numpad +.

In order to use the + that appears along the top of the keybaord (next to the line of numbers), you would need to phsycially type shift+=

In this case, you need to use the KeyEvent.VK_EQUALS with a KeyEvent.SHIFT_DOWN_MASK modifier.

But you also want the KeyEvent.CTRL_DOWN_MASK modifier as well.

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK), "Test1");

The problem you're having is that the modifiers are a bitwise-ored combination of any modifiers

answered 2013-03-24T23:14:25.703

Your Answer