آیا قبلاً یک برنامه در AutoHotkey ساخته اید؟ در اینجا نحوه ایجاد یک برنامه یادداشت برداری با استفاده از آن در ویندوز آورده شده است.
آیا به دنبال راه حلی برای یادداشت برداری سبک، فوق العاده سریع و با دسترسی آسان هستید؟ به صورت آنلاین جستجو کنید، پیشنهادات بی شماری برای چنین برنامه هایی خواهید یافت. و با این حال، حتی “سبک ترین” آن ها نیز اغلب درهم و برهم هستند و ممکن است دارای ویژگی هایی باشند که شما ممکن است شخصا آنها را بی فایده بدانید.
بنابراین، بیایید ببینیم چگونه میتوانید با استفاده از AutoHotkey، برنامه یادداشتبرداری سفارشی، فوقالعاده سبک، بسیار سریع و سفارشی خود را ایجاد کنید. یک راه حل ساده و بدون حاشیه برای یادداشت برداری که می تواند با یک فشار یک کلید فوراً روی صفحه نمایش شما ظاهر شود.
تنظیم برنامه ای برای یادداشت برداری با AutoHotkey
بیایید با بیان واضح هدف نهایی خود و طراحی یک برنامه ساده برای رسیدن به آن شروع کنیم.
برای این پروژه، ما نیازی به قالب بندی متن فانتزی، پشتیبانی از قالب ها یا سایر ویژگی های “پیشرفته” نداریم. هدف ما؟
- ما می خواهیم یک برنامه فوق العاده ساده ایجاد کنیم که با فشار دادن یک کلید میانبر روی صفحه نمایش ما ظاهر شود.
- این پنجره به ما امکان می دهد یادداشتی را یادداشت کنیم و آن را در یک فایل متنی/MarkDown ذخیره کنیم.
و این همه است—بدون پنجره، دیالوگ، منو، یا دکمه اضافی.
خوشبختانه، همانطور که در ادامه خواهیم دید، ساخت چنین پروژه ای با AutoHotkey آسان است. حتی اگر قبلاً از AutoHotkey استفاده نکردهاید، به راحتی آن را دنبال کنید. با این حال، بهتر است ابتدا راهنمای سریع AutoHotkey ما را برای مبتدیان بررسی کنید.
نحوه نصب AutoHotkey
از آنجایی که AutoHotkey یک راه حل شخص ثالث است، برای استفاده از آن، باید آن را نصب کنید.
بنابراین، به سایت رسمی AutoHotkey مراجعه کنید و روی دکمه سبز رنگ دوستی دانلود کلیک کنید. از هر دو نسخه V1 (منسوخ شده) و V2 (بتا) رد شوید و گزینه دانلود نسخه فعلی را انتخاب کنید. سپس، آن را بر روی کامپیوتر خود نصب کنید.
بعد از آن نمی توانید متوجه تغییری شوید زیرا AutoHotkey فقط به عنوان تجزیه کننده اسکریپت های AutoHotkey کار می کند. به عبارت دیگر، AutoHotkey به تنهایی “هیچ کاری” نمی کند. در عوض، بهعنوان پلتفرمی عمل میکند که اسکریپتی که در آینده میسازیم روی آن اجرا میشود.
نحوه ایجاد یک اسکریپت جدید در AutoHotkey
مدیر فایل مورد علاقه خود را باز کنید، مانند Windows File Explorer، و آن را به دایرکتوری که می خواهید اسکریپت جدید خود را در آن ایجاد کنید، قرار دهید. می توانید هر دایرکتوری را از دسکتاپ تا پوشه اسناد شخصی خود انتخاب کنید.
ساده ترین راه برای ایجاد یک اسکریپت AutoHotkey جدید استفاده از گزینه جدید موجود از طریق منوی زمینه کلیک راست پس از نصب AutoHotkey است. روی یک نقطه خالی از پنجره مدیر فایل کلیک راست کرده و از منوی ظاهر شده، گزینه New > AutoHotkey Script را انتخاب کنید.
از آنجایی که اسکریپت های AutoHotkey در واقع فایل های متنی ساده هستند، می توانید متناوباً یک فایل متنی جدید ایجاد کنید و سپس نام آن را تغییر دهید و پسوند آن را از TXT به AHK تغییر دهید. نتیجه نهایی یکسان خواهد بود: یک اسکریپت خالی جدید AutoHotkey خواهید داشت.
ویرایشگر متن یا کد مورد علاقه خود را فعال کنید و اسکریپت را در آنجا باز کنید تا آن را ویرایش کنید. برای این مقاله، از Notepad++ استفاده خواهیم کرد، اما میتوانید از هر ابزار مشابهی مانند VS Code یا Atom استفاده کنید.
البته، اگر ترجیح می دهید همه چیز را ساده نگه دارید، همیشه می توانید از Notepad خوب قدیمی همراه با ویندوز استفاده کنید.
ساخت یک رابط کاربری گرافیکی در AutoHotkey
برای سادهسازی سفارشیسازی آینده اسکریپت، اجازه دهید دو قطعه اطلاعات ضروری را در دو متغیر ذخیره کنیم.
- اولین مورد، که ما آن را NotesPath نامیدیم، به مسیر کاملی که میخواهیم اسکریپت ما یادداشتهایمان را ذخیره کند، نگاشت میشود. لطفاً به یاد داشته باشید که مسیر را به مسیری که می خواهید استفاده کنید تغییر دهید. در غیر این صورت، یادداشت های شما در یک نقطه غیرمنتظره ذخیره می شوند یا اسکریپت از کار می افتد.
- دومی که نام آن را FileNameExtra گذاشتیم، دارای رشته ای است که برای نام فایل یادداشت های خود استفاده می کنیم. نام فایل هر یادداشت برگرفته از یک نسخه پاکسازیشده عنوان آن و به دنبال آن این رشته خواهد بود.
می بایست شبیه به این باشه:
NotesPath = A:\00_Cloud_Storage\Dropbox\Notes\Obsidian\Duckland!Inbox
FileNameExtra = _MUOnote.md
معمولاً AutoHotkey برای تأثیرگذاری بر سایر پنجرهها استفاده میشود، همانطور که در مقاله ما در مورد نحوه وسط کردن هر پنجره روی صفحهنمایش با AutoHotkey یا برای ایجاد کلیدهای میانبر استفاده میشود، که میتوانید راهنمای ما در مورد ساخت کلیدهای میانبر مخصوص برنامه با AutoHotkey را بررسی کنید.
با این حال، در این سناریو، ما به قابلیتهای ایجاد رابط کاربری گرافیکی AutoHotkey که بسیاری از مردم آن را فراموش میکنند، بسیار تکیه خواهیم کرد. AutoHotkey به جعبه ابزار پنجره خود ویندوز ضربه می زند. این امکان ایجاد رابطهای کاربری گرافیکی را با تمام عناصر معمولی که انتظار دارید در یک پنجره سیستمعامل استاندارد پیدا کنید، از فیلدهای متنی و منوهای کشویی گرفته تا دکمهها و نوارهای اسکرول را ممکن میسازد.
خوشبختانه، از آنجایی که ما در حال ساختن یک برنامه یادداشت برداری ساده و “آدم” هستیم، این پروژه پیچیده نخواهد بود و بنابراین ساخت آن نسبتا آسان خواهد بود. رابط کاربری گرافیکی ما فقط از سه عنصر تشکیل شده است:
- یک جعبه متن برای عنوان یادداشت
- یکی دیگر برای محتوای یادداشت
- دکمه ای برای ذخیره یادداشت
ما حتی یک دکمه “لغو” اضافه نمی کنیم زیرا این عملکرد را به کلید Escape روی صفحه کلید و عمل بستن پنجره ترسیم می کنیم.
خط زیر را به اسکریپت خود اضافه کنید – اساساً به AutoHotkey “می گوید” که فونت در هر عنصری که در ادامه می آید باید “اندازه 14” و “رنگ 666666” باشد.
Gui, QN:Font, s14 c666666
بعد، خط زیر:
Gui, QN:Add, Edit, x5 y5 w550 h60 vTitle, Title - Filename
- … یک کادر متنی قابل ویرایش (“ویرایش”) را اضافه می کند…
- … در مختصات 5 پیکسل افقی و 5 پیکسل عمودی از لبه پنجره (“x5 y5”)…
- … با عرض 550 پیکسل و ارتفاع 60 پیکسل (“w550 h60”).
- هر چیزی که در آن تایپ می شود به متغیر Title (“vTitle”) نگاشت می شود…
- …و حاوی متن “عنوان – نام فایل” خواهد بود.
در مرحله بعد، بیایید اندازه فونت را به 12 و رنگ آن را به 4444444 برای هر عنصری که بعد از آن خط می آید تغییر دهیم.
سپس، یک کادر متن قابل ویرایش بزرگتر برای محتوای واقعی یادداشت اضافه کنید، آن را به متغیر Note نگاشت کنید، و آن را با هر چیزی که از قبل در کلیپ بورد وجود دارد، از قبل پر کنید.
در نهایت، یک دکمه در زیر دو جعبه متن و در پایین پنجره برنامه اضافه کنید که به عملکرد پیشفرض OK اسکریپت نگاشت شده است.
Gui, QN:Font, s12 c444444
Gui, QN:Add, Edit, x5 y70 w550 h600 vNote, %Clipboard%
Gui, QN:Add, Button, x5 y680 w550 h50, OK
ما یک رابط کاربری گرافیکی ایجاد کردهایم، اما برای نمایش آن به یک پنجره نیز نیاز داریم.
برای آن، خط زیر به AutoHotkey می گوید که یک پنجره با مختصات 0، 0 (افقی، عمودی)، با عرض 560 پیکسل و ارتفاع 735 پیکسل، به نام “MUONotes” ایجاد کند.
Gui, QN:Show, x0 y0 w560 h735, MUONotes
اسکریپت کامل تا کنون باید چیزی شبیه به زیر باشد:
NotesPath = A:\00_Cloud_Storage\Dropbox\Notes\Obsidian\Duckland!Inbox
FileNameExtra = _MUOnote.md Gui, QN:Font, s14 c666666
Gui, QN:Add, Edit, x5 y5 w550 h60 vTitle, Title - Filename
Gui, QN:Font, s12 c444444
Gui, QN:Add, Edit, x5 y70 w550 h600 vNote, %Clipboard%
Gui, QN:Add, Button, x5 y680 w550 h50, OK
Gui, QN:Show, x0 y0 w560 h735, MUONotes
وادار کردن دکمه ها به انجام کاری در AutoHotkey
رابط کاربری گرافیکی ما آماده است—شما می توانید با دوبار کلیک کردن بر روی اسکریپت خود آن را بررسی کنید.
همانطور که خواهید دید، ناحیه یادداشت اصلی با محتویات کلیپ بورد از قبل پر می شود. با این حال، خود برنامه بی فایده خواهد بود زیرا ما هنوز پشتیبانی برای ذخیره چیزی اضافه نکرده ایم.
با اضافه کردن موارد زیر به اسکریپت خود آن را برطرف کنید:
QNButtonOK:
FileEncoding, UTF-8-RAW
Gui, QN:Submit
TempClipboard = %ClipBoard%
ClipBoard = %Title%
gosub CleanText
FileName = %ClipBoard%
ClipBoard = %TempClipboard%
FinalFilename = %NotesPath%\%FileName%%FileNameExtra%
FileDelete, %FinalFileName%
FileAppend, %Note%, %FinalFileName%
return
بیایید آن را از هم جدا کنیم:
- «QNButtonOK:» بیان میکند که پس از کلیک کردن روی دکمه تأیید پیشفرض رابط کاربری گرافیکی، کاری که AutoHotkey «باید انجام دهد» است.
- خط “FileEncoding” کدگذاری فایل متنی ایجاد شده را تنظیم می کند.
- “Gui, GN:Submit” وضعیت هر عنصر رابط کاربری گرافیکی را می گیرد، به این معنی که هر چیزی را که در دو فیلد متنی تایپ شده است را نیز “قبض” می کند.
- سپس محتویات واقعی کلیپ بورد را به طور موقت در متغیر TempClipboard کپی می کنیم.
- ما کارهای بالا را انجام می دهیم زیرا می خواهیم عنوان یادداشت را در کلیپ بورد کپی کنیم، که به عنوان واسطه برای ارسال آن به تابعی که در ادامه اضافه خواهیم کرد استفاده می شود. این تابع متن را پاکسازی می کند، کاراکترهای غیر الفبایی را حذف می کند و به ما امکان می دهد از متن عنوان به عنوان نام فایل استفاده کنیم.
- تابع sanitization عنوان “clean” را به کلیپ بورد برمی گرداند، از جایی که آن را به متغیر FileName نگاشت می کنیم.
- سپس محتوای اصلی آن را از متغیر TempClipboard به کلیپ بورد برمی گردانیم.
- برای دریافت مسیر کامل و نام فایل فایل مورد نظر، متغیر FileName را که به تازگی مونتاژ شده است بین متغیرهای NotesPath و FileNameExtra “ساندویچ” می کنیم. به همین دلیل در ابتدای فیلمنامه آنها را تعریف کردیم.
- ما پیشگیرانه هر فایل قبلی با همان مسیر و نام فایل را حذف می کنیم.
- محتوای متغیر Note را به فایل FinalFileName اضافه می کنیم.
پاکسازی متن در AutoHotkey
عملکرد “عفونیسازی” که در بالا به آن اشاره کردیم به شرح زیر است:
CleanText: CleanMePlease = %ClipBoard%
CleanMePlease := Regexreplace(CleanMePlease, "a-zA-Z0-9", " ")
loop
{
StringReplace, CleanMePlease, CleanMePlease, %A_SPACE%%A_SPACE%, %A_SPACE%, all
if ErrorLevel <> 0
break
}
ClipBoard = %CleanMePlease%
Return
برای مرور خط به خط آن:
- “CleanText:” نام تابعی است که “شامل” اقدامات بعدی است.
- ابتدا محتوای کلیپ بورد را به متغیر CleanMePlease نگاشت می کنیم.
- ما از یک قانون RegEx برای حذف همه کاراکترهای غیر الفبایی از متغیر CleanMePlease استفاده می کنیم.
- از آنجایی که موارد بالا می توانند فضاهای دوگانه را معرفی کنند، از یک حلقه برای شانه زدن متغیر CleanMePlease یک بار دیگر استفاده می کنیم و آنها را با فاصله های تکی جایگزین می کنیم. این بیت با دو “%A_SPACE%”، به دنبال آن یک واحد و کلمه “همه” است.
- خط ErrorLevel به AutoHotkey میگوید که وقتی نمیتواند فضاهای دوتایی بیشتری را در متن پیدا کند، حلقه را بشکند.
- در نهایت، نسخه «sanitized» متغیر CleanMePlease را به کلیپ بورد برمی گردانیم.
انجام آخرین ترفندها در برنامه یادداشت برداری شما
اسکریپت یادداشت برداری شما آماده استفاده است، اما اگر آن را امتحان کنید، ممکن است پنجره آن ظاهر شود و فورا ناپدید شود. به این دلیل است که شما همچنین باید هر تابعی را که در آن تعریف کرده اید “برگردانید”.
بنابراین، کلمه “بازگشت” (بدون علامت نقل قول) را در زیر قرار دهید:
- بخش ایجاد کننده رابط کاربری گرافیکی از اسکریپت، در زیر خط رابط کاربری گرافیکی، “QN:Show…”.
- تابع “QNButtonOK”، در زیر خط نهایی “FileAppend…”.
- تابع CleanText، در زیر آخرین خط “ClipBoard =…”.
با این حال، اگر اکنون اسکریپت خود را اجرا کنید، خواهید دید که پس از استفاده از آن همچنان در سینی ویندوز باقی می ماند. برای بسته شدن برنامه و خروج کامل اسکریپت، موارد زیر را در آخر اضافه کنید:
QNGuiEscape:
QNGuiClose:
ExitApp
return
در نهایت، برای اینکه برنامه فوراً هر زمان که به آن نیاز داشتید اجرا شود، یک میانبر برای اسکریپت خود روی دسکتاپ خود ایجاد کنید. سپس بر روی آن راست کلیک کرده و Properties را انتخاب کرده و در قسمت کلید میانبر کلیک کرده و ترکیب دکمه مورد نظر خود را بزنید.
به خاطر ایجاد اولین برنامه خود در AutoHotkey تبریک می گویم
شاید در ابتدا شبیه یک پروژه پیچیده به نظر می رسید، اما همانطور که دیدیم، ایجاد یک برنامه یادداشت برداری “lite” بسیار ساده بود.
همه اینها به لطف سینتکس انسان پسند AutoHotkey و توانایی استفاده از عناصر مرتبط با رابط کاربری گرافیکی پیش فرض ویندوز است.