外部ボタンで有効にできるスクリプトを使用してTTYを切り替える方法はありますか?私はLCD画面を備えた小さなホームコントローラRaspberryを持っています、キーボードやマウスは接続されていません、そしてLCDの横には再起動などのコマンドを実行するためにマップされたいくつかのボタンがあります。いずれかのボタンをプログラムしてキーを押すと他の(次の)ttyに切り替わり、「ループ」が終わるとtty1に戻ります。chvt
キーボードの組み合わせを知っていますが、Alt F1, F2...
それらのどれも私が望むように動作しません。可能ですか? ?手がかりは、「ラック」にアクセスするときに確認できるように、異なるttyに3つ以上のプログラム(診断など)があることです。 :)
答え1
ループKVTなどのプログラムを作成しchvt
、他のプログラムを別のボタンに接続したかのように接続するだけです。
FreeBSDから:
- 現在アクティブなKVT番号を出力として使用できます
vidcontrol -i active
。 - 「次の」タスクは、
vidcontrol -s $NEXT
増分および一部のモジュールでの作業の後です。
NetBSDから:
- 現在アクティブなKVT番号を出力として使用できます
wsconscfg -g
。 - 「次の」タスクは、
wsconscfg -s $NEXT
増分および一部のモジュールでの作業の後です。
Linuxの場合:
- 現在有効になっているKVT番号は、以下の擬似ファイルにあります
/sys/class/tty
。 - 「次の」タスクは、
chvt $NEXT
増分および一部のモジュールでの作業の後です。 - 可能な最大KVT数は固定されています(必要に応じて、いつでもより低い最大値を直接接続できます)。
3つすべてについて、上記のすべての作業は、いくつかの簡単なシェルスクリプトアルゴリズムを使用して実行できます。あるいは、別の言語でプログラムを作成し、直接低レベルのioctl()
呼び出しを行うこともできます(VT_GETACTIVE
例:VT_ACTIVATE
FreeBSDで)。
OpenBSDにはこれを達成するための便利なユーティリティがないため、wsdisplay
(4)を直接呼び出すプログラミングが必要です。ioctl()
フレームバッファに直接レンダリングされるユーザ空間仮想端末は、同様のメカニズムを有することができるが、ソフトウェアに依存する。たとえば、私のデバイスは、「消費者デバイスアプリケーションが起動しました」という実際のUSB HIDコードで応答します。次/前の作業キー。
追加読書
- ジョナサンデボインポラード(2018)。 」Linux vt」。 装備。 Nosh ツールセット。
- Søren Schmidtet al。 (2016-01-19).
vidcontrol
。 FreeBSD 共通コマンドマニュアル。 wsconscfg
。NetBSD システム管理者マニュアル。 2006年6月24日。- ジョナサンデボインポラード(2018)。
console-multiplexor
。スナックガイド。ソフトウェア。 - ジョナサンデボインポラード(2018)。
console-multiplexor-control
。スナックガイド。ソフトウェア。