@@ -27,9 +27,10 @@ Rectangle {
2727
2828 QtObject {
2929 id: keyState
30− property bool volumeUp: false
31− property bool volumeDown: false
30+ property bool volumeUpPressed: false
31+ property bool volumeDownPressed: false
3232 property bool ignoreKeyPresses: false
33+ property bool ignoreKeyRepeats: false
3334 }
3435
3536 ScreenGrabber {
@@ -43,15 +44,17 @@ Rectangle {
4344 }
4445
4546 function onKeyPressed(key) {
46− if (keyState.ignoreKeyPresses)
47+ if (keyState.ignoreKeyPresses || keyState.ignoreKeyRepeats)
4748 return;
4849
4950 if (key == Qt.Key_VolumeUp)
50− keyState.volumeUp = true;
51+ keyState.volumeUpPressed = true;
5152 else if (key == Qt.Key_VolumeDown)
52− keyState.volumeDown = true;
53+ keyState.volumeDownPressed = true;
5354
54− if (keyState.volumeDown && keyState.volumeUp) {
55+ if (keyState.volumeDownPressed && keyState.volumeUpPressed) {
56+ // Only take one screenshot if both keys are held
57+ keyState.ignoreKeyRepeats = true;
5558 enabled = true;
5659 visible = true;
5760 fadeIn.start();
@@ -59,10 +62,14 @@ Rectangle {
5962 }
6063
6164 function onKeyReleased(key) {
62− if (key == Qt.Key_VolumeUp)
63− keyState.volumeUp = false;
64− else if (key == Qt.Key_VolumeDown)
65− keyState.volumeDown = false;
65+ if (key == Qt.Key_VolumeUp) {
66+ keyState.volumeUpPressed = false;
67+ keyState.ignoreKeyRepeats = false;
68+ }
69+ else if (key == Qt.Key_VolumeDown) {
70+ keyState.volumeDownPressed = false;
71+ keyState.ignoreKeyRepeats = false;
72+ }
6673 }
6774
6875 NumberAnimation on opacity {