システムコール経由で GUI を書くために (Steel Bank) Common Lisp を使用することについて誰か教えてもらえますか? いくつかのライブラリがあることは知っていますが、これは言語学習の演習なので、自分でやりたいと思っています。
Kubuntu 8.10 と SBCL 1.0.18 で開発しています。
ありがとう。
システムコール経由で GUI を書くために (Steel Bank) Common Lisp を使用することについて誰か教えてもらえますか? いくつかのライブラリがあることは知っていますが、これは言語学習の演習なので、自分でやりたいと思っています。
Kubuntu 8.10 と SBCL 1.0.18 で開発しています。
ありがとう。
sb-posix-packageを詳しく見てみましょう。しかし、そのページには、「パッケージ SB-UNIX に含まれる機能は、SBCL の内部使用のみを目的としています。その内容は、バージョンごとに変更される可能性があります。」と書かれています。
別の可能性-私が選択するもの-は、 CFFI を介して C-syscall(2) -Instructionを含め、それを実行することです。
ウィンドウ化された GUI を作成するには、X11 を使用して、少なくともペイントするウィンドウを提供する必要があります。したがって、ウィンドウを作成するための X11 仕様を理解し、Unix ドメイン ソケットにアクセスするための Syscall を実装したり、shm デバイスなどを開始したりする必要があります。
コンソールでグラフィックスだけが必要な場合は、 framebuffer-device の使用を考えることができます/dev/fb*
。それを使用するには、ioctl(2) と read(2)ing および write(2)ing のシステムコールが必要ですが、それでも、これは X11 を使用するよりもはるかに簡単だと思います (まだ多くの仕事)。おそらく、libFB のソースコードまたは同様のものを見て、初期化の方法などを確認する必要があります。
これは本当にやりたいことですか?これは大変な作業であり、多くのことを学ぶことになりますが、SBCL よりも Linux システム インフラストラクチャについて学ぶ方が多いと思います。SBCL で Syscall を使用したい場合は、Linux Syscall のみで TCP ソケットを開こうとする方がよいかもしれません。
システム コールを介して GUI を記述するということは、Gtk+ や Qt などの GUI ツールキットを使用しないということですか? このような場合、ソケットを介して X サーバーと直接通信し、すべての X11 プロトコル (または CLX を使用) とその上に GUI を実装する必要があります。しかし、X11 は複雑なため、これは簡単な作業ではありません。
X11 を掘り下げたい場合は、仕様へのリンクがいくつかあります: http://www.xfree86.org/current/specindex.html http://www.freedesktop.org/wiki/Specifications?action=show&redirect=Standards