키를 누를 때 부울을 False에서 True로 전환 하시겠습니까?

Aug 17 2020

키보드의 키를 누를 때 부울 변수가 전환되도록하고 싶습니다.

예를 들어,

activateE := Block[{}, edown = True;];
SetOptions[EvaluationNotebook[], NotebookEventActions -> {{"KeyDown", "e"} :> activateE}]

다음을 통해 키 누름을 모니터링하십시오.

edown = False;
Dynamic[edown]

e이제 키 가 노트북에 대한 텍스트 입력 생성을 중지하는 동안 안타깝게도 키를 누르는 빈도에 관계없이 Dynamic항상이 계속 표시 False됩니다 e. 내가 뭘 잘못하고 있는지, 아니면 제대로하는 방법?

편집하다:

또는 CurrentValue기능을 시도하고 있습니다. 예를 들면

Dynamic[CurrentValue["ModifierKeys"]]

예를 들어 Ctrl키를 눌렀을 때 제대로 표시됩니다 . 하지만 내가 시도하면

Dynamic[CurrentValue["EventKey"]]

None어떤 키를 눌러도 출력이 됩니다. CurrentValue문자와 같은 일반 키 누름을 등록 하는 옵션이 e있습니까?

EDIT2 :

작동하는 것처럼 보이는 것은

EventHandler[InputField[], {"KeyDown", "e"} :> activateE]

하지만 InputField를 처음 클릭하여 초점을 맞추는 경우에만 가능합니다.

답변

4 kglr Aug 17 2020 at 00:22

NotebookEventActions옵션과 함께 사용하면 PassEventsUp -> True버전 11.3 (Windows 10-64 비트)에서 원하는 동작이 제공됩니다.

ClearAll[activateE]
activateE:=  Block[{}, edown = True;];
SetOptions[EvaluationNotebook[], 
 NotebookEventActions -> {{"KeyDown", "e"} :> activateE, PassEventsUp -> True}]

변형 : 키 를 누를 때 False와 전환 :Truee

$Version

"Microsoft Windows (64 비트) 용 11.3.0 (2018 년 3 월 7 일)"