當前位置:首頁 » 操作系統 » linux滑鼠鍵盤

linux滑鼠鍵盤

發布時間: 2022-09-07 08:28:54

linux 鍵盤滑鼠失靈

可能是 xorg 的驅動識別有問題……

這個比較麻煩,因為 /etc/X11/xorg.conf 就是 xorg 的配置文件,但需要你手寫,或許有一個 xorgconfigure 或者 xorgcfg 一類的字元界面命令行程序可以幫你生成一個新的配置文件,鍵盤滑鼠全都用通用的設置。

如果純手工編寫,貌似只寫滑鼠和鍵盤部分的驅動設置就行了。
不過這是相當困難的一件事……

你的機器什麼配置?安裝時是不是驅動選錯了?

② linux操作系統下,滑鼠鍵盤能不能用

一般的安裝好的linux系統都能用滑鼠和鍵盤,也能讀取移動硬碟中的文件。
能用滑鼠和鍵盤是內核和系統實現了對滑鼠鍵盤的驅動。
只要掛載上了移動硬碟就能讀取其中的數據,並且對其操作。
先看硬碟是那個盤符,注意要root許可權
# fdisk -l
如果你的盤符是sdb1,想把sdb1掛載到 /mnt下,掛載就相當於本地硬碟了,就可以對它進行操作
# mount /dev/sdb /mnt
#cd /mnt
這樣就能看到你移動硬碟中的數據了
復制命令:cp
解壓 : tar 、gzip 、 bzip2、 bunzip2、 upzip、 uncompress ……

③ Linux中什麼是部分用於控制滑鼠、鍵盤和顯示器等輸入和輸出設備

咨詢記錄 · 回答於2021-11-08

④ linux修改許可權鍵盤滑鼠鎖死

安裝 xtrlock。
xtrlock 軟體包在大多數 Linux 操作系統的默認軟體倉庫中都可以獲取到。所以你可以使用你安裝的發行版的包管理器來安裝它。
在Python操作的時候,沒有輸入Python命令進入到Python命令操作界面而是直接在Terminal下面直接輸入import導致滑鼠被鎖死變成十字可以使用ps -e |grep import找到import進程的id再執行命令kill -9 id 殺死進程即可。

⑤ 如何在Linux下禁用鍵盤,觸摸板,滑鼠等輸入設備

用 xinput 來禁用/啟用輸入設備。我經常用 synclient 來關掉我的觸摸板, 或者用 xinput 來關閉我的筆記本鍵盤。
第一步我們需要先拿到設備的名字或者ID:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB Optical Mouse id=8 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=7 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Power Button id=10 [slave keyboard (3)]
↳ Video Bus id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=6 [slave keyboard (3)]

在這里觸摸板的名字是 'SynPS/2 Synaptics TouchPad' ID是 7;
鍵盤的名字是 'AT Translated Set 2 keyboard' ID是 6.
下一步我們要知道設備都有什麼屬性:
$ xinput list-props 'AT Translated Set 2 keyboard'
Device 'AT Translated Set 2 keyboard':
Device Enabled (127): 1

鍵盤只有一個屬性 'Device Enabled' 他的值是 1,意思就是說鍵盤是打開狀態的。
我們來嘗試關掉它:
sleep 0.1 ; xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 0 ; sleep 5 ; xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 1

開頭 sleep 0.1 的目的是要留出時間讓你執行當前命令時所敲的回車的按鍵(keypress)事件能夠完成, 我猜測當你按下回車時命令就會執行並把鍵盤禁用,但是按鍵彈起(keyup)還沒有被發送,所以X會以為你一直按這回車鍵。
另一個更簡單的用法是用ID來進行操作,這樣你就不需要輸入一大長串的名字了:
sleep 0.1 ; xinput set-prop 8 127 0 ; sleep 5 ; xinput set-prop 8 127 1

