LoginSignup
14
7

More than 1 year has passed since last update.

【Mac】Hammerspoonを使って左Cmdキーで英字、右Cmdキーで日本語へ入力切り替えできるようにする

Last updated at Posted at 2021-06-18

image.png

Hammerspoonを使って左Cmdキーで英字入力、右Cmdキーで日本語入力に切り替える設定方法です。

Hammerspoonインストール

brewでインストールできます。

$ brew install hammerspoon --cask

入力モード切り替え設定

Hammerspoonの設定ファイルに以下入力します。
luaで記述します。

~/.hammerspoon/init.lua
local simpleCmd = false
local map = hs.keycodes.map

local function kanaSwitchEvent(event)
    local c = event:getKeyCode()
    local f = event:getFlags()
    if event:getType() == hs.eventtap.event.types.keyDown then
        if f['cmd'] then
            simpleCmd = true
        end
    elseif event:getType() == hs.eventtap.event.types.flagsChanged then
        if not f['cmd'] then
            if simpleCmd == false then
                if c == map['cmd'] then
                    hs.keycodes.setMethod('Romaji')
                elseif c == map['rightcmd'] then
                    hs.keycodes.setMethod('Hiragana')
                end
            end
            simpleCmd = false
        end
    end
end

kanaSwitcher = hs.eventtap.new(
  {hs.eventtap.event.types.keyDown, hs.eventtap.event.types.flagsChanged},
  kanaSwitchEvent
)
kanaSwitcher:start()

左右Cmdキーの入力を検知後に他のキーを押さずに離すと入力を切り替えます。
Cmd+C(コピー)とかの場合は切り替わりません。

Hammerspoonの設定ファイル再読み込み

「Reload Config」をクリックして設定変更を反映します。

image.png

設定完了!

これで左Cmdキーで英字、右Cmdキーで日本語入力に切り替えられるようになります。

Karabiner-elementsでいいじゃん

たしかに、Karabiner-elements でもまったく同じことができます。

Karabiner-elementsはキーボード入力をもとに設定できるのに対して、HammerspoonではMacOSが認識できるイベントを元に設定できます。

http://www.hammerspoon.org/
You can write Lua code that interacts with OS X APIs for applications, windows, mouse pointers, filesystem objects, audio devices, batteries, screens, low-level keyboard/mouse events, clipboards, location services, wifi, and more.

そのため、Hammerspoonの方が拡張性が高いです。

例えば、「Macがパリにいることを検知すると、iTunesが自動的に再生を開始する」みたいな設定でもなんでもできます。

Mac上のキーボードショートカット設定がHammerspoonアプリひとつで完結できるのでオススメです。

参考

14
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7