Counter-Strike

模擬在滑鼠點擊時按下 Enter 鍵(ubuntu)

  • October 29, 2020

我正在使用 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 的備用鍵。

引用自:https://gaming.stackexchange.com/questions/377203