johngrib / johngrib.github.io

my wiki
MIT License
75 stars 42 forks source link

E0/719853-86E6-4129-BED3-12AD6BF0FCCF #130

Closed utterances-bot closed 1 year ago

utterances-bot commented 4 years ago

Hammerspoon 튜토리얼 03 - 한영 전환 키를 만들어 봅시다 - 기계인간 John Grib

Esc - 영문전환도 만들어 봅시다

https://johngrib.github.io/wiki/hammerspoon-tutorial-03/

taeksoo-shin commented 4 years ago

f13에 영문으로 전환하고 escape를 누르는 키를 만들어서 쓰니깐 정말로 편하네요! 잘 사용하겠습니다 :)

HwangTaehyun commented 4 years ago

블로그 글 너무 잘 보고 있습니다! 혹시 hammerspoon에서 한글 바인딩이 가능할까요? layout에 없는 글자라는 에러가 나오는데 해결방법을 찾아봐도 잘 나오지 않아 여쭤봅니다 ㅠㅠ 하고 싶은 키 맵핑은 한글 입력모드에서 'ㅓㅏ'를 입력하면 vim normal 모드로 변경되고 한영전환이 되는건데 hammerspoon의 hotkey.bind에서 연속적인 두 문자로 바인딩을 지원해주지 않아 고생중입니다 ㅠ

johngrib commented 4 years ago

@HwangTaehyun
안녕하세요. 그거라면 hotkey.bind보다 hs.hotkey.modal이 적절할 것 같습니다.

wafe commented 4 years ago

Windows 에서는 AutoHotKey 를 이용해서 ESC 를 누르면 영문 전환 후 ESC 를 전송하는 식으로 사용중인데요, macOS 에서도 동일하게 하려교 hammerspoon 을 사용해보니, ESC 를 받아서 영문전환 후 ESC 를 전송하게 하면 영문전환은 되는데 ESC 전송은 안되더라고요.

혹시 이런 방식은 macOS 에서는 동작하지 않아서 별도의 키를 이용하시는 걸까요?

이게 되지 않으면, ESC 를 쓰지는 못하고 뭔가 특수한 단축키를 정해서 VIM ESC 대용으로 사용을 해야하는데... 혹시 불가능한걸까요?

johngrib commented 4 years ago

@wafe 제가 쓰는 f13은 그냥 Esc 한영전환 기능만 있는 게 아니라 제가 즐겨 쓰는 여러 가지 기능을 붙여 놓은 거라 그렇습니다. 해머스푼에서 Esc 매핑만으로도 원하시는 기능은 가능할 것 같긴 해요.

planit-zero commented 4 years ago

@wafe 님과 동일하게 맥에서 한영전환은 되는데 esc 전송이 안됩니다 ㅠㅠ

jyoon17 commented 4 years ago

@wafe, @yorez3 님 저는 hammerspoon이나 lua를 잘 몰라 뻘소리일 수 있지만... 아래 같이 한번 해보면 가능할 것 같은데요?

local inputEnglish = "com.apple.keylayout.ABC"
local esc_bind

function back_to_eng()
    local inputSource = hs.keycodes.currentSourceID()
    if not (inputSource == inputEnglish) then
        hs.keycodes.currentSourceID(inputEnglish)
    end
    esc_bind:disable()
    hs.eventtap.keyStroke({}, 'escape')
    esc_bind:enable()
end 

esc_bind = hs.hotkey.new({}, 'escape', back_to_eng):enable()
planit-zero commented 4 years ago

@jyoon17 거의 포기 상태 였는데, 알려주신 방법으로 잘 해결됐습니다. 감사합니다. : )

jyoon17 commented 4 years ago

@jyoon17 거의 포기 상태 였는데, 알려주신 방법으로 잘 해결됐습니다. 감사합니다. : )

@yorez3 님 제가 다른 것 테스트하다가;; 아래 코드는 esc release event를 binding 한거라 본문 수정했습니다.

-- 수정 전
esc_bind = hs.hotkey.new({}, 'escape', nil, back_to_eng):enable()
-- 수정 후
esc_bind = hs.hotkey.new({}, 'escape', back_to_eng):enable()
planit-zero commented 4 years ago

@jyoon17 님

답변주셔서 감사합니다.

추가로 몇번 시도해보다가 잘 안돼서 그런데 아래의 함수를 ctrl + [ 에다가 바인딩 할 수도 있을까요... ? ㅠㅠ

제일 아래 hs.hotkey.bind({'ctrl'}, 33, back_to_eng)등으로 해보려했으나 실패했습니다. esc_bind를 비활성화 한 것 처럼 ctrl + 33 을 먼저 비활성화해야하는 것 같은데 아직 방법을 못 찾아서 혹시 아시면 한수 가르침 부탁드립니다.. : )

@wafe, @yorez3 님 저는 hammerspoon이나 lua를 잘 몰라 뻘소리일 수 있지만... 아래 같이 한번 해보면 가능할 것 같은데요?

local inputEnglish = "com.apple.keylayout.ABC"
local esc_bind

function back_to_eng()
  local inputSource = hs.keycodes.currentSourceID()
  if not (inputSource == inputEnglish) then
      hs.keycodes.currentSourceID(inputEnglish)
  end
  esc_bind:disable()
  hs.eventtap.keyStroke({}, 'escape')
  esc_bind:enable()
end 

esc_bind = hs.hotkey.new({}, 'escape', back_to_eng):enable()
mununki commented 2 years ago

@jyoon17 덕분에 감사합니다.