最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通過keyboard庫(kù)實(shí)現(xiàn)模擬和監(jiān)聽鍵盤

 更新時(shí)間:2024年10月31日 09:40:44   作者:仙草哥哥  
這篇文章主要為大家詳細(xì)介紹了Python如何通過keyboard庫(kù)實(shí)現(xiàn)模擬和監(jiān)聽鍵盤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

keyboard介紹

如果我們想要通過快捷鍵,來(lái)調(diào)用某段代碼,我們可以使用python的keyboard庫(kù),這個(gè)庫(kù)可以用于發(fā)送,掛鉤,以及模擬鍵盤事件等,并且同時(shí)支持多種操作系統(tǒng)(但是需要注意的是,在某些系統(tǒng)中,需要以管理員的權(quán)限運(yùn)行才可以使用)

當(dāng)我們使用這個(gè)庫(kù)的時(shí)候,可以:

  • 監(jiān)聽鍵盤事件:監(jiān)聽全局鍵盤事件,包括捕獲特定鍵的按下或釋放,記錄所有鍵盤輸入(這個(gè)功能可能很危險(xiǎn),需要小心使用)。
  • 模擬按鍵輸入:模擬按鍵事件,如按下,釋放,或者同時(shí)按下多個(gè)鍵等。
  • 熱鍵和快捷鍵:可以設(shè)置熱鍵或快捷鍵,來(lái)執(zhí)行特定的回調(diào)函數(shù)。

安裝keyboard庫(kù),同樣需要使用pip:pip install keyboard

keyboard庫(kù)github地址

keyboard使用

監(jiān)聽所有鍵盤輸入

import keyboard
 
def log_keystroke(event):
    print(f"Key {event.name} {'被按下' if event.event_type == 'down' else '被釋放'}")
 
keyboard.hook(log_keystroke)
 
# 使用esc鍵來(lái)停止監(jiān)聽
keyboard.wait("esc")

可以看到,現(xiàn)在我們所有的按鍵都會(huì)被清清楚楚的記錄下來(lái)

監(jiān)聽并回放鍵盤輸入

這個(gè)功能允許我們先輸入內(nèi)容,然后將所有的輸入內(nèi)容全部記錄下來(lái),然后再需要的時(shí)候,重新回放(也就是再模擬輸入一次)

import keyboard
import time
 
# 記錄按鍵
keyboard.start_recording()
 
# 設(shè)置記錄10秒的鍵盤輸入
time.sleep(10)
 
events = keyboard.stop_recording()
 
# 回放記錄的按鍵
keyboard.play(events)
監(jiān)聽特定鍵的按下和釋放
import keyboard
 
def on_press_reaction(event):
    if event.name == "b":
        print("你為什么要按b?")
 
 
keyboard.on_press(on_press_reaction)
 
keyboard.wait("esc")

監(jiān)聽按鍵按下:keyboard.on_press()

監(jiān)聽按鍵釋放:keyboard.on_release()

設(shè)置熱鍵

import keyboard
 
def print_message():
    print("你為什么要召喚我?")
 
# 設(shè)置熱鍵,例如alt+b
keyboard.add_hotkey("alt+b", print_message)
 
keyboard.wait("esc")

添加熱鍵:keyboard.add_hotkey()

清除所有的熱鍵:keyboard.clear_all_hotkeys()

阻止程序直到按鍵:keyboard.wait("esc")

模擬輸入

模擬文字輸入:keyboard.write()

模擬按鍵按下:keyboard.press()

模擬按鍵釋放:keyboard.release()

模擬按鍵按下并釋放:keyboard.send()

實(shí)際例子

插入時(shí)間信息

一些輸入法可能包含一個(gè)功能,可以快速插入一段時(shí)間信息,例如,將當(dāng)前時(shí)間2024-10-30 22:00:00插入到文章中。

import keyboard
import datetime
 
 
def write_timestamp():
    current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    
    keyboard.write(current_time)
 
