یکی از روشهای انجام کارهای پیچیده تنها با شورتکاتهای کیبورد در ویندوز، استفاده از نرمافزار AutoHotKey است. این نرمافزار در نگاه اول کم و بیش پیچیده به نظر میرسد اما اگر کمی حوصله کنید، متوجه میشوید که نوشتن اسکریپتها برای اجرای امور، نسبتاً ساده است. در این صورت میتوانید از توانمندیهای گستردهی اتوهاتکی استفاده کنید.
در این مقاله به آموزش کار با نرمافزار AutoHotKey که شاید قدرتمندترین برنامهی ویندوزی برای تعریف کردن شورتکاتهای کیبورد و موس است، میپردازیم و مثالهایی را بررسی میکنیم.
دانلود و نصب AutoHotKey
برای دانلود این نرمافزار به وبسایت رسمی آن مراجعه کنید و نسخهی پایدار فعلی یا به زبان دیگر Current Version را دانلود کنید. البته نسخهی دوم که در حال حاضر آلفا یا آزمایشی است هم منتشر شده که برای کاربران مشتاق و حرفهای مناسب است چرا که شاید اشکالاتی در آن وجود داشته باشد.
نصب کردن این نرمافزار ویندوزی بسیار ساده و روبهجلو است. میتوانید نصب سریع یا Express Installation را در فرآیند نصب فایل exe انتخاب کنید تا کار سادهتر شود.
ساخت اسکریپت یا فایل exe، ویرایش و اجرا
و اما ایجاد اسکریپت جدید: پس از نصب کردن اتوهاتکی، روی فضای خالی دستاپ یا فولدری دلخواه راستکلیک کنید و گزینهی New و سپس AutoHotKey Script را انتخاب کنید.
فایلهای اتوهاتکی فرمت AHK و پسوند ahk دارند. اگر روی این فایلها راستکلیک کنید و نرمافزار موردبحث نصب شده باشد، گزینههایی ارایه میشود:
- Run Script یا اجرای اسکریپت به کمک رانتایم AHK
- Compile Script که کتابخانهها و محیط اجرای اسکریپت را با اسکریپت ترکیب کرده و با کامپایل کردن، یک فایل EXE یا اجرایی میسازد تا بدون نیاز و مستقل از نرمافزار AutoHotKey قابل اجرا و استفاده باشد.
- Edit Script یا ویرایش اسکریپت که فایل AHK را در نرمافزار پیشفرضی که برای ویرایش متن در نظر گرفتهاید، باز میکند و میتوانید آن را ویرایش کنید.
توجه کنید که برای ویرایش کردن اسکریپتهای اتوهاتکی میتوانید از اپلیکیشن سادهی Notepad ویندوز استفاده کنید اما برای برخورداری از امکانات بیشتر، استفاده از نرمافزار SciTE4AutoHotkey را توصیه میکنیم. در این نرمافزار سینتکسهایی که در اسکریپت به کار رفته شده، هایلایت و رنگی میشود و لذا کار ویرایش با خطای کمتر و سرعت بیشتر انجام خواهد شد.
اما از کجا بفهمیم که اسکریپت AHK به درستی اجرا شده است؟
در زمان اجرای اسکریپتهای اتوهاتکی چه به صورت فایل ahk و چه از نوع فایل EXE، آیکون AutoHotKey که به صورت حرف H با زمینهی سبز است، در سینی ویندوز که بخش کنار ساعت در گوشهی تسکبار است، اضافه میشود.
اگر روی آیکون اتوهاتکی در گوشهی Taskbar راستکلیک کنید، گزینههای مفیدی نمایان میشود:
- Exit یا بستن برای توقف اجرای اسکریپت اتوهاتکی
- Pause یا مکث
- Reload This Script یا بارگذاری و اجرای مجدد اسکریپت
- Edit This Script برای ویرایش کردن اسکریپت
اگر از حساب کاربری خویش در ویندوز خارج شوید و مجدداً Sign in کنید یا همینطور سیستم ویندوزی را ریاستارت کنید، اسکریپت متوقف میشود. در صورت نیاز میتوانید فایل EXE مربوط به اسکریپت را بسازید و در فولدر Startup ویندوز اضافه کنید تا به صورت خودکار و پس از هر بار Restart شدن سیستم، اجرا شود.
آشنایی با عملکرد AutoHotKey
نرمافزار اتوهاتکی در حقیقت اعمالی را به کلیدهای پرکاربرد یا به زبان دیگر Hotkey و شورتکاتها که ترکیبی از کلیدها هستند، نسبت میدهد.
و اما با مثالی ساده شروع کنیم:
فرض کنید که میخواهید با زدن کلید ترکیبی Win + C ، مرورگر گوگل کروم اجرا شود. اسکریپت موردبحث بسیار ساده و فقط یک خط است:
#c:: Run Chrome return
و تکتک موارد در اسکریپت فوق را بررسی میکنیم:
ابتدا از نماد # استفاده شده که در واقع کلید Windows روی کیبورد است.
حرف c نیز به معنی کلید C کیبورد است. در واقع برای اشاره به بیشتر کلیدها میتوانید از نام کلید مستقیماً استفاده کنید و تنها برخی کلیدها مثل Win و Ctrl و Alt نام متفاوتی در اسکریپتنویسی دارند.
۲ بار دونقطه زدن یا :: برای شروع تعریف عمل جدید استفاده میشود که میتواند در همان خط یا در خطوط بعدی تعریف شود.
عمل موردنظر Run یا اجرا کردن برنامهی کروم است.
در نهایت بازگشت یا return انجام میشود. میتوانید پس از اجرای کروم، چند عمل دیگر را اجرا کنید و سپس از return استفاده کنید. این اعمال پشتسرهم اجرا میشوند.
میتوانید تعدادی شورتکات دیگر مثل Win + B و Win + A برای اجرا کردن برنامههای پرکاربرد در ادامهی همین خط اضافه کنید. نیازی به ساختن چند فایل ahk نیست. میتوانید در یک فایل حجیم، همهی اعمال موردنظر را به کلیدهای مختلف و شورتکاتها نسبت بدهید.
زمانی که اسکریپت را اجرا میکنید، در پسزمینه مشغول به کار میشود و هر زمان که کلید یا شورتکات خاصی را فشار دهید، عمل تعریفشده را انجام میشود.
نام اختصاری کلیدهای کیبورد در اتوهاتکی
برای اطلاع از نام کلیدهای مختلف در اسکریپتهای اتوهاتکی، به صفحهی راهنما در وبسایت AutoHotKey مراجعه فرمایید. در ادامه برخی موارد مهم و پرکاربرد را ذکر میکنیم:
# نام اختصاری Win
! نام اختصاری Alt
^ نام اختصاری Ctrl
+ نام اختصاری Shift
برای اشاره به کلیدهای چپ و راست مثل Ctrl سمت چپ یا راست میتوانید از < و > استفاده کنید. به عنوان مثال:
<! به معنی کلید Alt سمت چپ است.
>+ به معنی کلید Shift سمت راست است.
برای اطلاعات بیشتر به صفحهی لیست کلیدها در وبسایت اتوهاتکی مراجعه فرمایید.
استفاده از کلیدهای ترکیبی با پشتسرهم ذکر کردن نام کلیدها ساده است اما به خاطر داشته باشید که فشار دادن کلیدهای ترکیبی که فاصلهی زیادی از هم دارند، دشوار است. لذا از نظر تعداد کلیدهای ترکیبی محدودیت وجود دارد.
اما بیایید یک مثال دیگر را بررسی کنیم که در راهنمای نرمافزار AHK موجود است:
در خط اول عبارت #IfWinActive ذکر شده که اصطلاحاً Directive گفته میشود. این نوع دستور، شرطی را برای عملکرد کلیدهای فشار داده شده، اضافه میکند. تا زمانی که Directive دیگری را فعال نکنید، همچنان شورتکاتها و اعمال دیرکتیو فعال اجرا میشود.
همانطور که در ادامهی خط اول مشاهده میکنید، نام اپلیکیشن Notapad ذکر شده و در واقع IfWinActive دستوری شرطی است که باز بودن پنجرهی نرمافزار موردنظر را بررسی میکند. لذا اگر پنجرهی Notapad فعال باشد و شورتکاتی را فشار دهید که در خطوط دوم و سوم و چهارم ذکر شده، عمل تعریف شده انجام میشود.
در خط ششم نیز یک دیرکتیو دیگر دیده میشود که به پنجرهی خاصی اشاره نمیکند. به عبارت دیگر اگر نوتپد باز باشد و شورتکاتهای تعریف شده در خط دوم الی چهارم را فشار دهید، عمل تعریف شده در این بخشها اجرا میشود اما اگر پنجرهی نوتپد باز نباشد، دیرکتیو #IfWinActive خط ششم وارد عمل میشود و شورتکاتهای این بخش عمل میکند.
در اسکریپتهای AHK میتوانید از دیرکتیوهای مختلفی استفاده کنید که در صفحهی راهنمای دستورات موجود است.
شاید از قابلیت تصحیح خودکار در Word یا کیبوردهای اندروید برای سرعت بیشتر تایپ استفاده کرده باشید:
جالب است بدانید که AHK هم ویژگی مشابهی دارد که به آن Hotstrings که به معنی عبارتهای پرکاربرد است، گفته میشود. با این قابلیت میتوانید رشتهای از حروف را با عبارتی طولانی و پیچیده جایگزین کنید.
یا مثالی بسیار ساده: اگر بخواهید به جای کلمات btw که پشتسرهم تایپ شده، عبارت by the way جایگزین شود، میبایست دستور زیر را در اسکریپت بنویسید:
::btw::by the way
البته میتوانید امور پیچیدهتری را با این روش انجام بدهید. به عنوان مثال با تایپ کردن چند حرف خاص، تاریخ را در نرمافزاری که باز است، تایپ کنید:
اعمال یا Action در اسکریپتهای AHK
با نرمافزار AutoHotKey میتوانید اسکریپتهایی بنویسید که اعمال متنوعی را در سیستم عامل ویندوز عملیاتی میکند. تنوع اعمال یا به زبان دیگر Action، بسیار زیاد است و بحث در مورد تمام اکشنها خارج از حوصلهی این مقاله است. اما در لیست زیر به اکشنهای مهم و کاربردی میکنیم اشارهای مختصر میکنیم:
- Sending input یا ارسال ورودی که میتواند عبارتی متنی یا کلیدهایی باشد که پشتسرهم فشار داده میشوند.
- Moving the mouse around یا اکشن حرکت موس به اطراف. این اکشن موجب تغییر محل نشانگر موس میشود و حتی برخی گیمرهای حرفهای با این اکشن جالب، رباتهایی مینویسند که در بازیهای شوتر اول شخص، نشانهگیری انجام دهد!
- Clicking the mouse یا اکشن کلیک موس در محل دلخواه در پنجرهی فعلی.
- Displaying dialog menus که اکشنی برای تکمیل کردن فرمهای و فیلدهای ورود متن است.
- Moving windows around که اکشنی برای جابجایی پنجرهی برنامهها و تغییر اندازه و بستن آن است.
- Playing music یا اکشن کنترل پخش موسیقی.
- Writing to the Windows Registry که اکشنی قدرتمند برای نوشتن در رجیستری ویندوز است! به عبارت دیگر تغییر دادن تنظیمات پیچیده در ویندوز با یک فایل EXE که توسط AHK نوشته شده، امکانپذیر است.
- Modifying the contents of the Clipboard که اکشنی برای تغییر دادن محتوای کپی شده در کلیپبورد است.
- Reading and writing files این اکشن برای خواندن فایلها و انجام اکشن به تناسب هر خط از محتوای فایل است. میتوانید با همین اکشن جالب و قدرتمند، دستوراتی در فایل اسکریپت با پسوند ahk بنویسید!
در اسکریپتهای AHK استفاده از سینتکسهای متداول برنامهنویسی مثل if یا حلقهی for و همینطور ذخیره کردن عبارتها در متغیرها و شیءها هم امکانپذیر است. حتی میتوانید توابعی بنویسید تا در برنامههای پیچیده و طولانی، مرتباً دستوراتی را تکرار نکنید بلکه از یک تابع استفاده کنید. اگر لازم باشد میتوانید در اسکریپتی که مینویسید، تأخیری بین اجرای فرآیندها اضافه کنید تا کامپیوتر کمی برای دریافت اطلاعات از اینترنت یا پردازشهای سنگین صبر کند و سپس عمل بعدی را انجام دهد.
برای آشنایی با کاربرد تأخیر در اسکریپتها، به مقالهی زیر توجه فرمایید:
howtogeekسیارهی آیتی
آدمین جان، تو اصل جنس ی. تو نباشی ما از دست رفتیم
بیا گروه تل…. که مشتاق دیدارتیم
…
از اونجایی که هیچ آموزش تخصصی فارسی از AHK وجود نداره (غیر این سایت نایاب)
و در فروم خود سایت اصلی فقط چند زبان وجود داره
و وجود پتانسیلی که هم در برنامه هست و هم در هر ایرانی
بر آن شدم که گروه “ایران AHK” رو احداث کنم
سلام خسته نباشید من یه مشکلی دارم میخوام یه کدی بزنم که عملیاتی که قراره انجام بشه بعد دوثاینه بعد انجام بشه
مثلا من یه کد تعریف کردم که نوت پد باز بشه ولی میخوام وقتی دکمه ها رو زدم بعد دوثانیه انجام بشه
ممنون میشم کمکم کنید
سلام
من سرچ کردم گویا فرمان اسلیپ برای این جور کاری جواب میده. مثلاً بخواید دو ثانیه مکث کنه، این کد رو میذارید:
سلام ممنون بسیار مفید بود
سلام وقت بخیر
من جهت تکمیل فرمهای اینترنتی کدهای نوشتم فقط میخوام tab بصورت خودکار برای بعدی
سلام بنده میخوام ی کد بنویسم ک مثلا بجای کلیدهای ترکیبی ctrl+c یا کپی یک کلمه؛ با زدن کلید F1 کیبورد اینکار اعمال شود و بجای past کردن ک کلیدهای ترکیبی ctrl+v است با کلید F2 این مورد انجام شود
ممنون میشم کدش رو بهم بگید
سلام
برای تغییر عملکرد دکمههای کیبورد میتونید از برنامه PowerToys مایکروسافت استفاده کنید که قبلاً معرفی کردیم. برای شورتکاتهایی مثل Ctrl + C هم فکر میکنم جواب میده.
تغییر دکمه های کیبورد و استفاده از کلید دیگری به جای کلید خراب در ویندوز