Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Tự động hóa một số tác vụ (gõ phím) sử dụng C++
Đặt vấn đề
mình đang phải đọc một quyển ebook tiếng anh, khổ nỗi tiếng anh thì có hạn. Vì vậy mình thường xuyên phải alt+tab giữa ebook vs google translate để dịch.
Mỗi lần dịch một từ, mình phải làm như sau
- bôi đen
- ctrl+c
- alt+tab
- ctrl+a
- ctrl+v
- alt+tab
vừa mất thời gian, vừa mỏi tay. mình đành lên gg search một vòng xem có cách nào tối ưu cái công đoạn trên ko. tìm mãi mới có một cách chạy được, node vào đây cho đỡ quên
mình dùng linux, chương trình viết bằng C++
Bắt đầu
Đầu tiên, làm quen với công cụ xdotool. Nói chung chung nó là công cụ giúp mình giả lập các tín hiệu bàn phím, chuột thông qua terminal. Ví dụ, muốn tăng âm lượng, trên terminal, các bạn gõ lệnh
$ xdotool key XF86AudioRaiseVolume
hướng dẫn cài đặt và sử dụng ở đây
tra cứu key các bạn xem ở đây
Tiếp theo, các bạn viết chương trình C++
Hàm kbhit phát hiện có ký tự nhập từ bàn phím không
Sử dụng lệnh system để thực hiện các câu lệnh trên terminal
Dịch như một chương trình C++ bình thường
g++ -o demo demo.cpp
Trong chương trình này, mình bắt sự kiện khi nhấn phím 'a', nó sẽ tự động sao chép và paste và google translate, nhấn phím 'z' thì quay ngược lại ebook. hihi, tối ưu hơn nhiều cái công đoạn trên.
Các bạn cũng có thể áp dụng cách này cho những trường hợp mà cứ phải gõ đi gõ lại một số thao tác phím nào đó liên tục.
==> Cách trên mình chưa làm được khi chương trình chạy nền (rõ ràng khi mình đọc ebook thì nó phải chạy nền rồi), thì chương trình sẽ không nhận bàn phím nữa, search gg cũng có một vài cách nhưng chưa chạy được
VẤN ĐỀ CẦN GIẢI QUYẾT: Detect keypress of foreground application from background
Nếu bạn nào có cách giải quyết vấn đề trên thì để lại comment nhé.
Xin cảm ơn !!!




