自己動手「焊」鍵盤,使用Python編寫,一鍵放連招不在話下

點擊上方“編程派”,選擇設爲“設爲星標

優質文章,第一時間送達!

這是一個內部運行 Python 的開源鍵盤,可根據個人需求定製鍵盤映射。從此以後,「窮苦玩家」也能在 MOBA 遊戲裏一鍵放連招了,不知這樣算不算硬件外掛?「氪金玩家」請出門右轉購買宏編程鍵盤。

來源:機器之心

近日,一位中國開發者在 GitHub 上開源了一個帶有 USB 和藍牙的手工「焊」接 Python 鍵盤的代碼。該項目使用了 AdaFruit 的人員開發的 CircuitPython(衍生自 MicroPython)的特定實現,該實現可以在容納 256K 的代碼空間和 16K 的 RAM 的虛擬機上運行。

這一 Python 鍵盤可以讓用戶輕鬆地使用 Python 編寫控制板。

項目地址:https://github.com/makerdiary/python-keyboard

下面我們就來看下這個 Python 鍵盤的具體操作和實現細節。

操作步驟

在 GitHub 上,作者詳細描述了製作這個 Python 鍵盤的操作步驟,總結起來包括:

1. 手工「焊」接鍵盤

下面這些圖展示了作者對這些鍵盤內部結構的改造。

去掉鍵盤帽扣,作者用焊絲把關聯按鍵連接起來,達到下圖這樣的效果。

最後,作者把一個能夠運行 Python 的開源控制板連接到鍵盤上。最終圖示如下。

2. 編程 Pitaya Go

第二步是對上圖中紅色設備的編程。作者在 Github 中編寫了詳細的指南,對 Pitaya Go 進行編程並燒寫到 Flash CircuitPython 固件上。

3. 下載 CircuitPython 庫

接下來,下載兩個 CircuitPython 庫:adafruit-ble 和 adafruit-hid,並將它們放入名爲 CIRCUITPY 的 USB 驅動器裏的 lib 目錄中,如下圖所示。

4. 複製代碼

最後一步是將 Python 的代碼複製到 code.py。重新加載 code.py 後,我們就可以獲得一個帶有 USB 以及藍牙的鍵盤了。

完整代碼作者也開源到 Github 項目中。

生產力升級

60%(61 鍵)的鍵盤缺少 F1~F12、方向鍵、PgUp、PgDn 等鍵位。該項目加入了 tmk_keyboard 項目中的鍵位映射功能,同時參考了 Toward a more useful keyboard 項目對於鍵位設置上的優化理念,使得小鍵盤更具生產力「折騰纔有樂趣,就是不買全鍵盤」!

  • tmk_keyboard 項目地址:https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/doc/keymap.md

  • Toward a more useful keyboard 項目地址:https://github.com/jasonrudolph/keyboard

由於使用了 Python 編寫鍵位映射,我們可以很方便地對鍵位進行個性化定製「以後誰還需要宏編程鍵盤,大霧」。該項目自帶 Tap-key 功能,即按住一個鍵不放可激活替代功能模式,在 60% 鍵盤上擴展出更多鍵位。我們只需將 keyboard.py 與 keycodes.py 複製到 CIRCUITPY 目錄下,之後修改 code.py 導入新鍵盤,即可將按鍵 D 用作導航。

當僅想要輸出 D 時快速敲擊即可,而按住 D 不放則激活導航功能,變化後的鍵位如下圖所示。

此時 H、J、K、L 鍵分別被映射爲上下左右方向鍵,而 U 與 N 則被映射爲 PgUp 和 PgDn。

另外還支持同時按住兩個鍵(間隔小於 25 毫秒)激活替代功能模式,以及按住「;」鍵作爲 Ctrl。

爲什麼要用 Python 寫?

這個項目在 hackernews 和 twitter 上都引來了不少人圍觀。多數人認爲這是一個非常有創意的想法,之前沒見過這種操作。

但鑑於作者在項目中用的語言是 Python,大家不免擔心起速度問題。對此,作者回複稱,「確實有點慢,現在掃描一次矩陣需要 4 毫秒,但優化之後速度會有提升。」

既然用 Python 速度慢,那爲什麼不用 C 語言寫呢?也沒有多複雜啊。作者表示,「項目中的硬件包含一個 QSPI 閃存,它是一個 USB 存儲,用來保存 Python 源代碼,你可以直接改 Python 代碼。而且,使用 Python 爲快速驗證硬件產品的創意提供了一個新的方式。」

除此之外,也有人幫作者補充了使用 Python 的好處。ta 指出,這個項目用到的 CircuitPython 實現使用一個非常不同的 VM 運行,雖然不能指望它接近 C 的性能,但相比 Cpython 要輕量化得多。整個開發過程也會簡單得多。

參考鏈接:https://news.ycombinator.com/item?id=23219641

回覆下方「關鍵詞」,獲取優質資源

回覆關鍵詞「 pybook03」,立即獲取主頁君與小夥伴一起翻譯的《Think Python 2e》電子版
回覆關鍵詞「入門資料」,立即獲取主頁君整理的 10 本 Python 入門書的電子版
回覆關鍵詞「m」,立即獲取Python精選優質文章合集
回覆關鍵詞「book 數字」,將數字替換成 0 及以上數字,有驚喜好禮哦~
題圖:pexels,CC0 授權。

好文章,我在看
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章