1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mac+RDP環境でStream Deckからパスワード自動入力する決定版【Hammerspoon活用】

Last updated at Posted at 2025-05-01

Mac+RDP環境でStream Deckからパスワード自動入力する決定版【Hammerspoon活用】

📝 背景と課題

MacからMicrosoft Remote Desktop(RDP)でWindowsに接続し、Stream Deckを使って定型パスワードを入力しようとしたところ、次のような問題が発生しました:

  • テキストを貼り付けようとしても v しか入力されない
  • Ctrl+Vが通らない

Windowsへのリモート接続時にパスワード入力を自動化したい場面は多いのに、なぜかうまくいかないケースがあります。

❌ 試したがダメだった方法

  • Stream Deckの「テキスト送信」や「クリップボード貼り付け」機能
  • Clipboard Buddy / Super Macro(Macでは動作しない)
  • ⌘VCtrl+V のショートカット送信(RDPが変換できず失敗)

✅ 解決策:Hammerspoonで1文字ずつ「タイプ」する!

RDPの問題を分析した結果:

  • Mac上で Ctrl+V などの仮想キーはRDPにうまく渡らないことが多い
  • ならば「貼り付け」ではなく「タイプする」方が確実
  • Hammerspoonを使えば、Stream DeckのホットキーでMacから仮想キーストロークを自動送信できる

🛠️ 必要なもの

⚙️ 設定ステップ

① Hammerspoon の init.lua 設定例

-- init.lua

-- 業務用パスワード1
function typePassword1()
    local text = "example_password1" -- 実際のパスワードに書き換え
    for i = 1, #text do
        local c = text:sub(i,i)
        hs.eventtap.keyStroke({}, c, 0)
        hs.timer.usleep(80000) -- 入力速度調整(ミリ秒)
    end
    hs.eventtap.keyStroke({}, "return", 0) -- Enterキー送信
    hs.alert.show("🔐 パスワード1送信完了")
end

hs.hotkey.bind({"cmd", "alt", "ctrl"}, "p", typePassword1)

-- 業務用パスワード2
function typePassword2()
    local text = "example_password2" -- 実際のパスワードに書き換え
    for i = 1, #text do
        local c = text:sub(i,i)
        hs.eventtap.keyStroke({}, c, 0)
        hs.timer.usleep(80000)
    end
    hs.eventtap.keyStroke({}, "return", 0)
    hs.alert.show("🔐 パスワード2送信完了")
end

hs.hotkey.bind({"cmd", "alt", "ctrl"}, "d", typePassword2)

-- 起動確認
hs.alert.show("✅ Hammerspoon: パスコード送信準備OK")

② Stream Deck 側の設定

  • 「ホットキー」アクションを使って、
    • + + + P(パスワード1用)
    • + + + D(パスワード2用)
  • をそれぞれ割り当てる

🎉 実行方法

  1. MacでHammerspoonを起動(アクセシビリティ許可必要)
  2. RDPでWindowsを開き、テキスト入力欄にフォーカス
  3. Stream Deckボタンを押す
  4. 定型パスワードが自動入力 → Enter送信まで完了!

✅ メリット

特徴 内容
💡 シンプル構成 すべて無料・軽量なツールのみで完結
✅ RDPでも確実に通る キーストローク入力なので貼り付け制限も回避
🎮 Stream Deck対応 ワンボタンで完結できる運用性の高さ

🔐 注意点・セキュリティ対策

  • 当然ながら、パスワードをスクリプトに平文で書くことはセキュリティリスクです
  • 実運用では以下のような対策を検討しましょう:
    • パスワードを暗号化して保存し、実行時に復号
    • キーチェーンから安全に読み取る仕組みを追加
    • 定期的なパスワード変更に対応できるよう設計

🧩 応用例

  • 複数の入力パターンを分岐させる
  • スニペットやJSONファイルから定型文を読み込む
  • hs.chooser を使ってGUIメニューにする
  • 入力前に確認ダイアログを表示する

応用例:入力前の確認を追加

function typeSecurePassword()
    local button, _ = hs.dialog.blockAlert(
        "パスワード送信確認", 
        "パスワードを送信しますか?", 
        "送信", "キャンセル"
    )
    
    if button == "送信" then
        -- パスワード入力処理(上記と同様)
    end
end

📦 まとめ

課題 解決策
Stream DeckからRDPに貼り付けできない Hammerspoonでキーストローク送信に切り替え
Ctrl+Vが無効 hs.eventtap.keyStroke()で回避
定型文を毎回打つのが面倒 ボタン一発で入力完了!

あとがき

同じように「Mac + RDP + Stream Deck」で入力自動化に困っている人に、少しでも参考になれば嬉しいです!特にRDP接続での貼り付けトラブルは意外と多いので、キーストローク送信という原始的だけど確実な方法が役立つかもしれません。

セキュリティと利便性のバランスを考慮しつつ、ぜひ自分の環境に合わせたカスタマイズを試してみてください。

タグ: Stream Deck, Hammerspoon, RDP, Mac, 自動化

投稿者:もあい
更新日:2025年5月1日

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?