<!--
title: "對輸入設備的想像"
summary: "是否有可能製作隨時隨地使用的輸入設備"
date: 2023-03-30T11:45:36+08:00
public: false
-->

自從開始當碼農以來，我就聽從 mentor 們的建議養成了一項習慣：  
**儘量使用鍵盤作為輸入設備**

我在桌面環境中，基本上只會使用到終端模擬器和瀏覽器而已。
作為命令行使用者，我對電腦的大部分需求都可以透過編輯文件、執行命令來完成。
而在瀏覽器中，我也儘量使用快捷鍵替代滑鼠操作。

在正常情況下，使用滑鼠 + GUI 的操作方式需要大量用眼去確認螢幕上的元件位置和其變化，
就好比玩 FPS 需要用準心對齊目標，對我來說難度其實是相當高的。
而這樣的習慣，也使得我可以在不緊盯螢幕的情況下，仍能透過鍵盤完成各種指令。
對心智的負擔是比較小的。

也因此，我漸漸開始不再滿足於只能「坐在桌子前」操作電腦了。

既然大部分的工作可以使用 CLI (命令行界面）來完成，那麼在通勤時、行進時、無聊時，
理論上我都可以使用 CLI 來進行輸入。
而這邊所指的輸入，完全是指鍵入 ASCII 字元，
無關乎其它輸入（例如音訊、游標位置等）


## 為什麼我需要鍵盤以外的輸入設備

反思一下，一般要操作電腦，使用者只能好端端地「坐」或「站」在桌前，
透過桌面來穩定雙手，敲打鍵盤並直視螢幕來進行操作。
隨著手機的出現，使用者可以僅透過單手來進行輸入。
不過在這種情況下，更需要使用眼睛來追蹤虛擬鍵盤。使用下來反而更花費精力，對我來說並不是理想的方式。

我想要的模式，是可以僅透過「手指」隨時隨地開始輸入。而不需要花費精力緊盯螢幕。
既然是「隨時隨地」，就要考慮各種情況。
不管是步行、跑步、進食、通勤等情境，只要想到就能夠迅速開始打字，
從「產生想法」到「開始輸入」，整個過程不應超過1秒，以避免打斷心流。

當然，畢竟很多情況下使用者會需要讀取輸出來判斷如何進行一步輸入，
因此在這種模式下無法做到太複雜的事。

不過對我來說，僅僅只要可以做到「紀錄」這件事，就能大大改善我的生活了。
例如補捉一𣊬即逝的想法、記日記、寫下消費紀錄等。

再者，排除了使用螢幕，或許也可以使用其它設備讀取輸出。
例如把輸出轉化為簡單的聲音，用頸掛式耳機聽取，或者使用 AR 眼鏡、震動等方式。
不過這就是後話了，本篇文章不會在這方面過多討論。


## 各式各樣的輸入設備

當然我的想法也不會是空穴來風，
在現實世界或各種影視作品中，其實早就湧現出各種有關輸入設備的創意：

例如動畫 kill la kill 中的四天王犬牟田，直接把鍵盤做在衣服上，這應該是最直覺的作法了。
![](https://media.tenor.com/c6SbKcLzUZ4AAAAC/kill-la.gif)

實際上，現實中也有不少例子是真的把實物做出來，不過似乎都屬於實驗性質，沒有流行起來的趨勢。
![](https://www.toxel.com/wp-content/uploads/2012/01/keyboardpants01.jpg)

銀翼殺手中，Stelline 使用圓柱型的轉輪設備來調整影像。這也是一種不依賴桌面的手持式輸入設備。
雖然有點笨重而且不能鍵入文字，不過它的功能比較類似遊戲手把，能夠精確微調多種數值。
![](https://64.media.tumblr.com/966924b11692a2b57384b3430c6e712c/tumblr_p23jgqDUgV1sr5vsyo8_r1_540.gifv)

而即將在今年推出的 Tap XR 似乎也是個不錯的選擇：
<iframe width="560" height="315" src="https://www.youtube.com/embed/sdm8FcsKeoM" title="Tap XR" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

在這個介紹影片中，使用者只要戴上一個手環，就可以透過脈搏附近的攝影機辨識手指的動作。
從展示畫面看起來，應該是辨識「哪根手指碰觸到表面」來產生對應的輸入，單手即可進行很多操作。

另外，其實也有個現成方案是大家都知道的：使用 Google 助理，搭配藍芽耳機進行語音輸入。
不過就像前面提到的各種方案一樣，就算產品看起來再怎麼美好，我自己也有些需求不能讓步。


## 我的需求

考慮到我對於命令行界面的使用情境，理想的輸入設備應該包括以下特點：

- 體積儘可能小，甚至可以貼合在皮膚上
- 操作時的動作儘可能地小
- 待機時間長，啟動時間短
- 鑑於有類似需求的使用者可能不多，因此結構應儘可能簡單，可以用容易取得的零件製作，容易進行故障排除
- 可以一次輸入 1 byte 的資料（也就是 ASCII 的128個字元再加上一些預設指令）


## 有關硬體的想像

根據以上的需求：

> 體積儘可能小，甚至可以貼合在皮膚上  
> 操作時的動作儘可能地小  

顯然身體不會有其它部位比手指靈活。
為了讓操作時的動作儘可能地小，最理想方式應該是把操控界面置於手掌之上。
只要使用者彎曲手指呈握拳狀，就可以進行操作。

show image...

> 結構應儘可能簡單  
> 可以一次輸入 1 byte 的資料  

在操作界面上，最簡單直觀的設計可能就是為每根手指各分配一個按鈕，一共六顆。
（由於兩根拇指並不方便碰到手掌，以及小指不靈活的關係，故排除它們）

show image...

若是把每顆按鈕未壓下的狀態表現為0，壓下的狀態表現為1，
所有按鈕未壓下的狀態(`0x00`)表現為每次輸入的間格，則剛剛好可以進行每次 1 byte 的輸入。
撇除掉一些不太容易做到的手勢（例如僅有無名指保持未壓下的狀態），
輸入128個 ASCII 碼應該是不會有問題的。

當然，這種純粹把手指當作位元使用的方式與摩斯電碼無異，需要大量的練習，
學習曲線肯定會比普通的鍵盤陡峭。

~~不過若真的能將操作界面如此設計，我想使用頻率會大大提升，習慣後自然也就不是什麼障礙。~~


### 其它細節

考慮到無線鍵盤和滑鼠的方案，整組設備或許可以包含接收端和發射端

發射端就如上面所講，是置於手掌上的操作界面，使用 2.4Ghz 發射訊號。
接收端則可以使用 USB Type-A 或 Type-C 的方式連接到電腦或手機，
接收 8 個按鈕的訊號，轉化為 ASCII 碼。

或者更激進一點，讓整個發射端實現藍芽協定或許也是不錯的方式。


## 如何實作

由於我對於電路一竅不通，以下只能先做一些假設。
在擁有相關知識的人面前，可能會覺得有點異想天開。

### 將操作界面置於束帶上，套在手掌上

### 壓電元件

壓電效應(Piezoelectricity)是指在特殊材料（例如石英晶體、陶瓷等）受到外部壓力時，由於晶體內部電荷分布的變化，表面會產生電荷。
使用 Piezo 在網路上進行搜尋，的確可以找到不少應用的論文和商品。

我在想，既然輸入設備的接收端可能就是身上的手機，距離根本不遠。
若是藉由相關材料製成按鈕，是否整個電路節構就可以省略電源，全由壓電效應產生的電流發射訊號。
如此一來，設計就會相對簡單，設備也會更加耐用。

- 就算 VR/AR 成真了， input still more important than output
- 以上僅僅是使用方法，具體實現不明

**Use mid journey to add image**
https://forum.arduino.cc/t/piezo-as-buttons/420919
https://www.pannam.com/dynapic-piezo/
