QuickText

[English](../../README.md) · [简体中文](../../README.zh.md) · [繁體中文](README.zh-Hant.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Italiano](README.it.md) · [Русский](README.ru.md) · [Tiếng Việt](README.vi.md) · **ไทย** · [Bahasa Indonesia](README.id.md) · [हिन्दी](README.hi.md) · [বাংলা](README.bn.md) · [العربية](README.ar.md) · [Türkçe](README.tr.md) # QuickText > ตัวจัดการข้อความสำเร็จรูปและตัวขยายข้อความประจำถาดระบบ Windows ![เรียกแผงขึ้นเหนือหน้าต่างใดก็ได้ พิมพ์ไม่กี่ตัวอักษร แล้วสนิปเปตจะไปอยู่ตรงเคอร์เซอร์](../images/quicktext-demo.webp) **เลิกพิมพ์เรื่องเดิมซ้ำสองรอบได้แล้ว** QuickText อยู่ในถาดระบบ (system tray) ของ Windows คอยเก็บข้อความที่คุณต้องหยิบมาใช้ครั้งแล้วครั้งเล่า — อีเมล ที่อยู่ ลายเซ็น เทมเพลต คำตอบสำเร็จรูป รูปภาพ — บันทึกไว้ครั้งเดียว จากนั้นใน**ช่องกรอกข้อความใดก็ได้** แค่กดปุ่มไม่กี่ครั้งหรือพิมพ์ตัวย่อ ข้อความก็จะไปวางตรงตำแหน่งเคอร์เซอร์ทันที รองรับหลายบรรทัด อักขระพิเศษ และอิโมจิ เก็บครบทุกตัวอักษรแบบเป๊ะ ๆ > ข้อความที่คุณใช้ซ้ำได้ อยู่ห่างแค่ไม่กี่ปุ่ม — วางลงตรงเคอร์เซอร์ทันที - WPF / .NET 10 เป็นไฟล์เดียวแบบพกพา (single-file portable exe) **ไม่ต้องมีบัญชี ออฟไลน์โดยค่าเริ่มต้น** — มีเพียงการตรวจหาอัปเดตแบบเลือกได้เท่านั้นที่เชื่อมต่อ GitHub - ข้อมูลเป็น **JSON แบบโลคัล** ในโฟลเดอร์ของคุณเอง — วางไว้ใน Dropbox / OneDrive / NAS เพื่อซิงก์ได้ - ธีมมืดและสว่าง (หรือตามระบบ Windows) **18 ภาษาของอินเทอร์เฟซ** (มีการสลับซ้าย-ขวาสำหรับภาษาอาหรับ) การตั้งค่ามีผลทันที **[⬇ ดาวน์โหลดเวอร์ชันล่าสุด](https://github.com/rockbenben/QuickText/releases/latest)** —— Windows x64 แบบพกพาไฟล์เดียว ไม่ได้เซ็นรับรองโค้ด ครั้งแรกที่เปิด SmartScreen จะเตือน: **More info → Run anyway** - `QuickText--win-x64.zip` — รวม .NET runtime มาให้แล้ว จึงรันบน Windows 10/11 x64 เครื่องไหนก็ได้โดยไม่ต้องติดตั้งอะไรเพิ่ม ถ้าไม่แน่ใจให้เลือกไฟล์นี้ เหมาะกับเครื่องในอินทราเน็ต เครื่องที่ไม่ต่อเน็ต หรือพกใส่ USB ไปใช้ที่อื่น - `QuickText--win-x64-needs-dotnet10.zip` — ต้องติดตั้ง [.NET 10 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/10.0) ไว้ก่อน เหมาะกับเครื่องของคุณเองที่ต่อเน็ตได้ ติดตั้งครั้งเดียว จากนั้นอัปเดตแต่ละครั้งดาวน์โหลดเพียงเล็กน้อย - `QuickText.exe` — บิลด์เดียวกันแต่ไม่ได้บีบอัด: คลิกแล้วรันได้เลย หรือเขียนทับไฟล์เดิมเพื่ออัปเดต ฟีเจอร์และข้อมูลเหมือนกันทุกอย่าง ต่างกันแค่ว่ารวม runtime มาด้วยหรือไม่ --- ## เหมาะกับสถานการณ์ไหนบ้าง ทุกที่ที่คุณต้อง**พิมพ์เรื่องเดิมซ้ำ ๆ บน Windows** มันอยู่ในถาดระบบและทำงานได้ในช่องกรอกข้อความทุกช่อง (หน้าต่างแชท ฟอร์มในเบราว์เซอร์ โปรแกรมแก้ไขข้อความ โปรแกรมอีเมล — ไม่ผูกกับแอปใดแอปหนึ่ง) มันคือ**ตัวจัดการสนิปเปตและตัวขยายข้อความในตัวเดียวกัน** พร้อมด้วยการค้นหาแบบพินอิน เทมเพลตตัวแปร และรูปภาพ | ใคร | เก็บอะไร | | ------------------------------- | -------------------------------------------------------------------------------------------------------- | | **ฝ่ายซัพพอร์ต / อีคอมเมิร์ซ** | คำตอบสำเร็จรูป คำตอบมาตรฐาน ข้อความโปรโมชัน คิวอาร์โค้ดหรือรูปสินค้า | | **ฝ่ายขาย / ธุรกิจ** | เทมเพลตอีเมล ประโยคเปิด ใบเสนอราคา ข้อความปิดท้าย | | **นักพัฒนา / ฝ่ายปฏิบัติการ** | คำสั่ง ค่าคอนฟิก JSON โค้ดสำเร็จรูป (`{...}` ส่งออกตามตัวอักษร ไม่มีการตีความ) | | **งานออฟฟิศ / กรอกฟอร์ม** | อีเมล ที่อยู่ เบอร์โทร เลขบัตรประชาชน เทมเพลตบันทึกการประชุม (จะถามค่าและจำค่าล่าสุดไว้) | | **ฝ่ายบุคคล / ธุรการ / กฎหมาย** | ประกาศต้อนรับพนักงานใหม่ การแจ้งเตือนมาตรฐาน ข้อความสงวนสิทธิ์ — โลคัล ออฟไลน์ เหมาะกับเนื้อหาที่อ่อนไหว | > **ก่อนเก็บข้อมูลอ่อนไหว** ข้อความย่อถูกบันทึกเป็น **JSON แบบข้อความธรรมดา** ไม่เข้ารหัสโดยตั้งใจ เพื่อให้คุณอ่าน เปรียบเทียบ และแก้ไฟล์เองได้ ใช้กับเทมเพลตและข้อความสำเร็จรูปบนเครื่องที่มีแต่คุณใช้ก็ไม่มีปัญหา แต่ก็แปลว่าเลขบัตรประจำตัวหรือรหัสผ่านที่ใส่ไว้ อ่านได้โดยทุกสิ่งที่อ่านไฟล์นั้นได้ รวมถึงโปรแกรมอื่นที่รันด้วยบัญชีของคุณ และผู้ให้บริการซิงก์หากคุณวางโฟลเดอร์ไว้ใน Dropbox / OneDrive ความลับจริง ๆ ให้ใช้โปรแกรมจัดการรหัสผ่าน แล้วปล่อยให้ QuickText เก็บเฉพาะข้อความที่วางไว้ให้เห็นก็ไม่เป็นไร ## ดูให้เข้าใจใน 30 วินาที ใน**ที่ใดก็ตามที่คุณพิมพ์ได้** — สมมติว่าคุณต้องใส่อีเมลของคุณในช่องแชท: 1. **เรียกออกมา** — กด `Ctrl+Shift+8` แผงจะปรากฏขึ้นเหนือหน้าต่างที่กำลังใช้งานอยู่ 2. **ค้นหา** — พิมพ์ตัวอักษรไม่กี่ตัว รายการที่ตรงจะถูกไฮไลต์ มันจับคู่จากชื่อ พินอิน (เต็ม + อักษรย่อ) ตัวย่อ และเนื้อหา 3. **กด Enter** — อีเมลจะถูกวาง**ตรงตำแหน่งที่เคอร์เซอร์อยู่** เสร็จเรียบร้อย > ไม่ต้องพิมพ์อะไรเลยก็เรียกดูตามหมวดหมู่ได้ โดยมี `Recent` / `Favorites` ปักหมุดไว้ด้านบน รายการที่คุณใช้บ่อยที่สุดจะ**ลอยขึ้นไปด้านบน**โดยอัตโนมัติ > `↑↓` เลื่อน · `←→` สลับหมวดหมู่ · `Alt+1–9` เลือกด่วน · ดับเบิลคลิกเพื่อส่ง · `Esc` เพื่อปิด ## สามวิธีในการเรียกใช้ — เลือกแบบที่เหมาะกับคุณ คลังเดียวกัน ดึงมาใช้ได้สามวิธี ผสมกันได้ตามใจ: | วิธี | เรียกใช้อย่างไร | เหมาะกับ | | --------------------- | -------------------------------------------------------- | -------------------------------------------------- | | 🔍 **ค้นหาผ่านแผง** | `Ctrl+Shift+8` → พิมพ์ → Enter | สนิปเปตจำนวนมาก ใช้เป็นครั้งคราว เรียกดูเพื่อเลือก | | ⌨️ **ตัวย่อในบรรทัด** | แค่พิมพ์ `;sig` แล้วกด Space / Tab / Enter | วลีตายตัวที่ใช้บ่อย ไม่ต้องเปิดแผง | | 🧩 **เทมเพลตตัวแปร** | ดึงสนิปเปตที่มี `{variables}` ผ่านวิธีใดวิธีหนึ่งข้างต้น | อีเมล / ฟอร์ม: เทมเพลตเดียว เปลี่ยนแค่ไม่กี่คำ | - **รูปภาพก็ได้เช่นกัน**: เพิ่มจากคลิปบอร์ดหรือไฟล์ ส่งแล้ววางเป็นรูปภาพ รูปภาพก็มีตัวย่อได้ พิมพ์ตัวย่อแล้วได้รูปมาเลย (คิวอาร์โค้ด ลายเซ็นโลโก้) - **การส่งออกต่อสนิปเปต**: วลีแชทจะส่งอัตโนมัติหลังวาง ส่วนสนิปเปตโค้ดจะไม่ส่งเด็ดขาด — ไม่ก่อกวนกัน รายละเอียดเต็มเรื่องตัวย่อและตัวแปรอยู่ใน **รายละเอียด** ด้านล่าง — ในหัวข้อ **ตัวแทนค่า (Placeholders)** และ **ตัวย่อ (Abbreviations)** --- **รายละเอียด** ## ใช้งานได้ทันทีตั้งแต่แรก ดับเบิลคลิก **`QuickText.exe`** มันจะไปอยู่ใน**ถาดระบบ** (ไม่มีปุ่มบนแถบงาน) เมื่อ**เปิดครั้งแรก** มันจะ: - ใส่**คลังเริ่มต้น**ขนาดเล็กให้ (สองหมวดหมู่ ตาม**ภาษาอินเทอร์เฟซ**ของคุณ) เพื่อให้คุณลองใช้ได้ทันที - แสดงบอลลูนพร้อมปุ่มลัดเรียกใช้ — ค่าเริ่มต้นคือ **`Ctrl+Shift+8`** > ไอคอนมุมขวาบนของแผง: **+ สร้างใหม่** · **ตัวจัดการ** (เปิดตัวแก้ไข) · **ตั้งค่า** · **📌 ปักหมุด** (คงแผงเปิดไว้หลังส่ง เพื่อยิงติด ๆ กันหลายรายการ) กระโดดไปที่ตัวจัดการ / ตั้งค่าได้เลยโดยไม่ต้องกลับไปที่ถาดระบบ ## เพิ่ม / แก้ไขข้อความของคุณ ![ตัวจัดการ: หมวดหมู่ด้านซ้าย สนิปเปตตรงกลาง ตัวแก้ไขด้านขวา](../images/quicktext-manager.webp) - **ถาดระบบ → เปิดตัวจัดการ** — ตัวแก้ไขแบบเต็ม: หมวดหมู่อยู่ทางซ้าย สนิปเปตอยู่ทางขวา ตัวแก้ไขอยู่ด้านล่าง เพิ่ม/เปลี่ยนชื่อ/ลบหมวดหมู่ (พร้อมป้ายสี **7 สี**) แก้ไขสนิปเปต (ชื่อ ตัวย่อ เนื้อหา รูปภาพ) ลากเพื่อจัดลำดับใหม่หรือย้ายข้ามหมวดหมู่ `Ctrl+Z` เพื่อเลิกทำการลบ - **ถาดระบบ → สร้างใหม่จากคลิปบอร์ด** — สร้างสนิปเปตใหม่จากคลิปบอร์ดปัจจุบันและเปิดในตัวจัดการเพื่อทำให้เสร็จ (กด**บันทึก**เพื่อเขียนลงดิสก์ ปิดตัวจัดการจะถามว่าจะบันทึกหรือไม่บันทึก) - **สร้างในแผง** — พิมพ์เนื้อหาในช่องค้นหาแล้วกด `Ctrl+N` เพื่อบันทึกเป็นรายการใหม่ (ข้อความนั้นจะกลายเป็นเนื้อหา; `@หมวด …` จะจัดเก็บไว้ในหมวดนั้น) และกระโดดไปที่ตัวจัดการเพื่อทำให้เสร็จ (`Ctrl+E` แก้ไขรายการที่เลือก) > **ข้อความยาว / โค้ด**: ปุ่ม `⤢` เหนือเนื้อหาจะเปิดตัวแก้ไขแบบเกือบเต็มจอ (หรือกด `Ctrl+Shift+Enter` ในเนื้อหาก็ได้) กด `Esc` หรือ "เสร็จสิ้น" เพื่อจบการแก้ไข หากมีการเปลี่ยนแปลงจะถามก่อนว่าจะบันทึกหรือทิ้ง เมื่อติ๊ก "เปิดใช้ตัวแทนค่า {variable}" โทเคนจะ**ถูกไล่สีตามประเภท** — ตัวแปรเป็นสีฟ้าอมเขียว โทเคนอัตโนมัติอย่าง `{date}` เป็นสีอำพัน `{snippet:x}` เป็นสีม่วง `{cursor}` เป็นเส้นประสีฟ้าอมเขียว — ส่วนชื่อสนิปเปตที่พิมพ์ผิด รูปแบบวันที่ไม่ถูกต้อง หรือวงเล็บปีกกาที่ไม่ปิด จะมี**เส้นหยักสีแดง**ให้ชี้เมาส์ดูเหตุผลได้ ทั้งหมดนี้จะถูกวาง**ตามตัวอักษรเป๊ะ ๆ**ตอนส่ง ซึ่งแต่ก่อนจะรู้ได้ก็ต่อเมื่อวางผิดไปแล้วเท่านั้น การชี้เมาส์ที่โทเคนวันที่ยังแสดงตัวอย่างค่าที่คำนวณได้ด้วย สำหรับโค้ด ให้ปล่อยกล่องกาเครื่องหมายไว้แบบไม่ติ๊ก: การไฮไลต์จะถูกปิดทั้งหมด ทำให้เนื้อหาที่เต็มไปด้วย `{}` ยังคงเงียบสงบ และแถบสถานะจะบอกแค่จำนวนโทเคนที่จะถูกส่งออกตามเดิม นอกจากนี้ยังมี: **Enter จะคงการเยื้องบรรทัดไว้** และ **`Tab` จะเยื้องบรรทัดทั้งหมดที่เลือกไว้หลายบรรทัด** > > หน้าต่างขยายใหญ่**แสดงเลขบรรทัดเสมอ** และแถบท้ายหน้าต่างมีตัวเลือก**รูปแบบโค้ด** — JSON, YAML, XML, HTML, Markdown, SQL, Python, JavaScript/TypeScript, C#, Java, PowerShell, Shell และ INI รวม 13 แบบ — ซึ่งจะไฮไลต์ไวยากรณ์ให้กับเนื้อหาและจดจำไว้ต่อสนิปเปต **ข้อความที่บันทึกไว้ยังคงเป็นข้อความธรรมดา และสิ่งที่วางออกไปก็ไม่เปลี่ยนแปลง** การไฮไลต์ตัวแทนค่าจะระบายสีพื้นหลัง ส่วนการไฮไลต์ไวยากรณ์จะระบายสีตัวอักษรเอง ทั้งสองจึงไม่ชนกัน: เนื้อหา JSON ที่มี `{variables}` อยู่ด้วยจะแสดงทั้งโครงสร้างและตัวแปรพร้อมกัน ## ตัวแทนค่า (เทมเพลตเดียว หลายสถานการณ์) · เปิดใช้ทีละสนิปเปต ตัวแทนค่าเป็น**สวิตช์ประจำสนิปเปต**: ติ๊ก "**เปิดใช้ตัวแทนค่า {variable}**" ในตัวแก้ไขของตัวจัดการ แล้วโทเคนด้านล่างจะถูกแปลงค่าตอนส่ง ส่วน**ถ้าไม่ติ๊ก (ค่าเริ่มต้น) เนื้อหาจะถูกส่งตามตัวอักษร** — โค้ด สคริปต์ และ JSON ที่เต็มไปด้วย `{...}` ตามตัวอักษรจะไม่ถูกตีความผิดหรือถูกถามค่า > การอัปเกรด: เดิมทีตัวแทนค่าเปิดใช้อยู่ตลอด การเปิดครั้งแรกหลังอัปเกรดจะติ๊กสวิตช์ให้โดยอัตโนมัติสำหรับ**สนิปเปตที่มีอยู่เดิม**ที่เนื้อหามี `{...}` ดังนั้นพฤติกรรมจะไม่เปลี่ยน ให้เอาติ๊กออกในตัวจัดการสำหรับรายการที่เป็นโค้ดจริง ๆ เมื่อเปิดใช้ ตัวแทนค่าเหล่านี้จะถูกแปลงค่าตอนส่ง: | ตัวแทนค่า | ทำอะไร | | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{name}` (ป้ายชื่อใดก็ได้) | **ถามให้คุณกรอก**ก่อนวาง และ**จำค่าล่าสุดของคุณ**ไว้ เพื่อไม่ต้องถามซ้ำ | | `{name:John}` | ตัวแปรที่มี**ค่าเริ่มต้น** กรอกไว้ล่วงหน้าในกล่องถาม | | `{env\|dev\|test\|prod}` | ตัวแปรที่มี**ตัวเลือก** — กล่องถามจะแสดงดรอปดาวน์ (ตัวเลือกแรกทำหน้าที่เป็นค่าเริ่มต้นด้วย และยังพิมพ์ได้อิสระ) | | `{clipboard}` | แทรกเนื้อหาคลิปบอร์ดปัจจุบัน | | `{cursor}` | ทิ้งเคอร์เซอร์ไว้ตรงจุดนี้หลังวาง (และระงับการกด Enter อัตโนมัติด้วย) | | `{date}` `{time}` `{datetime}` | แทรกวันที่/เวลาปัจจุบัน รองรับการเลื่อนค่าเช่น `{date+7}` (อีก 7 วันข้างหน้า) และรูปแบบกำหนดเองเช่น `{date=yyyy-MM-dd}` / `{time=HH:mm:ss}` ใช้ร่วมกับการเลื่อนค่าได้ `{date+7=MM-dd}` ชื่อพ้องภาษาจีน `{日期}` / `{时间}` / `{日期时间}` ก็ใช้ได้ | | `{uuid}` `{random}` | ค่าสุ่ม: UUID / เลข 6 หลัก สร้างใหม่ทุกครั้งที่ปรากฏ | | `{snippet:name}` | **แทรกเนื้อหาของสนิปเปตอื่นในบรรทัด** (ลึกได้ 3 ชั้น ปลอดวงวน) — เก็บลายเซ็นที่ใช้ร่วมกันไว้ในที่เดียว | ตัวอย่าง: ลายเซ็น `Best regards,\n{name}` (โดยเปิดใช้ตัวแทนค่า) → จะถามชื่อตอนส่ง → วางลายเซ็นที่เสร็จสมบูรณ์ ## ตัวย่อ (ขยายขณะพิมพ์ ไม่ต้องเปิดแผง) · ทางเลือก กำหนด**ตัวย่อ**ให้สนิปเปตเพื่อขยายมันได้โดยตรงในช่องกรอกข้อความใดก็ได้ **คำนำหน้าทริกเกอร์**ตั้งครั้งเดียวในการตั้งค่า (ค่าเริ่มต้น `;`): 1. ในตัวจัดการ ให้พิมพ์แค่**ตัวย่อเอง** — เช่น `sig` สำหรับลายเซ็น คำนำหน้าจะถูกเติมให้อัตโนมัติ (อย่าพิมพ์ซ้ำ) ช่องกรอกจะแสดงคำนำหน้าปัจจุบัน `;` ไว้ข้างหน้า 2. ในช่องกรอกข้อความใดก็ได้ พิมพ์ **`;sig`** (= คำนำหน้า + ตัวย่อ) แล้วกด **Space / Tab / Enter** → มันจะลบ `;sig` แล้วขยายเป็นเนื้อหา (`{placeholder}` จะถามก่อนถ้าสนิปเปตนั้นเปิดใช้ตัวแทนค่า) 3. **พิมพ์ผิด?** กด **Backspace ทันทีหลัง**การขยายเพื่อย้อนกลับไปเป็น `;sig` (หน้าต่างเดิม ภายใน 5 วินาที) รายละเอียด: การจับคู่**ไม่สนตัวพิมพ์ใหญ่-เล็ก** (`;SIG` ก็ทำงานเมื่อเปิด CapsLock อยู่) ตัวย่อที่พิมพ์ผิดแล้วแก้ด้วย Backspace ก็ยังขยายได้ สนิปเปตสองรายการที่ใช้ตัวย่อเดียวกันจะได้รับ**คำเตือนในบรรทัด**ในตัวจัดการ และเมนูถาดระบบมีปุ่มสลับ **“หยุดการขยายชั่วคราว”** แบบคลิกเดียว (สำหรับการสาธิต/เล่นเกม) > **เกี่ยวกับคำนำหน้า:** คำนำหน้า (ค่าเริ่มต้น `;`) ช่วยกันไม่ให้การพิมพ์ปกติ / พินอินไปทริกเกอร์ตัวย่อเปล่า ๆ โดยไม่ตั้งใจ เปลี่ยนได้ที่ **ตั้งค่า → ตัวย่อ → คำนำหน้าทริกเกอร์** (เป็น `,`, `:`, …) หรือ**เว้นว่างไว้**ก็ได้ ตัวย่อที่มีคำนำหน้าจะแบ่งขอบเขตในตัวเองและทำงานได้แม้ติดกับข้อความก่อนหน้า (เช่น `thx;sig`) ส่วนแบบไม่มีคำนำหน้าจะทำงานเฉพาะเมื่อเป็นคำของมันเองเท่านั้น (ไม่ทำงานในฐานะหางของคำที่ยาวกว่าอย่าง `graf`) คุณยังปิดการใช้ตัวย่อเป็นรายแอปได้ (บัญชีดำ เช่น `cmd.exe; putty.exe`) หรือปิดทั้งหมดเลยก็ได้ ## การส่งออก & การตั้งค่าทั่วไป (ถาดระบบ → ตั้งค่า) - **การส่งออก** — ค่าเริ่มต้นคือ “วางลงในแอปที่กำลังใช้งาน” หรือ “คัดลอกไปคลิปบอร์ดเท่านั้น” (คุณวางเองด้วย `Ctrl+V`) ตัวเลือกเสริม: กด Enter หลังวาง คลิกเดียวเพื่อส่ง “คงคลิปบอร์ดของฉันไว้” (การกู้คืนปิดไว้โดยค่าเริ่มต้น — แอปที่อ่านคลิปบอร์ดช้าอาจวางเนื้อหาเก่าออกมาแทน) **แต่ละสนิปเปตแทนที่ค่านี้ได้** (ตัวจัดการ → การส่งออก: ตามค่าส่วนกลาง / วาง / วาง + Enter / คัดลอกเท่านั้น) — วลีแชทส่งอัตโนมัติ ส่วนสนิปเปตโค้ดไม่ส่งเด็ดขาด - **ตำแหน่งแผง** — ตามหน้าต่างที่ใช้งานอยู่ (ค่าเริ่มต้น) / ตามเคอร์เซอร์ข้อความ / จำตำแหน่งล่าสุด - **วิธีเรียกออกมา (เลือกหนึ่ง)** — ① **ปุ่มผสม**: คลิกที่ช่องแล้วกดปุ่มใหม่ (ปุ่มธรรมดาต้องใช้ร่วมกับ `Ctrl`/`Alt`/`Shift`/`Win` ส่วนปุ่มฟังก์ชัน **`F1`–`F24` ใช้เดี่ยว ๆ ได้**) หรือ ② **แตะปุ่มโมดิไฟเออร์**: **แตะครั้งเดียวหรือสองครั้งที่ปุ่มโมดิไฟเออร์หนึ่งปุ่ม** (เช่น `Ctrl` ขวา `Shift` ขวา) เพื่อเรียก (ปุ่มโมดิไฟเออร์เดี่ยวเป็นปุ่มลัดปกติไม่ได้ จึงตรวจจับด้วยการแตะ) การเลือกแบบแตะจะปิดปุ่มผสม — ทั้งสองใช้ร่วมกันไม่ได้ จึงชัดเจนเสมอว่าแบบไหนกำลังทำงานอยู่ - **ปุ่มลัดจับภาพ** — ปุ่มผสมชุดที่สองแบบทางเลือกที่**บันทึกคลิปบอร์ดเป็นสนิปเปตใหม่แบบเงียบ ๆ** (มีบอลลูนแจ้ง ไม่มีหน้าต่าง) - **โฟลเดอร์ข้อมูล** — ชี้ไปที่ไดรฟ์ซิงก์ **ส่งออก / นำเข้าข้อมูลสำรอง** (zip ตรวจสอบความถูกต้อง พร้อมยืนยันการเขียนทับ) **สำรองข้อมูลอัตโนมัติ**รายวันไว้ในเครื่องนี้ (เก็บ 10 ชุดล่าสุด เข้าถึงโฟลเดอร์ได้ด้วยคลิกเดียว) - **ภาษา** — **18 ภาษา**: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Português · Français · Deutsch · Italiano · Русский · Tiếng Việt · ไทย · Bahasa Indonesia · हिन्दी · বাংলা · العربية (RTL) · Türkçe สลับได้ทันที มีตัวเลือก **เริ่มพร้อม Windows** ด้วย - **ธีม** — มืด (ค่าเริ่มต้น) / สว่าง / ตามระบบ Windows มีผลทันทีที่เลือก ไม่ต้องเริ่มโปรแกรมใหม่ - **ตรวจหาอัปเดต** — ปิดโดยค่าเริ่มต้น; เมื่อเปิด จะเชื่อมต่อ GitHub หนึ่งครั้งตอนเริ่มโปรแกรมเพื่อตรวจหาเวอร์ชันใหม่ (การออนไลน์เพียงครั้งเดียวของแอป) กด «ตรวจสอบตอนนี้» เพื่อสั่งเอง ## สรุปปุ่มลัดบนคีย์บอร์ด | การกระทำ | ปุ่ม | | -------------------------------- | ----------------------------------------------------- | | เรียก / ปิดแผง | `Ctrl+Shift+8` (ตั้งค่าได้) / `Esc` | | เลือก / สลับหมวดหมู่ / เลือกด่วน | `↑↓` / `←→` / `Alt+1–9` | | ส่ง | `Enter` หรือดับเบิลคลิก (คลิกเดียวเป็นทางเลือก) | | เพิ่ม / เอาออกจากรายการโปรด | `Ctrl+D` | | สร้าง / แก้ไขในแผง | `Ctrl+N` / `Ctrl+E` | | เลิกทำการลบ (ตัวจัดการ) | `Ctrl+Z` | | ตัวย่อ: ทริกเกอร์ / เลิกทำ | พิมพ์ตัวย่อ + Space·Tab·Enter / Backspace หลังการขยาย | --- ## ภาพรวมคุณสมบัติ - **การเรียก**: ปุ่มลัดส่วนกลาง — **ปุ่มผสม** (ปุ่มฟังก์ชันใช้เป็นปุ่มเดี่ยวได้) หรือ **แตะครั้งเดียว/สองครั้งที่ปุ่มโมดิไฟเออร์** (เช่น Ctrl ขวา) **เลือกหนึ่ง** แผงตามหน้าต่างที่ใช้งานอยู่ / เคอร์เซอร์ข้อความ / ตำแหน่งที่จำไว้ ปุ่มแถวบนกระโดดไป **สร้างใหม่ / ตัวจัดการ / ตั้งค่า** ปักหมุดเพื่อส่งติด ๆ กันหลายรายการ ลากและปรับขนาดได้พร้อมจำขนาดไว้ - **การค้นหา**: ชื่อ / พินอิน / อักษรย่อ / ตัวย่อ / เนื้อหา พร้อมไฮไลต์ **ตัดสินกรณีเสมอด้วยความถี่การใช้งาน (frecency)** `@category keywords` จำกัดขอบเขตการค้นหาไว้ในหมวดหมู่เดียว (`@category` เปล่า ๆ คือเรียกดูหมวดนั้น) - **เนื้อหา**: ข้อความธรรมดา (หลายบรรทัด อักขระพิเศษ อิโมจิ ไม่เพี้ยน) ตัวแทนค่า (ค่าเริ่มต้น / ดรอปดาวน์ตัวเลือก / การซ้อนสนิปเปต / รูปแบบวันที่กำหนดเอง / uuid / random — **เปิดใช้ทีละสนิปเปต**) **รูปภาพ** (จากคลิปบอร์ดหรือไฟล์ ส่งแล้ววางเป็นรูปภาพ **รูปภาพก็มีตัวย่อได้เช่นกัน** — พิมพ์ตัวย่อ ได้รูปมา) - **ตัวย่อ**: ทริกเกอร์ด้วยตัวปิดท้าย ถามค่าตัวแปร เลิกทำได้ด้วยปุ่มเดียว แก้ไขคำผิดด้วย Backspace ไม่สนตัวพิมพ์ใหญ่-เล็ก การคลิกจะตัดโทเคน คำเตือนตัวย่อซ้ำ บัญชีดำรายแอป **หยุดชั่วคราวจากถาดระบบด้วยคลิกเดียว** - **การส่งออก**: วางโดยตรง / คัดลอกเท่านั้น มีตัวเลือกกด Enter อัตโนมัติ กู้คืนคลิปบอร์ด ส่งด้วยคลิกเดียว **แทนที่การส่งออกทีละสนิปเปตได้** ปุ่มลัดจับภาพ (คลิปบอร์ด → สนิปเปตในกดครั้งเดียว) - **ตัวจัดการ**: **ตัวแก้ไขเนื้อหาแบบกว้างขวาง** (`⤢ ขยาย` เปิดในหน้าต่างของตัวเอง การเปลี่ยนแปลงที่ยังไม่ได้บันทึกจะถูกถามเสมอ — ทั้งตอนปิดหน้าต่าง และตอนสลับไปรายการอื่น) **การไฮไลต์ตัวแทนค่า** (ไล่สีตามประเภท การอ้างอิงสนิปเปตที่ไม่มีอยู่จริง / รูปแบบวันที่ไม่ถูกต้อง / วงเล็บปีกกาที่ไม่ปิด จะถูกขีดเส้นหยักสีแดงพร้อมเหตุผลเมื่อชี้เมาส์ ไม่มีการไฮไลต์เลยเมื่อปิดตัวแทนค่า โดยแถบสถานะจะบอกแทน) **เป็นมิตรกับโค้ด** (หน้าต่างขยายใหญ่แสดงเลขบรรทัดเสมอและมีรูปแบบโค้ดให้เลือก 13 แบบสำหรับไฮไลต์ไวยากรณ์ Enter คงการเยื้องบรรทัดไว้ `Tab` เยื้องบรรทัดที่เลือกไว้หลายบรรทัด โหมดไม่ตัดบรรทัด) ป้ายสีหมวดหมู่ 7 สี ลากจัดลำดับใหม่ / ย้าย **เลือกหลายรายการเพื่อย้าย / ลบเป็นชุด** (เลือกด้วย Ctrl / Shift แล้วคลิกขวา) เลิกทำการลบ **ถังขยะ (กู้คืนได้ 30 วัน พร้อมพรีวิวเนื้อหา)** คำเตือนตัวย่อซ้ำ สถิติการใช้งาน การแจ้งเตือนการบันทึก - **ข้อมูล**: JSON แบบโลคัล โหลดใหม่ทันที (รวมการแก้ไขจากภายนอก / ซิงก์อัตโนมัติ) แจ้งเตือนความขัดแย้งของการซิงก์ ส่งออก / นำเข้าข้อมูลสำรอง **สำรองข้อมูลอัตโนมัติรายวัน (เก็บ 10 ชุด)** เริ่มพร้อม Windows - **การแปลภาษา**: **18 ภาษาของอินเทอร์เฟซ** (จีนตัวย่อ / ตัวเต็ม, English, 日本語, 한국어, Español, Français, Deutsch, Русский, العربية …) พร้อม**การสลับซ้าย-ขวาสำหรับภาษาอาหรับ** สลับได้สดในการตั้งค่า ธีมมืดและสว่าง (หรือตามระบบ Windows) เปลี่ยนได้ทันทีเช่นกัน - **ความทนทาน**: อินสแตนซ์เดียว (การเปิดครั้งที่สองจะเรียกแผงค้นหาแทนที่จะติดตั้งฮุกซ้ำ) CI รันการทดสอบพร้อมการตรวจสอบหน้าต่างแบบ smoke-check ทุกครั้งที่ push และเผยแพร่บิลด์แบบไฟล์เดียวทั้งสองแบบเมื่อมีแท็ก `v*` ## ข้อมูล & การซิงก์ โฟลเดอร์ข้อมูล (ค่าเริ่มต้น `Documents\QuickText` เปลี่ยนได้ในการตั้งค่า ชี้ไปที่ไดรฟ์ซิงก์ได้): ```text / ├─ index.json # category order + each category's file name and color ├─ .json # the snippets in that category (Snippet[]) ├─ trash.json # soft-deleted snippets (auto-purged after 30 days) └─ images/ # image files for image snippets ``` - `Snippet`: `{ id, name, abbr, body, useVariables, outputMode, imagePath?, updatedAt }` - **การเขียนแบบอะตอมิก** (`*.tmp` → `File.Replace`) เพื่อไม่ให้การซิงก์อ่านไฟล์ที่เขียนไม่เสร็จ มี `FileSystemWatcher` โหลดใหม่ทันที (รวมเหตุการณ์) พร้อมตัวป้องกันการเขียนของตัวเอง - สถานะเฉพาะเครื่องจะอยู่**นอกโฟลเดอร์ซิงก์**: การตั้งค่าอยู่ที่ `%APPDATA%\QuickText\settings.json` จำนวนการใช้ / รายการโปรดอยู่ที่ `%APPDATA%\QuickText\usage.stats` (พวกมันเปลี่ยนทุกครั้งที่ส่งและจะขัดแย้งกันข้ามเครื่อง) การสำรองข้อมูลอัตโนมัติรายวันอยู่ที่ `%APPDATA%\QuickText\backups\` - **โหมดพกพา** (ไร้ร่องรอย / USB): เปิดที่ **ตั้งค่า → ข้อมูล → โหมดพกพา** — มันจะวางไฟล์เครื่องหมาย `QuickText.portable` ไว้ข้าง ๆ `QuickText.exe` และ**มีผลเมื่อรีสตาร์ตครั้งถัดไป** (การเริ่มโหมดพกพาครั้งแรกจะพาการตั้งค่าและข้อมูลการใช้งานของคุณข้ามไปด้วย คุณจึงไม่ต้องตั้งค่าใหม่) การตั้งค่า ข้อมูลการใช้ การสำรองข้อมูล และคลังเริ่มต้นจะไปอยู่ใต้ `\Data\` แทนที่จะเป็น `%APPDATA%` / Documents และ "เริ่มพร้อม Windows" จะใช้ทางลัดในโฟลเดอร์ Startup แทนรีจิสทรี — ดังนั้นเครื่องมือทั้งชุดพกไปในแฟลชไดรฟ์ได้และไม่ทิ้งอะไรไว้ในเครื่องปลายทาง แอปต้องอยู่ในตำแหน่งที่เขียนได้ (แฟลชไดรฟ์ USB ไม่ใช่ `Program Files`) ส่วน**คลังข้อความย้ายด้วยการส่งออก / นำเข้าข้อมูลสำรอง** การเริ่มพร้อม Windows ถูกติดตามแยกตามโหมด ดังนั้นให้ติ๊กใหม่ในโหมดใหม่หลังสลับหากคุณต้องการ ปล่อยไว้ปิดสำหรับเลย์เอาต์แบบติดตั้งข้างต้น (เป็นตัวเลือกที่ถูกต้องเมื่อโฟลเดอร์ข้อมูลเป็นไดรฟ์ซิงก์)
_(มันต้องเป็นไฟล์เครื่องหมาย ไม่ใช่การตั้งค่าธรรมดา — เพราะมันตัดสินว่า `settings.json` เองจะอยู่ที่ไหน สวิตช์นี้จึงมีผลเมื่อเริ่มครั้งถัดไปเท่านั้น ไม่รบกวนเซสชันปัจจุบัน)_ ## แบรนด์ ทรัพยากรอยู่ใน `assets/branding/`: `quicktext-mark.svg` (หลัก), `quicktext-mark-mono.svg` (โมโนโครม), `quicktext.ico` (16–256, ไอคอนแอป / ถาดระบบ), `quicktext-256.png`, `quicktext-social.png` (1200×630 og:image), `quicktext-social-2x.png` (2400×1260 @2x), `brand.html` (ชีตแบรนด์) โลโก้เป็น**เคอร์เซอร์ I-beam ของข้อความ** บนกระเบื้องสีมิ้นต์ ข้าง ๆ บล็อกสีอำพันของข้อความที่เพิ่งวางลง — “text▮” นั่นคือการวางข้อความของคุณลงตรงเคอร์เซอร์ ชุดสี “terminal dusk”: มิ้นต์ (สีเน้นของแอป `#3DC2A0`) + อำพัน `#F2B457` บนหมึกโทนเขียวน้ำเงิน เวิร์ดมาร์กแบบซานส์จับคู่กับฟอนต์โมโน Cascadia Code ## สถาปัตยกรรม Core บริสุทธิ์ (ไม่มี Win32 ทดสอบยูนิตได้) แยกออกจาก Win32/UI | โปรเจกต์ | เนื้อหา | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `src/QuickText.Core` | `Models`, `Persistence` (`Store`, `UsageStore`, `JsonConfig`), `Search` (`SearchIndex`), `Abbr` (`AbbrMatcher`), `Snippets` (`Placeholders`), `Pinyin`, `Settings`, `Localization` (.resx, 18 ภาษา) | | `src/QuickText.App` | WPF UI (`SearchPanel` / `ManagerWindow` / `SettingsWindow` / `AppDialog` / `VariablesDialog`), `Ui/Theme.xaml` (ธีมมืด), `Interop` (`GlobalHotkey`, `KeyboardHook`, `PasteEngine`, `Autostart`, `NativeMethods`) | | `tests/QuickText.Core.Tests` | การทดสอบยูนิตของ Core (xUnit) | ## สร้าง & รัน ```bash dotnet build QuickText.sln -c Debug dotnet test tests/QuickText.Core.Tests/QuickText.Core.Tests.csproj dotnet run --project src/QuickText.App # or run QuickText.exe under bin ``` เผยแพร่บิลด์แบบพกพาไฟล์เดียว (win-x64): ```bash dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64 dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64-needs-dotnet10 ``` ต้องใช้ .NET 10 SDK เฉพาะ Windows เท่านั้น (Win32 global hotkey / keyboard hook / clipboard) ## สัญญาอนุญาต [MIT License](../../LICENSE) · ลิขสิทธิ์ © 2026 rockbenben ใช้ ดัดแปลง และแจกจ่ายได้อย่างเสรี ## เกี่ยวกับโครงการ 365 Open Source โปรเจกต์ **#023** ของ[โครงการ 365 Open Source](https://github.com/rockbenben/365opensource) — หนึ่งคน + AI, มากกว่า 300 โปรเจกต์โอเพนซอร์สในหนึ่งปี [ส่งไอเดียของคุณ →](https://365.aishort.top/) · [Discord](https://discord.gg/PZTQfJ4GjX) · [Telegram](https://t.me/aishort_top)