AutoHotKey - ทางลัดที่กำหนดเองเพื่อสลับไปยังเดสก์ท็อปถัดไป / ก่อนหน้าใน Windows 10


7

ฉันได้เขียนสคริปต์ AutoHotKey ขนาดเล็กเพื่อสลับเดสก์ท็อปเสมือนจริงใน Windows 10 ฉันเขียนรหัสนี้เพื่อให้ฉันสามารถสลับเดสก์ท็อปด้วยแป้นพิมพ์ลัดที่กำหนดเองแทนการใช้ทางลัดเริ่มต้นของ Windows 10 (ชนะ + CTRL + ซ้าย / ขวา)

รหัส:

#LAlt::^#Right ; switch to next desktop with Windows key + Left Alt key
#LCtrl::^#Left ; switch to next desktop with Windows key + Left CTRL key

รหัสนี้ใช้งานได้เฉพาะเมื่อคุณคลิกที่หน้าต่างหรือสิ่งอื่นใดบนเดสก์ท็อปปัจจุบันก่อนที่จะกดปุ่ม ฉันลองใช้ฟังก์ชั่นคลิกเพื่อจำลองการคลิกก่อนที่มันจะเปลี่ยนเดสก์ท็อป (ซึ่งใช้งานได้) แต่มันเลื่อนเมาส์ไปยังพิกัดที่ฉันคลิกซึ่งเห็นได้ชัดว่าไม่ใช่สิ่งที่ฉันต้องการ ฉันเล่นไปกับ ControlClick แล้ว แต่ก็ไม่เคยทำงาน

ดังนั้นคำถามของฉันคือ: มีวิธีที่ฉันสามารถตั้งโฟกัสบนเดสก์ท็อปปัจจุบันก่อนดำเนินการคำสั่งเพื่อสลับเดสก์ท็อปหรือไม่? หรืออาจจะมีวิธีอื่นที่ฉันสามารถเปลี่ยนเดสก์ท็อปโดยไม่จำลองทางลัด Win 10 เริ่มต้นได้หรือไม่

ขอบคุณ!


แก้ไข 1

สิ่งหนึ่งที่ผมสังเกตเห็นก็คือว่าถ้าฉันคลิกแถบงานแล้วทำLWin+ LAlt/ LCtrlฉันสามารถสลับไปมาได้อย่างราบรื่นโดยถือลงLWinและสลับระหว่างและLAltLCtrl

เมื่อฉันคลิกที่แถบงานจากนั้นทำLWin+ LAltนี่คือสิ่งที่ KeyHistory ถ่มน้ำลาย:

VK  SC  Type    Up/Dn   Elapsed Key     Window
----------------------------------------------
5B  15B     d   1.91    LWin            
A4  038 h   d   0.31    LAlt            
A2  01D i   d   0.00    LControl        
A2  01D i   u   0.00    LControl        
A4  038 i   u   0.00    LAlt            
A2  01D i   d   0.05    LControl        
5B  15B i   d   0.02    LWin            
27  14D i   d   0.02    Right           
27  14D i   u   0.00    Right           
A2  01D i   u   0.01    LControl        
5B  15B i   u   0.02    LWin            
A2  01D i   d   0.01    LControl        
5B  15B i   d   0.00    LWin            
A2  01D i   u   0.00    LControl        
A4  038 s   u   0.00    LAlt            
5B  15B     u   0.06    LWin            
A2  01D i   d   0.00    LControl        
A2  01D i   u   0.00    LControl
(This is what I want it to do without clicking the taskbar)

แต่เมื่อฉันกดLWin+ LAltKeyHistory จะแสดงว่าเหตุการณ์สำคัญหยุดหลังจากเหตุการณ์ "Right Up":

VK  SC  Type    Up/Dn   Elapsed Key     Window
----------------------------------------------
5B  15B     d   1.91    LWin            
A4  038 h   d   0.31    LAlt            
A2  01D i   d   0.00    LControl        
A2  01D i   u   0.00    LControl        
A4  038 i   u   0.00    LAlt            
A2  01D i   d   0.05    LControl        
5B  15B i   d   0.02    LWin            
27  14D i   d   0.02    Right           
27  14D i   u   0.00    Right
(There should be more after this)

เหตุการณ์ LControl Up ไม่เคยถูกยิงออกไปและดูเหมือนว่าจะทำให้ทุกอย่างสับสน


ฉันพยายามทำสิ่งที่คล้ายกันและฉันมีปัญหาเดียวกัน (ปุ่มควบคุมติดค้างต้องคลิกที่ใดที่หนึ่งบนเดสก์ท็อป) การแก้ไขสำหรับฉันคือเพื่อให้แน่ใจว่าฉันกำลังใช้ตัวแปรซ้าย / ขวาของคีย์ windows และ ปุ่มควบคุมเมื่อตรวจจับการกดปุ่ม นี่อาจไม่ใช่วิธีแก้ปัญหาดังกล่าวข้างต้นต่อ แต่ฉันคิดว่าฉันจะทิ้งข้อความไว้ที่นี่ในกรณีที่คนอื่นมีปัญหาเดียวกัน นี่คือวิธีแก้ปัญหาที่ใช้งานได้กับกรณีของฉันโดยใช้LWin+LCtrl+j/kเพื่อสลับระหว่างเดสก์ท็อป: <^<#j::Send, ^#{Right}และ<^<#k::Send, ^#{Left}
Jacob Stanley

คำตอบ:


1

บางครั้งเมื่อคุณพยายามส่งคีย์ตัวปรับแต่ง (win / ctrl / alt) และสตริงทริกเกอร์มีคีย์ตัวแก้ไขเช่นกันคุณต้องรอคีย์ทริกเกอร์ที่จะเปิดตัวหรือพวกเขาจะส่งผลกระทบต่อสตริงแทนที่ในขณะที่คุณกำลังค้นหา .

