人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

autohotkeyで、たとえば以下のようなコマンドを登録しておいて使うと、
コマンド使用後にCtrlキーが押しっぱなしになっている事があります。

^#j::Send,{Down}

この押しっぱなしを避ける方法はないでしょうか。
今は、もう一度Ctrlを押すことで、押しっぱなしを解除しています。

↓というのはソース上部に書いてあります。
#InstallKeybdHook
#UseHook

●質問者: tetlis
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Cherenkov
●34ポイント

windowsの"固定キー機能"が有効になっているためではないでしょうか。

vistaの場合ですが、
コントロールパネル - コンピュータの簡単操作センター - キーボードを使いやすくします - 固定キー機能を有効にする - 固定キー機能のセットアップ
に、Ctrl、Alt、Shift、Windowsロゴキーを2回続けて押すとそのキーをロックする
という項目があります。

もしくは、「固定キー機能のセットアップ」にある "Shiftキーを5回押すと固定キー機能を有効にする"あたりも関係しているかも。

他に考えられるのはAutoHotkeyスクリプトの記述に問題があるとか。


tetlisさんのコメント
残念ながら「固定キー機能」は有効になっていなかったので違うようです。 スクリプトのどこかに問題があるんですかね。 他の人は問題が起きてないんでしょうか。 「AUtoHotkeyいいな?」と思ってるのですが、たまにCtrlなんかが押しっぱなしになって萎えます。

2 ● taroe
●33ポイント

SendMode Input
を試してみては?

http://d.hatena.ne.jp/mitsc1729/20120310/1331332107


3 ● u_u-zzz
●33ポイント

私自身はそういうトラブルには見舞われていないので、コピペになりますが…

AutoHotkey スレッド part14

Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?

A9:AHKが原因の場合とそうでないときがある

○AHKが原因の場合
AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
例) ^W::Send, {w 30}

これを回避するためには、以下の方法をとればよい:
・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
#HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする

なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。

○AHK以外が原因の場合:
環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)
・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