keyboard.add_hotkey("ctrl+b", write_timestamp)
keyboard.wait("esc")

當(dāng)然,我們可以對(duì)其進(jìn)行擴(kuò)展,插入更多的信息,例如,在寫文章的時(shí)候,同時(shí)插入作者信息,聯(lián)系方式等

import keyboard
import datetime
 
 
def write_info(name, mail):
    current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    
    info = f"作者:{name}\n聯(lián)系方式:{mail}\n創(chuàng)建時(shí)間:{current_time}"
    
    keyboard.write(info)
 
keyboard.add_hotkey("ctrl+b", lambda: write_info("sagegrass", "sagegrass@outlook.com"))
keyboard.wait("esc")

以下信息就是通過按鍵快速生成的,并非是我手動(dòng)輸入的

在設(shè)置熱鍵的時(shí)候,一定要注意與原本的快捷鍵沖突,如果設(shè)置的熱鍵沖突,即使程序正確,也可能無(wú)法運(yùn)行,甚至可能因?yàn)闆_突按鍵造成許多麻煩。

專注模式

原理:通過熱鍵,操作寫入hosts文件,將指定的網(wǎng)站重定向到127.0.0.1,以實(shí)現(xiàn)無(wú)法訪問。再次按下以后,清除這些信息,從而實(shí)現(xiàn)繼續(xù)訪問。

 注意,寫入hosts以后,不一定能夠立即生效,可能需要一定時(shí)間的延遲。

import keyboard
import os
 
# 工作期間拒絕玩小游戲
blocked_websites = [
    "4399.com",
    "www.4399.com"
]
hosts_path = r"C:\Windows\System32\drivers\etc\hosts"
redirect_ip = "127.0.0.1"
is_focus_mode_on = False
 
 
def toggle_focus_mode():
    global is_focus_mode_on
    if not is_focus_mode_on:
        with open(hosts_path, "a") as file:
            for website in blocked_websites:
                file.write(f"{redirect_ip} {website}\n")
        print("專注模式已開啟,干擾網(wǎng)站已被屏蔽。")
        is_focus_mode_on = True
    else:
        with open(hosts_path, "r+") as file:
            lines = file.readlines()
            file.seek(0)
            for line in lines:
                if not any(website in line for website in blocked_websites):
                    file.write(line)
            file.truncate()
        print("專注模式已關(guān)閉,干擾網(wǎng)站可正常訪問。")
        is_focus_mode_on = False
 
keyboard.add_hotkey("ctrl+b", toggle_focus_mode)
keyboard.wait("esc")

風(fēng)險(xiǎn)提示

需要注意的是,由于keyboard庫(kù)可以實(shí)現(xiàn)如讀取鍵盤輸入,模擬鍵盤按鍵等特殊性質(zhì)的功能,因此存在一些隱私和安全的風(fēng)險(xiǎn),需要小心謹(jǐn)慎。

比如說(shuō),使用keyboard,可能存在惡意軟件的風(fēng)險(xiǎn),比如說(shuō),該庫(kù)可以用于開發(fā)鍵盤記錄器,也就是人們常說(shuō)的keylogger,這樣類型的惡意軟件能夠記錄用戶的鍵盤輸入,包括密碼或者其他的敏感信息。

因此,我們需要注意:

  • 作為使用者,當(dāng)使用有包含keyboard庫(kù)的程序時(shí),要確保代碼來(lái)源的可靠性,避免使用來(lái)歷不明的python程序。
  • 作為開發(fā)者,我們也需要保證用戶的隱私和知情權(quán),要告知軟件的行為和權(quán)限,更不能嘗試去制作和傳播鍵盤記錄器。