鍵盤的ID是8, 屬性 'Device Enabled' 的ID是127。 當你用 list-props 列出設備屬性時, 在屬性名後面的數字就是屬性的ID。 像 'Device Enabled' 的ID總是 127,但是設備的ID就不一樣,它跟設備的連接時間有關,一般越先連接的設備ID越小,之後會越來越大。
PS:設置設備屬性不需要root許可權。

⑥ Linux突然開機滑鼠/鍵盤都無法響應了

內存問題,你把內存拔下來,用橡皮小心蹭金手指,然後用軟紙或軟布或脫脂棉球,把擦下來的臟東西小心擦掉。這就是太久不清理電腦的緣故。估計你的機箱里灰塵很多。有時間拿到汽車或摩托修理那,用給輪胎充氣那東西好好吹吹機箱內部。最好把各個硬體都拿下來,清理下。主要是CPU風扇、電源風扇、還有顯卡風扇

⑦ linux操作系統中有無滑鼠鍵功能,怎麼設置

如果是在Linux命令行界面下的話,目前是沒有這種功能的。
滑鼠鍵功能應該是windows系統才有的功能,是在視窗環境下,而命令行下應該無法使用。

⑧ linux下如何模擬按鍵輸入和模擬滑鼠

linux/input.h 中有定義,這個文件還定義了標准按鍵的編碼等 struct input_event { struct timeval time; //按鍵時間 __u16 type; //類型,在下面有定義 __u16 code; //要模擬成什麼按鍵 __s32 value;//是按下還是釋放 }; code: 事件的代碼.如果事件的類型代碼是EV_KEY,該代碼code 為設備鍵盤代碼.代碼植0~127 為鍵盤上的按鍵代碼,0x110~0x116 為滑鼠上按鍵代碼,其中0x110(BTN_ LEFT)為滑鼠左鍵,0x111(BTN_RIGHT)為滑鼠右鍵,0x112(BTN_ MIDDLE)為滑鼠中鍵.其它代碼含義請參看 include/linux/input.h 文件. 如果事件的類型代碼是EV_REL,code 值表示軌跡的類型.如指示滑鼠的X軸方向REL_X(代碼為0x00),指示滑鼠的Y 軸方向REL_Y(代碼為0x01),指示滑鼠中輪子方向 REL_WHEEL(代碼為0x08). type: EV_KEY,鍵盤 EV_REL,相對坐標 EV_ABS,絕對坐標 value: 事件的值.如果事件的類型代碼是EV_KEY,當按鍵按下時值為1,松開時值為0;如果事件的類型代碼是 EV_ REL,value 的正數值和負數值分別代表兩個不同方向的值. /* * Event types */ #define EV_SYN 0x00 #define EV_KEY 0x01 //按鍵 #define EV_REL 0x02 //相對坐標(軌跡球) #define EV_ABS 0x03 //絕對坐標 #define EV_MSC 0x04 //其他 #define EV_SW 0x05 #define EV_LED 0x11 //LED #define EV_SND 0x12//聲音 #define EV_REP 0x14//repeat #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f #define EV_CNT (EV_MAX+1) 1。模擬按鍵輸入 //其中0 表示釋放,1 按鍵按下,2 表示一直按下 //0 for EV_KEY for release, 1 for keypress and 2 for autorepeat. void simulate_key(int fd,int value) { struct input_event event; event.type = EV_KEY; //event.code = KEY_0;//要模擬成什麼按鍵 event.value = value;//是按下還是釋放按鍵或者重復 gettimeofday(&event.time,0); if(write(fd,&event,sizeof(event)) < 0){ dprintk("simulate key error~~~\n"); return ; } } 2。模擬滑鼠輸入(軌跡球) void simulate_mouse(int fd,char buf[4]) { int rel_x,rel_y; static struct input_event event,ev; //buf[0],buf[2],小於0 則為左移,大於0 則為右移 //buf[1],buf[3],小於0 則為下移,大於0 則為上移 dprintk("MOUSE TOUCH: x1=%d,y1=%d,x2=%d,y2=%d\n",buf[0],buf[1],buf[2],buf[3]); rel_x = (buf[0] + buf[2]) /2; rel_y = -(buf[1] + buf[3]) /2; //和我們的滑鼠是相反的方向,所以取反 event.type = EV_REL; event.code = REL_X; event.value = rel_x; gettimeofday(&event.time,0); if( write(fd,&event,sizeof(event))!=sizeof(event)) dprintk("rel_x error~~~:%s\n",strerror(errno)); event.code = REL_Y; event.value = rel_y; gettimeofday(&event.time,0); if( write(fd,&event,sizeof(event))!=sizeof(event)) dprintk("rel_y error~~~:%s\n",strerror(errno)); //一定要刷新空的 write(fd,&ev,sizeof(ev)); } 滑鼠和鍵盤文件打開方法: int fd_kbd; // /dev/input/event1 int fd_mouse; //dev/input/mouse2 fd_kbd = open("/dev/input/event1",O_RDWR); if(fd_kbdkey.window = window->window; //一定要設置為主窗口 event->key.keyval = keyval; //FIXME:一定要加上這個,要不然容易出錯 g_object_ref(event->key.window); gdk_threads_enter(); //FIXME: 記得用這個來發送事件 gtk_main_do_event(event); gdk_threads_leave(); gdk_event_free(event); } kernel 里input 模塊 input_dev 結構: struct input_dev { void *private; const char *name; const char *phys; const char *uniq; struct input_id id; /* * 根據各種輸入信號的類型來建立類型為unsigned long 的數組, * 數組的每1bit 代表一種信號類型, * 內核中會對其進行置位或清位操作來表示時間的發生和被處理. */ unsigned long evbit[NBITS(EV_MAX)]; unsigned long keybit[NBITS(KEY_MAX)]; unsigned long relbit[NBITS(REL_MAX)]; unsigned long absbit[NBITS(ABS_MAX)]; unsigned long mscbit[NBITS(MSC_MAX)]; unsigned long ledbit[NBITS(LED_MAX)]; unsigned long sndbit[NBITS(SND_MAX)]; unsigned long ffbit[NBITS(FF_MAX)]; unsigned long swbit[NBITS(SW_MAX)]; ......................................... }; /** * input_set_capability - mark device as capable of a certain event * @dev: device that is capable of emitting or accepting event * @type: type of the event (EV_KEY, EV_REL, etc...) * @code: event code * * In addition to setting up corresponding bit in appropriate capability * bitmap the function also adjusts dev->evbit. */ /* 記錄本設備對於哪些事件感興趣(對其進行處理)*/ void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code) { switch (type) { case EV_KEY: __set_bit(code, dev->keybit);//比如按鍵,應該對哪些鍵值的按鍵進行處理(對於其它按鍵不予理睬) break; case EV_REL: __set_bit(code, dev->relbit); break; case EV_ABS: __set_bit(code, dev->absbit); break; case EV_MSC: __set_bit(code, dev->mscbit); break; case EV_SW: __set_bit(code, dev->swbit); break; case EV_LED: __set_bit(code, dev->ledbit); break; case EV_SND: __set_bit(code, dev->sndbit); break; case EV_FF: __set_bit(code, dev->ffbit); break; default: printk(KERN_ERR "input_set_capability: unknown type %u (code %u)\n", type, code); mp_stack(); return; } __set_bit(type, dev->evbit);//感覺和前面重復了(前面一經配置過一次了) } EXPORT_SYMBOL(input_set_capability); static irqreturn_t gpio_keys_isr(int irq, void *dev_id) { int i; struct platform_device *pdev = dev_id; struct gpio_keys_platform_data *pdata = pdev->dev.platform_data; struct input_dev *input = platform_get_drvdata(pdev); for (i = 0; i < pdata->nbuttons; i++) { struct gpio_keys_button *button = &pdata->buttons[i]; int gpio = button->gpio; if (irq == gpio_to_irq(gpio)) {//判斷哪個鍵被按了? unsigned int type = button->type ?: EV_KEY; int state = (gpio_get_value(gpio) ? 1 : 0) ^ button->active_low;//記錄按鍵狀態 input_event(input, type, button->code, !!state);//匯報輸入事件 input_sync(input);//等待輸入事件處理完成 } } return IRQ_HANDLED; } /* * input_event() - report new input event * @dev: device that generated the event * @type: type of the event * @code: event code * @value: value of the event * * This function should be used by drivers implementing various input devices * See also input_inject_event() */ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) { struct input_handle *handle; if (type > EV_MAX || !test_bit(type, dev->evbit))//首先判斷該事件類型是否有效且為該設備所接受 return; add_input_randomness(type, code, value); switch (type) { case EV_SYN: switch (code) { case SYN_CONFIG: if (dev->event) dev->event(dev, type, code, value); break; case SYN_REPORT: if (dev->sync) return; dev->sync = 1; break; } break; case EV_KEY: /* * 這里需要滿足幾個條件: * 1: 鍵值有效(不超出定義的鍵值的有效范圍) * 2: 鍵值為設備所能接受(屬於該設備所擁有的鍵值范圍) * 3: 按鍵狀態改變了 */ if (code > KEY_MAX || !test_bit(code, dev->keybit) || !!test_bit(code, dev->key) == value) return; if (value == 2) break; change_bit(code, dev->key);//改變對應按鍵的狀態 /* 如果你希望按鍵未釋放的時候不斷匯報按鍵事件的話需要以下這個(在簡單的gpio_keys 驅動中不需要這個,暫時不去分析) */ if (test_bit(EV_REP, dev->evbit) && dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] && dev->timer.data && value) { dev->repeat_key = code; mod_timer(&dev->timer, jiffies + msecs_to_jiffies(dev->rep[REP_DELAY])); } break; ........................................................ if (type != EV_SYN) dev->sync = 0; if (dev->grab) dev->grab->handler->event(dev->grab, type, code, value); else /* * 循環調用所有處理該設備的handle(event,mouse,ts,joy 等), * 如果有進程打開了這些handle(進行讀寫),則調用其對應的event 介面向氣匯報該輸入事件. */ list_for_each_entry(handle, &dev->h_list, d_node) if (handle->open) handle->handler->event(handle, type, code, value); } EXPORT_SYMBOL(input_event); event 層對於input 層報告的這個鍵盤輸入事件的處理: drivers/input/evdev.c: static struct input_handler evdev_handler = { .event = evdev_event, .connect = evdev_connect, .disconnect = evdev_disconnect, .fops = &evdev_fops, .minor = EVDEV_MINOR_BASE, .name = "evdev", .id_table = evdev_ids, }; Linux 有自己的 input 子系統,可以統一管理滑鼠和鍵盤事件。 基於輸入子系統 實現的 uinput 可以方便的在用戶空間模擬滑鼠和鍵盤事件。 當然,也可以自己造輪子, 做一個字元設備接收用戶輸入,根據輸入,投遞 input 事件。 還有一種方式就是直接 往 evnent 里寫入數據, 都可以達到控制滑鼠鍵盤的功能。 本篇文章就是演示直接寫入 event 的方法。 linux/input.h 中有定義,這個文件還定義了標准按鍵的編碼等 struct input_event { struct timeval time; //按鍵時間 __u16 type; //類型,在下面有定義 __u16 code; //要模擬成什麼按鍵 __s32 value;//是按下還是釋放 }; code: 事件的代碼.如果事件的類型代碼是EV_KEY,該代碼code 為設備鍵盤代碼.代碼植0~127 為鍵盤上的按鍵代碼, 0x110~0x116 為滑鼠上按鍵代碼,其中0x110(BTN_ LEFT)為滑鼠左鍵,0x111(BTN_RIGHT)為滑鼠右鍵,0x112(BTN_ MIDDLE)為滑鼠中鍵.其它代碼含義請參看 include/linux /input.h 文件. 如果事件的類型代碼是EV_REL,code 值表示軌跡的類型.如指示滑鼠的X軸方向 REL_X (代碼為0x00),指示滑鼠的Y 軸方向REL_Y(代碼為0x01),指示滑鼠中輪子方向 REL_WHEEL(代碼為0x08). type: EV_KEY,鍵盤 EV_REL,相對坐標 EV_ABS,絕對坐標 value: 事件的值.如果事件的類型代碼是EV_KEY,當按鍵按下時值為1,松開時值為0;如果事件的類型代碼是 EV_ REL,value 的正數值和負數值分別代表兩個不同方向的值. /* * Event types */ #define EV_SYN 0x00 #define EV_KEY 0x01 //按鍵 #define EV_REL 0x02 //相對坐標(軌跡球) #define EV_ABS 0x03 //絕對坐標 #define EV_MSC 0x04 //其他 #define EV_SW 0x05 #define EV_LED 0x11 //LED #define EV_SND 0x12//聲音 #define EV_REP 0x14//repeat #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f #define EV_CNT (EV_MAX+1) 下面是一個模擬滑鼠和鍵盤輸入的例子: #include #include #include #include #include #include #include #include #include #include #include void simulate_key(int fd,int kval) { struct input_event event; event.type = EV_KEY; event.value = 1; event.code = kval; gettimeofday(&event.time,0); write(fd,&event,sizeof(event)) ; event.type = EV_SYN; event.code = SYN_REPORT; event.value = 0; write(fd, &event, sizeof(event)); memset(&event, 0, sizeof(event)); gettimeofday(&event.time, NULL); event.type = EV_KEY; event.code = kval; event.value = 0; write(fd, &event, sizeof(event)); event.type = EV_SYN; event.code = SYN_REPORT; event.value = 0; write(fd, &event, sizeof(event)); } void simulate_mouse(int fd) { struct input_event event; memset(&event, 0, sizeof(event)); gettimeofday(&event.time, NULL); event.type = EV_REL; event.code = REL_X; event.value = 10; write(fd, &event, sizeof(event)); event.type = EV_REL; event.code = REL_Y; event.value = 10; write(fd, &event, sizeof(event)); event.type = EV_SYN; event.code = SYN_REPORT; event.value = 0; write(fd, &event, sizeof(event)); } int main() { int fd_kbd; int fd_mouse; fd_kbd = open("/dev/input/event1",O_RDWR); if(fd_kbd

⑨ linux圖形模式下鍵盤滑鼠不能用了

/var下很多其他目錄是需要別的許可權的,你全給了root,可能導致插件啥沒許可權了
重裝吧

熱點內容
煙台招聘編程 發布:2025-05-12 10:04:21 瀏覽:52
sql查詢所有表名 發布:2025-05-12 10:01:28 瀏覽:663
用python編譯器的簡單代碼 發布:2025-05-12 09:48:40 瀏覽:357
香港多ip站群伺服器租用 發布:2025-05-12 09:33:16 瀏覽:893
kaliapk編譯 發布:2025-05-12 08:47:56 瀏覽:357
健身穿壓縮衣 發布:2025-05-12 08:44:53 瀏覽:479
vps撥號伺服器搭建 發布:2025-05-12 08:35:20 瀏覽:310
音量鍵下陷開不開機怎麼辦安卓 發布:2025-05-12 08:35:19 瀏覽:291
python庫網站 發布:2025-05-12 08:19:10 瀏覽:3
c語言培訓內容 發布:2025-05-12 08:18:17 瀏覽:219