ลองใช้KeyWaitเพื่อทำสิ่งนี้ให้สำเร็จ แจ้งให้ทราบล่วงหน้าเรากำลังใช้ไวยากรณ์ลัดกับฮอตสตริง

#LAlt:: ; switch to next desktop with Windows key + Left Alt key
  KeyWait LAlt
  SendInput #^{Right}
  Return

#LCtrl:: ; switch to previous desktop with Windows key + Left CTRL key
  KeyWait LCtrl
  SendInput #^{Left}
  Return

สำหรับวัตถุประสงค์ของการสลับเดสก์ท็อปข้างต้นทำงานให้ฉัน

ในบางครั้งมีบางครั้งที่แม้แต่วิธีนี้ก็ใช้ไม่ได้และมีวิธีแก้ไขอื่นที่เป็นไปได้ แทนที่จะเป็นกุญแจรอสิ่งเหล่านี้ ...

KeyWait LAlt
KeyWait LCtrl

... แทนที่ด้วยหนึ่งในการกดแป้นที่เกี่ยวข้องเหล่านี้เพื่อล้างสถานะของคีย์:

Send,{LAlt Down}{LAlt Up}
Send,{LCtrl Down}{LCtrl Up}

งานนี้สำหรับฉัน ( ความสามารถในการเปลี่ยนเดสก์ท็ขณะที่ยังคงถือครอง Winkey ) Win+Alt / Win+LCtrlแต่ฉันต้องการที่จะสามารถที่จะเปลี่ยนฮอตแทนการใช้ทางด้านซ้าย: !^+H / !^+Lฉันชอบที่จะใช้ ฉันพยายามแทนที่ตัวเอง แต่ดูเหมือนว่าคีย์จะไม่ใช้ที่นี่ในขณะที่ฉันต้องละทิ้งตัวดัดแปลงทั้งหมดและทำฮ็อตคีย์อื่นเพื่อให้ใช้งานได้ ( ฉันไม่สามารถถือได้ )
fohrums

โดยการลบKeyWaitฉันสามารถใช้!^+H / !^+Lในขณะที่ยังคงถือขอบคุณเควิน
fohrums

0

Windows + ctrl+ / arrow จะเปลี่ยนเดสก์ท็อปนอกเสียจากว่าฉันพลาดจุดใดจุดหนึ่ง อย่างน้อยก็ในเหมือง


2
ใช่แล้ว แต่สิ่งที่ฉันพยายามทำคือเพิ่มวิธีการเปลี่ยนเดสก์ท็อปของฉันเองเพราะฉันคิดว่ามันไม่สะดวกที่จะต้องใช้ทั้งสองมือเพื่อสลับเดสก์ท็อป ฉันต้องการใช้ปุ่ม windows + Alt Alt ซ้าย / ซ้ายเพื่อย้อนกลับไปมาระหว่างเดสก์ท็อป
MattsterJames

3
@MattsterJames น่าจะแก้ไขคำถามของคุณได้แล้ว - ฉันสงสัยว่าฉันเป็นคนเดียวที่จะอ่านและคิดว่า!
Michael B

ฉันเดาว่าฉันลืมที่จะพูดถึงว่า .. ขอบคุณสำหรับการชี้ให้เห็น! ฉันแก้ไขมัน
MattsterJames

-1

ไม่ทราบว่ายังเกี่ยวข้องอยู่หรือไม่ แต่ 'pzone' จาก Reddit เขียนสคริปต์ที่ใช้ฟังก์ชั่นที่มีตัวแปรส่วนกลางที่จดจำเดสก์ท็อปตัวใดตัวหนึ่งของคุณและวิธีการที่คุณสามารถผูกปุ่มลัดหนึ่งอันเพื่อสลับระหว่างสอง มันจะทำงานได้ถ้าคุณมี 2 เดสก์ท็อป

switchedDesktop := false
switchDesktop() 
{
  global switchedDesktop
    if switchedDesktop
    {
        SendEvent ^#{Right}
        switchedDesktop := false
    }
    else
    {
        SendEvent ^#{Left}
        switchedDesktop := true
    }
}

https://www.reddit.com/r/AutoHotkey/comments/3fyudo/automatically_switch_between_windows_10_virtual


-1

ตัวอย่างเช่นฉันต้องการตั้งค่า Page Down สำหรับเดสก์ท็อปถัดไปและ Page Up สำหรับเดสก์ท็อปก่อนหน้าหลังจากฉันติดตั้ง AutoHotkey ฉันสร้างสคริปต์ AutoHotKey ใหม่และเพิ่มรหัสนี้และบันทึกจากนั้นเรียกใช้สคริปต์

PgDn::^#Right ;Next Desktop
return 

PgUp::^#Left ;Previous Desktop
return 

และมันจะทำงานได้ดี :)


1
คุณเคยอ่านคำถามก่อนโพสต์ซ้ำซ้อนหรือไม่?
jiggunjer

ใช่ฉันอ่านคำถาม: หรืออาจจะมีวิธีอื่นที่ฉันสามารถเปลี่ยนเดสก์ท็อปโดยไม่จำลองทางลัด Win 10 เริ่มต้นได้หรือไม่ และในคำถาม: ** รหัสนี้ใช้ได้ แต่เฉพาะเมื่อคุณคลิกที่หน้าต่างหรือสิ่งอื่นใดบนเดสก์ท็อปปัจจุบันก่อนที่จะกดปุ่ม ** หมายความว่ารหัสของฉันทำงานโดยไม่จำเป็นต้องคลิกที่ใดเลย !!!!!
AliOsat Mostafavi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.