以上就是Python通過keyboard庫(kù)實(shí)現(xiàn)模擬和監(jiān)聽鍵盤的詳細(xì)內(nèi)容,更多關(guān)于Python keyboard模擬和監(jiān)聽鍵盤的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 教你怎么用Python監(jiān)控愉客行車程

    教你怎么用Python監(jiān)控愉客行車程

    這篇文章主要介紹了教你怎么用Python監(jiān)控愉客行車程,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 如何對(duì)csv文件數(shù)據(jù)分組,并用pyecharts展示

    如何對(duì)csv文件數(shù)據(jù)分組,并用pyecharts展示

    這篇文章主要介紹了如何對(duì)csv文件數(shù)據(jù)分組,并用pyecharts展示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問題

    解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問題

    這篇文章主要介紹了解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-06-06
  • Python進(jìn)行時(shí)間單位換算的完全指南

    Python進(jìn)行時(shí)間單位換算的完全指南

    在現(xiàn)代計(jì)算系統(tǒng)中,時(shí)間換算是最基礎(chǔ)也是最關(guān)鍵的技術(shù)之一,Python提供了強(qiáng)大的時(shí)間處理工具鏈,但許多開發(fā)者未能充分利用其全部功能,下面小編就來(lái)和大家深入講解下
    2025-08-08
  • Python將多個(gè)excel文件合并為一個(gè)文件

    Python將多個(gè)excel文件合并為一個(gè)文件

    這篇文章主要為大家詳細(xì)介紹了Python將多個(gè)excel文件合并為一個(gè)文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • django站點(diǎn)管理詳解

    django站點(diǎn)管理詳解

    這篇文章主要介紹了django站點(diǎn)管理詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 280行Python代碼打造一個(gè)帶語(yǔ)法高亮的IDE

    280行Python代碼打造一個(gè)帶語(yǔ)法高亮的IDE

    本文詳細(xì)介紹了一個(gè)基于wxPython和Scintilla實(shí)現(xiàn)的桌面IDE的開發(fā)過程,涵蓋語(yǔ)法高亮,多線程處理,跨平臺(tái)I/O讀取等核心技術(shù),感興趣的小伙伴可以了解下
    2026-05-05
  • python實(shí)現(xiàn)在字符串中查找子字符串的方法

    python實(shí)現(xiàn)在字符串中查找子字符串的方法

    這篇文章主要介紹了python實(shí)現(xiàn)在字符串中查找子字符串的方法,涉及Python中find方法的相關(guān)使用技巧,需要的朋友可以參考下
    2015-07-07
  • 將TensorFlow的模型網(wǎng)絡(luò)導(dǎo)出為單個(gè)文件的方法

    將TensorFlow的模型網(wǎng)絡(luò)導(dǎo)出為單個(gè)文件的方法

    本篇文章主要介紹了將TensorFlow的網(wǎng)絡(luò)導(dǎo)出為單個(gè)文件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • Python的內(nèi)置數(shù)據(jù)類型中的數(shù)字

    Python的內(nèi)置數(shù)據(jù)類型中的數(shù)字

    這篇文章主要介紹Python內(nèi)置數(shù)據(jù)類型中的數(shù)字(Number),包括整數(shù)(int),小數(shù)(float),復(fù)數(shù)(Complex),布爾類型(bool)這幾種數(shù)據(jù)類型。本文介紹的都是Python3.x中的數(shù)據(jù)類型,需要的朋友請(qǐng)參考下面文章
    2021-09-09

最新評(píng)論

区。| 石嘴山市| 工布江达县| 阿合奇县| 云南省| 佛教| 格尔木市| 桂平市| 松潘县| 白城市| 铁力市| 吴堡县| 长岭县| 麻城市| 洞头县| 兴安县| 望江县| 鄂州市| 宾川县| 新建县| 禹城市| 阿图什市| 徐汇区| 博兴县| 茂名市| 庆安县| 鄂州市| 五家渠市| 长子县| 谷城县| 龙门县| 湟中县| 静宁县| 皋兰县| 云龙县| 屏东县| 图木舒克市| 高雄县| 独山县| 娄底市| 绥棱县|