5

私の問題は次のとおりです。Karabiner Elements を使用して Caps Lock を F18 に再マッピングすると、Hammerspoon は F18 を「ハイパー キー」として使用して、アプリ固有のショートカットを実行します。

私の現在のコードは次のようになります。

-- A global variable for the Hyper Mode
k = hs.hotkey.modal.new({}, "F17")

launch = function(bundleID)
  hs.application.launchOrFocusByBundleID(bundleID)
  k.triggered = true
end

-- Single keybinding for app launch
singleapps = {
  {'f', 'com.apple.Finder'},
  {'c', 'com.google.Chrome'},
}

for i, app in ipairs(singleapps) do
  k:bind({}, app[1], function() launch(app[2]); end, nil, function() launch(app[2]); end)

また、ハイパー キーを使用して vim のようなナビゲーションをどこにでも配置するときに、HJKJ を矢印キーにマップしています。

arrowKey = function(arrow, modifiers) 
  local event = require("hs.eventtap").event
  event.newKeyEvent(modifiers, string.lower(arrow), true):post()
  event.newKeyEvent(modifiers, string.lower(arrow), false):post()
end

k:bind({}, 'h', function() arrowKey('LEFT', {}); end, nil, function() arrowKey('LEFT', {}); end)
k:bind({}, 'j', function() arrowKey('DOWN', {}); end, nil, function() arrowKey('DOWN', {}); end)
k:bind({}, 'k', function() arrowKey('UP', {}); end, nil, function() arrowKey('UP', {}); end)
k:bind({}, 'l', function() arrowKey('RIGHT', {}); end, nil, function() arrowKey('RIGHT', {}); end)

なのでHYPER-H基本的に左矢印キーを出力します。HYPER-COMMAND-Hしかし、私の問題は、カーソルを行の先頭に移動するので、command-left-arrow-keyも出力したいということです。

k:bind({'cmd'}, 'n', function() arrowKey('LEFT', {'cmd'}); end, nil, function() arrowKey('LEFT', {'cmd'}); end)

私はそれのように見えます。ただし、問題は、HYPER-COMMAND-H は機能しますが、COMMAND-HYPER-Hは機能しません。修飾子の順序を間違えると (通常は問題になりません)、完全に壊れてしまい、非常に不便です。

順序が関係ないようにするにはどうすればよいですか?F18 は適切な修飾キーではないので、本当に困っています。

4

0 に答える 0