Sublime Text 3의 키 바인딩에 해시(#, 파운드) 키를 사용할 수 있습니까?

Sublime Text 3의 키 바인딩에 해시(#, 파운드) 키를 사용할 수 있습니까?

영국 키보드에서는 해시 기호(#, 다른 곳에서는 파운드라고도 함)에 자체 키가 있습니다(위에는 물결표가 있음).

아마도 미국 키보드의 표준 키가 아니기 때문에문서에 있는 명명된 키 목록사용자 정의 키 입력에 사용됩니다.

사용자 정의 키 바인딩을 생성할 때 이를 참조할 수 있는 방법이 있나요?

답변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를 포함하여 이벤트에 보고된 키를 사용합니다 .controlctrl

{ "keys": ["backspace"], "command": "echo"},

모든 것을 말하자면, 입력 로깅 보고서는 원래 질문에 대한 의견에서 언급된 항목 중 하나인 처음에 기대했던 것과 항상 다를 수 있습니다.

문자를 생성하는 키 조합은 chr이벤트로 보고됩니다. 즉, Shift 상태를 고려한다는 의미입니다. 문자를 생성하지 않는 키는 key이벤트로 보고되며 수정자와누른 키.

처음에 기대했던 것과 다를 수 있기 때문에 이 부분이 강조됩니다.

예를 들어 미국 키보드 레이아웃에서는 #키 의 이동된 버전 3으로 키를 공유합니다 .#

따라서:

  • 3:chr evt: 3 (0x33)
  • shift+3:chr evt: # (0x23)

이는 논리적으로 이해가 됩니다. 키만 누르면 3리터럴이 생성되고 3Shift를 사용하면 해시 문자가 생성됩니다.

그러나 다음 사항에 유의하세요.

  • Ctrl+3:key evt: control+3
  • Ctrl+#:key evt: control+3
  • Ctrl+Shift+3:shift+control+3

그건; 문자를 얻으려면 #Shift 키를 눌러야 하는데 보고된 키 이벤트는 3키에 대한 것입니다. 왜냐하면 그것이 실제로 제가 누르고 있는 키이기 때문입니다.

관련 정보