4

次のように、オートホットキーを使用していくつかのキーを再マップしました。

LWin::LAlt

LCtrl::LWin

LAlt::LCtrl

ルーマニア語 (プログラマー) のキーボード レイアウトで Windows 7 を使用しています。ă と入力したい場合は、たとえば RAlt + a を押します。「プログラマー」と呼ばれるのは、通常の US QWERTY レイアウトであり、RAlt によってアクティブ化されるエクストラがあるためです。

ただし、Autohotkey スクリプトを実行してから RAlt + a/s/t/i を送信すると、システムがおかしくなりました。Autohotkey を閉じても、そのように動作します。ログオフ/再起動するか、マジックキーシーケンスを押して修正する必要があります(まだどのシーケンスかわかりません)。

私が推測しているのは、Alt がどういうわけか動かなくなり、押すすべてのキーが Alt と混同されるということです。Esc を押すと Windows が切り替わり、アプリケーションで F を押すと [ファイル] メニューが開きます。

これはオートホットキーのバグですか、それとも何か間違っていますか?

これには過去に SharpKeys を使用しましたが、いくつかの要件 (共有コンピューター) のために、ユーザーごとに何かが必要であり、できればオフにすることができます。オートホットキーはこれに最適でした。

ありがとうございました。

後期編集 - 解決策は 576i でした (最初のセクション + 以前使用していたキーボード マッピングを置き換えるキー マッピング - ルーマニアのプログラマーをあきらめました)

; Remap Ctrl to Win, Win to Alt, Alt to Ctrl - credit to 579i
$*LWin::Send {LAlt Down} 
$*LWin Up::Send {LAlt Up}

$*LCtrl::Send {LWin Down}
$*LCtrl Up::Send {LWin Up}

$*LAlt::Send {LControl Down}
$*LAlt Up::Send {LControl Up}

; Keyboard mappings for Romanian letters
; First of all - GTK Windows are special and need special treatment
#IfWinActive, ahk_class gdkWindowToplevel
    >!a::SendInput {Control Down}{Shift Down}u0103{Control Up}{Shift Up}
    >!+a::SendInput {Control Down}{Shift Down}u0102{Control Up}{Shift Up}
    >!q::SendInput {Control Down}{Shift Down}u00E2{Control Up}{Shift Up}
    >!+q::SendInput {Control Down}{Shift Down}u00C2{Control Up}{Shift Up}
    >!i::SendInput {Control Down}{Shift Down}u00EE{Control Up}{Shift Up}
    >!+i::SendInput {Control Down}{Shift Down}u00CE{Control Up}{Shift Up}
    >!s::SendInput {Control Down}{Shift Down}u0219{Control Up}{Shift Up}
    >!+s::SendInput {Control Down}{Shift Down}u0218{Control Up}{Shift Up}
    >!t::SendInput {Control Down}{Shift Down}u021B{Control Up}{Shift Up}
    >!+t::SendInput {Control Down}{Shift Down}u021A{Control Up}{Shift Up}
; Then regular windows
#IfWinActive
    >!a::Send ă
    >!+a::Send Ă
    >!q::Send â
    >!+q::Send Â
    >!i::Send î
    >!+i::Send Î
    >!s::Send ș
    >!+s::Send Ș
    >!t::Send ț
    >!+t::Send Ț

[GTK 修正を含めるように編集。これはまだコンソール Windows では機能せず、貼り付け時にいくつかの奇妙な不具合があり、Ctrl が Alt として解釈されることがあります]

4

1 に答える 1

2

右の Alt キーが Alt-Gr キーの場合、スクリプトをトリガーする LControl & RAlt として解釈されます。

また、そこに無限ループがあるようです。

この例を見てください。これはあなたにとってよりうまくいくはずです。

ホットキーの前の$は、「送信」したキーが次のホットキーをトリガーするのを防ぎます。*は、他のキーを押したときにもキーが機能することを確認します。

$*LWin::Send {LAlt Down}
$*LWin Up::Send {LAlt Up}

$*LCtrl::Send {LWin Down}
$*LCtrl Up::Send {LWin Up}

$*LAlt::Send {LControl Down}
$*LAlt Up::Send {LControl Up}

キーボード ドライバーが "LControl & RAlt" を内部的に送信する場合、この再マッピングによって Alt-Gr キーが強制終了される可能性があります。

これを修正して、Alt-Gr 用の特別なホットキーを作成するか、ルーマニア語キーボードに Alt-Gr の組み合わせがいくつかしかない場合は、それらをホットキーとして定義します。

Autohotkey ヘルプ ファイルのHotkeyページの例:

<^>!m::MsgBox You pressed AltGr+m.
<^<!m::MsgBox You pressed LeftControl+LeftAlt+m.
于 2013-09-05T05:09:59.177 に答える