web-dev-qa-db-ja.com

Terminal.appにカスタムキーアイコンを表示するにはどうすればよいですか?

ユーザーとパスワードの認証が必要なサーバーにPOSTリクエストを送信すると、Terminal.appは点滅するキーアイコンを表示します。これはI believe Unicodeではありません。

Enter Host password for user 'bucaran'

ユーザーに自分のスクリプトに適切な情報を入力するように依頼すると、TERM_PROGRAMApple_Terminalですが、点滅するアイコンの表示方法がわかりません。

4
Jorge Bucaran

「キー」画像は文字のグリフではなく、ターミナルが描画するカスタムカーソルの形です。

ターミナルは、ユーザーがパスワードまたは同様の機密データの入力を求められているように見えるときはいつでも、この特別なカーソル形状を表示します。このカーソルの表示に加えて、入力メソッドが機密情報をインラインテキストまたは別のウィンドウに誤って表示することを回避するために、キーボードをローマ字入力メソッドに制限します。これは、標準のOSXパスワードテキストフィールドのように動作します。

TTYデバイスが正規(別名「調理済み」)モードに設定されており、文字エコーがオフになっていることを確認すると、端末はこのモードに入ります。この構成では、ユーザー入力はエコーされず、Returnを入力してアプリケーションプログラムに送信するまで、TTYデバイス入力バッファーのみが文字を表示します。これにより、テキストの入力中にTTYデバイスもアプリケーションプログラムもユーザー入力をエコーできないようになるため、この構成は通常、機密情報の読み取りにのみ使用されます。

実行することで、Bashで実際の動作を確認できます

stty -echo && echo Tell me your secrets: && cat; stty echo

stty -echoはTTY文字エコーをオフにし、Bashがコマンドを実行すると正規モードが有効になるため、次のcatコマンドは「パスワード」モードで実行されます。 catは、入力するまで入力の各行をエコーし​​ます Control-Dstty echoは、catが終了した後にオンに戻します。

シェルスクリプトは、単にread -sを使用して、このモードでTTYを使用して読み取ることができることに注意してください。

while read -sp 'Tell me your secrets: '; do echo; echo $REPLY | vis; done
9
Chris Page