@Override
    public void mouseReleased(MouseEvent arg0) {
        switch (arg0.getButton()) {
        case MouseEvent.BUTTON1:
            keymap.put(VK_MOUSE_1, false);
            break;
        case MouseEvent.BUTTON3:
            keymap.put(VK_MOUSE_2, false);
            break;
        case MouseEvent.BUTTON2:
            keymap.put(VK_MOUSE_WHEEL, false);
            break;
        default:
            if (arg0.getButton() != MouseEvent.NOBUTTON) {
                if (keymap.containsKey(arg0.getButton())) {
                    keymap.put(arg0.getButton(), false);
                }
            }
        }

        synchronized(screens) {
            Iterator<Screen> it = screens.iterator();
            while (it.hasNext()) {
                it.next().mouseReleased(arg0);
            }
        }
    }