模擬在滑鼠點擊時按下 Enter 鍵(ubuntu)
我正在使用 wine-5.0 (Ubuntu 5.0-3ubuntu1) 在 Ubuntu 20.04 LTS 上玩 cs1.6,但是我在遊戲中遇到了這個奇怪的滑鼠點擊問題,只有手槍和槍,每當我在兩個/一個之後快速點擊射擊射擊的子彈在射擊中有延遲(滑鼠甚至一秒鐘都不會射擊子彈)。
但是當我使用 Enter 鍵射擊時,子彈會順利發射(整個回合)。
現在我正在尋找某種方法來模擬滑鼠左鍵點擊時按下的 Enter 鍵。
我們可以這樣做嗎?
對於那些想在 Linux 上實現這一點的人,
我製作了一個 C++ 程序來擷取滑鼠點擊並在
Enter
之後按下鍵。#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <linux/input.h> #include <cstring> int main(int argc, char **argv) { struct input_event event; int fd, bytes; unsigned char data[3]; bool down = false; const char *pDevice = "/dev/input/by-id/usb-Logitech_USB_Receiver-if01-event-mouse"; fd = open(pDevice, O_RDONLY | O_NONBLOCK); if (fd == -1) { printf("ERROR Opening %s\n", pDevice); return -1; } while (1) { memset((void *)&event, 0, sizeof(event)); bytes = read(fd, (void *)&event, sizeof(event)); if (event.type == 1 && event.code == 272 && event.value == 1) { down = true; } if (event.type == 1 && event.code == 272 && event.value == 0) { down = false; } if (down) system("xdotool key Return"); } return 0; }
在上面的程序中,我嘗試直接從“/dev/input/by-id”中的設備讀取滑鼠事件和數據,我的設備事件文件名為“usb-Logitech_USB_Receiver-if01-event-mouse”。
一旦你有一個變數(即事件)中的事件,我的滑鼠左鍵程式碼是272,不確定它是滑鼠左鍵的通用程式碼號,event.type = 1(不確定這個偶數),event.value = 1 是滑鼠按下/按下事件,而 event.value = 0 是滑鼠按下/釋放事件。
按下滑鼠後,我們必須按
Enter
鍵盤上的鍵,為此我使用過xdotool
,請確保您已安裝xdotool
。
xdotool key Return
觸發鍵盤上的 Enter 鍵按下事件。編譯它以生成一個名為的執行檔
mouse
然後你可以使用
sudo ./mouse&
&
是在後台執行命令。就是這樣,現在只要按下滑鼠左鍵,就會按下
Enter
鍵盤上的鍵,直到您釋放按鈕點擊為止。**注意:**這個程序使用 100% cpu coz 的無限 while 循環,但它是正常的。
當我使用滑鼠左鍵向下從手槍射擊時,我在 cs1.6 上對此進行了測試,整個回合自動射擊,因為
Enter
按下鍵直到我按住滑鼠鍵。確保您
Enter
在 cs1.6 設置中的鍵盤快照中將鍵設置為 Fire,我在鍵盤快捷鍵中將Enter
鍵作為主-
鍵,將鍵作為 Fire 的備用鍵。