From a2b40b5b46ec09dbb0f4a6fd36751488b2b74201 Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Sun, 7 May 2017 12:53:03 -0400 Subject: [PATCH] ketmar key name patch --- simpledisplay.d | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/simpledisplay.d b/simpledisplay.d index f79590c..15f8f44 100644 --- a/simpledisplay.d +++ b/simpledisplay.d @@ -3664,13 +3664,18 @@ struct KeyEvent { } } + void putMod (ModifierState mod, Key key, string text) nothrow @trusted { + if ((this.modifierState&mod) != 0 && (this.pressed || this.key != key)) put(text); + } + if (!this.key && !(this.modifierState&(ModifierState.ctrl|ModifierState.alt|ModifierState.shift|ModifierState.windows))) return null; // put modifiers - if (this.modifierState&ModifierState.ctrl) put("Ctrl+"); - if (this.modifierState&ModifierState.alt) put("Alt+"); - if (this.modifierState&ModifierState.windows) put("Win+"); - if (this.modifierState&ModifierState.shift) put("Shift+"); + // releasing modifier keys can produce bizarre things like "Ctrl+Ctrl", so hack around it + putMod(ModifierState.ctrl, Key.Ctrl, "Ctrl+"); + putMod(ModifierState.alt, Key.Alt, "Alt+"); + putMod(ModifierState.windows, Key.Shift, "Windows+"); + putMod(ModifierState.shift, Key.Shift, "Shift+"); if (this.key) { foreach (string kn; __traits(allMembers, Key)) {