Tuşa basıldığında bool False'dan True olarak değiştirilsin mi?
Klavyede bir tuşa bastığımda bir boole değişkeninin değişmesine izin vermek istiyorum.
Mesela yazıyorum
activateE := Block[{}, edown = True;];
SetOptions[EvaluationNotebook[], NotebookEventActions -> {{"KeyDown", "e"} :> activateE}]
ve ardından tuş basışlarını izlemeye çalışın
edown = False;
Dynamic[edown]
Anahtar e
artık not defterine herhangi bir metin girişi üretmeyi durdururken , ne kadar sıklıkla basarsam da ne yazık ki Dynamic
her zaman görünmeye devam ediyor . Neyi yanlış yapıyorum veya bunu doğru şekilde nasıl yapacağım?False
e
DÜZENLE:
Alternatif olarak, CurrentValue
işlevi deniyorum . Örneğin,
Dynamic[CurrentValue["ModifierKeys"]]
örneğin Ctrl
tuşa basıldığında düzgün gösterir . Ama denersem
Dynamic[CurrentValue["EventKey"]]
çıktı None
hangi tuşa bastığım önemli değil. CurrentValue
Harf gibi normal bir tuşa basmayı kaydedecek bir seçenek var mı e
?
DÜZENLEME2:
İşe yarayan şey
EventHandler[InputField[], {"KeyDown", "e"} :> activateE]
ancak sadece InputField'ı odak noktasına getirmek için ilk tıklarsam.
Yanıtlar
Bu seçenekle NotebookEventActions
birlikte kullanılması, PassEventsUp -> True
Sürüm 11.3'te (Windows 10 - 64 bit) istenen davranışı verir:
ClearAll[activateE]
activateE:= Block[{}, edown = True;];
SetOptions[EvaluationNotebook[],
NotebookEventActions -> {{"KeyDown", "e"} :> activateE, PassEventsUp -> True}]

Bir varyasyon: Geçiş arasında False
ve True
anahtar zaman e
basılır:

$Version
"Microsoft Windows (64-bit) için 11.3.0 (7 Mart 2018)"