linux上面 實現 遊戲手柄 對映 鍵盤

2021-08-23 12:10:29 字數 2771 閱讀 5177

main.c

#include

#include

#include

#include

#include "joy.h"

#include "vkey.h"

#include

#define mask_up        1

#define mask_down    2

#define mask_left    4

#define mask_right    8

int main(void)

#if 1

if(openvkey()<0)

#endif

printf("hello world\r\n");

while(1)

else if(value==32767)

else if(value==0)

if(mask&mask_down)

}reportvkey(ev_syn, syn_report, 0);

}else if(key==24)

else if(value==32767)

else if(value==0)

if(mask&mask_right)

}reportvkey(ev_syn, syn_report, 0);

}else if(key==11)    

else if(key==13)

}else usleep(1000);

}closevkey();        

closejoy();

return 0;

}vkey.h  vkey.c

#ifndef __vkey_h__

#define __vkey_h__

int reportvkey(uint16_t type, uint16_t keycode, int32_t value);

int openvkey(void);

void closevkey(void);

#endif

#include

#include

#include

#include

#include

#include

#include

#include

#include

static int fd;

int reportvkey(uint16_t type, uint16_t keycode, int32_t value)

return 0;

}int openvkey(void)

//娉ㄥ唽浜嬩歡

ioctl(fd, ui_set_evbit, ev_syn);    //鍚屾浜嬩歡

ioctl(fd, ui_set_evbit, ev_key);    //鐫夐敭浜嬩歡

//娉ㄥ唽鐫夐敭

for(i = 0; i < 128; i++)

//鍒涘緩鉶氭嫙璁懼

memset(&uidev, 0, sizeof(struct uinput_user_dev));

snprintf(uidev.name, uinput_max_name_size, "uinput-sample");

uidev.id.bustype = bus_usb;

uidev.id.vendor = 0x1234;    //搴旇鏄殢渚垮啟鐨?    

uidev.id.product = 0xfedc;    //搴旇鏄殢渚垮啟鐨?    

uidev.id.version = 1;        //搴旇鏄殢渚垮啟鐨?    

ret = write(fd, &uidev, sizeof(struct uinput_user_dev));

ret = ioctl(fd, ui_dev_create);

if (ret < 0)

return 0;

}void closevkey(void)

joy.h joy.c

#define __joy_h__

int openjoy(const char *dev);

int readjoy(int *key,int *value);

void closejoy(void);

#endif

#include

#include

#include

#include

#include

#include

#include

#include

#include

static int fd;

int openjoy(const char *dev)

int readjoy(int *key,int *value)

void closejoy(void)

makefile

cc = gcc

prom = joy2key

deps = $(shell find ./ -name "*.h")

src = $(shell find ./ -name "*.c")

obj = $(src:%.c=%.o)

$(prom): $(obj)

@echo $(src)

$(cc) -o $(prom) $(obj)

%.o: %.c $(deps)

$(cc) -c $< -o $@

clean:

rm -rf $(obj) $(prom)

Linux使用nfs實現磁碟對映

今天工作中遇到的問題,使用某開發板,需要使用linux將檔案對映到開發板系統中,這裡記錄一下,兩個linux系統如何使用nfs實現磁碟對映。假設需要把放在 192.168.100.101 上的檔案對映到 192.168.100.102 上 yum install nfs utils rpcbindv...

linux下使用SSH實現埠對映

在實際的開發過程中,需要在外邊主機訪問區域網內的內網埠,可以將遠端伺服器乙個埠remote port繫結到本地埠port,其中 c是進行資料壓縮,f是後台操作,只有當提示用 戶名密碼的時候才轉向前台。n是不執行遠端命令,在只是埠 時這條命令很有用處。g 是允許遠端主機連線本地 埠。r表明是將遠端主機...

Linux記憶體對映檔案原理詳解及實現步驟

有兩種型別的記憶體對映檔案 2 私有型,當程序建立的對映只是為讀檔案,而不是寫檔案時才會使用這種對映。出於這種目的,私有對映的效率要比共享對映的效率更高。但是對私有對映頁的任何寫操作都會使核心停止對映該檔案中的頁。因此寫操作既不會改變磁碟上的檔案,對訪問相同檔案的其他程序也是不可見的。但是私有記憶體...