AutoHotKey - Bir tuşu basılı tutun


1

Vurması gereken bir AutoHotKey betiğim var F3 basılı tuttuğumda Ctrl , ve vur F2 bıraktığımda Ctrl .

Şu anki betiğim:

$ctrl::
Suspend, On
Send, {F3}
While (GetKeyState("Ctrl",P))
{
}
Send, {F2}
Suspend, Off
Return

Ama beklettiğimde Ctrl aşağı, hiçbir şey yapmaz. Ben bıraktığımda Ctrl , her ikisi de vurur F3 ve F2 . Birisi bana bunu nasıl düzelteceğimi söyleyebilir mi?

Yanıtlar:


1

üzerinden: http://www.autohotkey.com/docs/commands/Send.htm

Bir tuşu basılı tutmak veya bırakmak için: Anahtarın adını içine alın   ardından Aşağı veya Yukarı kelimesini takip edin. Örneğin:

{B down} {b up} yaz.
{TAB down} gönder {TAB up}
Gönder {Yukarı Aşağı}; Yukarı ok tuşuna basın.
Uyku 1000; Bir saniye basılı tutun.
Gönder ve gt; {Yukarı yukarı} ; Yukarı ok tuşunu bırakın.

Bir tuş yukarıdaki yöntemle basılı tutulduğunda, fiziksel olarak basılı tuttuğunuz gibi otomatik tekrarlamaya başlamaz (bunun nedeni otomatik tekrarlamanın bir   sürücü / donanım özelliği). Bununla birlikte, bir döngü simüle etmek için kullanılabilir   otomatik tekrar. Aşağıdaki örnek 20 sekme tuş darbesi gönderir:

Döngü 20 {
{Tab down} yaz; Otomatik tekrarlama, ardışık aşağı olaylardan (yukarı olay olmadan) oluşur.
30. Uyku; Tuş vuruşları arasındaki milisaniye sayısı (veya SetKeyDelay kullanın).
}
Gönder {Tab up}; Anahtarı serbest bırak.

DownTemp kelimesi de kullanılabilir. Etkisi, değiştirici hariç, Down ile aynıdır.   tuşları (Kontrol / Shift / Alt / Win). Bu durumlarda, DownTemp söyler   daha sonra, anahtarın kalıcı olarak kapalı olmadığını ve   bir tuş vuruşu her çağrıldığında serbest bırakılır. Örneğin,   {Control DownTemp} yazıp ardından Send a yazıp normal bir "a" oluşturur   tuşa basma, kontrol-tuşa basma değil.


Sorun, anahtarların gönderilmesi değil, kısayol tuşlarının tetiklenmesidir.
Nelson

1

Bu kod istediğiniz işlevselliği sağlar:

$~ctrl::
    send {f3}
    keyWait, ctrl
    send {f2}
return

Değiştirici, kısayol tuşunun kısayol tuşunu engellememesine neden olur, bu nedenle etkin bir şekilde Ctrl + F3 ve Ctrl + F2 gönderirsiniz.
Nelson

Hayır, sadece F3 gönderiyor. Kodumu dene. F tuşlarından birini S olarak değiştirin ve bir Word belgesinde yürütün. Sadece S'ye gönderir, Ctrl-S'ye değil Kaydet'e gönderilir. Tilde KB kancanın girişi beklemesini önlemek için gereklidir, aksi takdirde çalışmaz. (Bu nedenle, ihmal edilen tilde verilen yeni Cevabınız, aynen aynısını yapar, ancak iki katına çıkardı.)
adaaaam

0

keyUp Kısayol tuşları için seçenek, ihtiyacınız olan şey gibi görünüyor.

İşte çalışma kodu test edildi:

Ctrl::
Send {F3}
keywait, Ctrl, L ; prevent F3 from firing while Ctrl is being held down.
return

Ctrl Up::Send {F2}

Bu betiği çalıştırmayı ve CTRL + C gibi CTRL tabanlı kısayol tuşlarını kullanmaya çalışırsanız ne olacağını bilmiyorum. Bence bu senaryo onu engelleyecek.
Nelson

Soru zaten burada çalışan bir senaryo ile cevaplandı: superuser.com/a/815704/239384
adaaaam

Ayrıca KeyUp gereksiz, karmaşıklık ekleyen birden çok kısayol tuşu oluşturuyorsunuz
adaaaam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.