영국 키보드에서는 해시 기호(#, 다른 곳에서는 파운드라고도 함)에 자체 키가 있습니다(위에는 물결표가 있음).
아마도 미국 키보드의 표준 키가 아니기 때문에문서에 있는 명명된 키 목록사용자 정의 키 입력에 사용됩니다.
사용자 정의 키 바인딩을 생성할 때 이를 참조할 수 있는 방법이 있나요?
답변1
귀하의 질문에 대한 짧은 대답은 이것이 가능하다는 것입니다. 그러나 필요한 바인딩은 키보드 레이아웃 및/또는 예상하지 못한 약간의 논리적인 "hiccough"로 인해 예상한 것과 다를 수 있습니다. Sublime은 키를 매핑합니다.
그 이유를 설명하고 해당(또는 다른) 키에 대해 바인딩이 어떻게 생겼는지 결정하는 방법은 좀 더 복잡합니다.
일반적으로 Sublime은 어떤 키를 누르고 있는지 확인하기 위해 스캔 코드를 사용합니다. 스캔코드는 실제로 생성되는 문자가 아닌 키보드의 키 위치를 기반으로 합니다.
결과적으로 Sublime은 사용자가 누르는 키가 미국 키보드가 아니더라도 마치 미국 키보드에 있는 것처럼 인식하게 됩니다. 귀하의 질문에서 언급한 목록의 키 목록은 표준 미국 키보드 레이아웃을 가정합니다.
키 바인딩 문제를 진단하거나 Sublime이 입력을 어떻게 읽는지 확인하려면 View > Show Console
메뉴에서 Sublime 콘솔을 열고 다음 명령을 입력하여 입력 로깅을 켤 수 있습니다.
sublime.log_input(True)
입력 로깅이 켜져 있는 동안 Sublime은 표시되는 모든 입력 이벤트에 관해 콘솔에 메시지를 보고합니다. 입력 로깅은 Sublime을 사용하여 동일한 명령을 실행하거나 다시 시작할 때까지 적용됩니다 False
.
일반적으로 다음 중 하나가 표시됩니다.
chr evt: #
, 이는 당신이 a를 눌렀음을 알려줍니다.성격key evt: backspace
, 이는 당신이 a를 눌렀음을 알려줍니다.열쇠key evt
그 뒤에 가 옵니다chr evt
. 이는 누른 키가데드 키문자에 발음 구별 부호를 추가하려고 합니다.- 키가 실제로 죽었거나 Sublime 외부(예: OS)가 Sublime이 볼 기회를 갖기 전에 키보드 이벤트를 먹었다면 전혀 아무것도 아닙니다.
이벤트 를 보고하는 항목에 키를 바인딩하려면 chr
매핑에 다음 문자만 포함해야 합니다.
{ "keys": ["#"], "command": "echo"},
이벤트 로 보고되는 키를 바인딩하려면 수정자( 뿐만 아니라 작동 ) key
를 포함하여 이벤트에 보고된 키를 사용합니다 .control
ctrl
{ "keys": ["backspace"], "command": "echo"},
모든 것을 말하자면, 입력 로깅 보고서는 원래 질문에 대한 의견에서 언급된 항목 중 하나인 처음에 기대했던 것과 항상 다를 수 있습니다.
문자를 생성하는 키 조합은 chr
이벤트로 보고됩니다. 즉, Shift 상태를 고려한다는 의미입니다. 문자를 생성하지 않는 키는 key
이벤트로 보고되며 수정자와누른 키.
처음에 기대했던 것과 다를 수 있기 때문에 이 부분이 강조됩니다.
예를 들어 미국 키보드 레이아웃에서는 #
키 의 이동된 버전 3
으로 키를 공유합니다 .#
따라서:
- 3:
chr evt: 3 (0x33)
- shift+3:
chr evt: # (0x23)
이는 논리적으로 이해가 됩니다. 키만 누르면 3
리터럴이 생성되고 3
Shift를 사용하면 해시 문자가 생성됩니다.
그러나 다음 사항에 유의하세요.
- Ctrl+3:
key evt: control+3
- Ctrl+#:
key evt: control+3
- Ctrl+Shift+3:
shift+control+3
그건; 문자를 얻으려면 #
Shift 키를 눌러야 하는데 보고된 키 이벤트는 3
키에 대한 것입니다. 왜냐하면 그것이 실제로 제가 누르고 있는 키이기 때문입니다.