2017-04-13 17 views
-1

この問題はライブラリのバグによって引き起こされ、これが修正されました。hammerspoonを使用して他の鍵にアポストロフィをリマップ


私はhammerspoonを使用していると私は( `)バッククォートするCtrl + 'を再マップしようとしているが、私はできません。

設定ファイルinit.luaは、以下のようなものです:

local function keyCode(key, modifiers) 
    modifiers = modifiers or {} 
    return function() 
     hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), true):post() 
     hs.timer.usleep(100) 
     hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), false):post() 
    end 
end 

local function remapKey(modifiers, key, keyCode) 
    hs.hotkey.bind(modifiers, key, keyCode, nil, keyCode) 
end 

remapKey({'ctrl'}, 'h', keyCode('delete')) // works 
remapKey({'ctrl'}, "'", keyCode("`")) // does not work 

エラーメッセージは次のとおりです。

Invalid key: ' - this may mean that the key requested does not exist in your keymap (particularly if you switch keyboard layouts frequently) 

問題にアポストロフィが含まれていませんhs.keycodes.mapあるようだ(それは二重引用符が含まれており、バックティック)。

アポストロフィを再マップすることは可能ですか?

答えて

0

ここでのポイントは、キーボードレイアウトです(Hammerspoonはあなたのキーボードが入っていると思います)。

実際にキーボードにアポストロフィ(')キーがありますか? シフト + @と入力すると、アポストロフィを入力する必要がある場合は、newKeyEventとする必要があります。

local function keyCode(key, modifiers) 
    modifiers = modifiers or {} 
    return function() 
     hs.eventtap.keyStroke(modifiers, key) 
    end 
end 
:あなたがキーボードを使って文字列を入力する方法を気にしたくない場合は

remapKey({'ctrl'}, "'", keyCode("@", {"shift"})) 

それとも、あなたは、単にのkeyCodeでhs.eventtap.keyStroke()を使用することができます()関数

hs.keycodes.mapの場合、一重引用符ではなく二重引用符を使用するとHammerspoonのバグであることが判明したので、ちょうどPRを提出しました。

+0

あなたの答えに感謝します。 私のキーボードレイアウトはUSで、私はそれを変更していないので、一重引用符とバックティックを使用できるはずです。 この問題に関連するバグがあることをご理解いただきありがとうございます。私は修正がリリースされるのを待っています。 – tsugitta

+0

今のところ '' '"'の代わりに '39'(または' 0x27')を試してください。新しいリリースを待つ必要はありません。 –

+0

これは機能します!ありがとうございます:) – tsugitta

関連する問題