Buttonパッケージは、マウスやキーボードコマンドで起動できるボタンの挿入や操作を行うための関数を定義しています。これらのボタンは通常、さまざまな種類のハイパーリンクに使用されます。
ボタンとは、基本的にはバッファ内のテキスト範囲に紐付けられた、テキストまたはオーバーレイプロパティの集合のことです。これらのプロパティはボタンプロパティと呼ばれます。これらのプロパティの一つであるアクションプロパティは、ユーザーがキーボードやマウスでボタンを操作した際に呼び出される関数を指定します。このアクション関数は、ボタンの状態を確認し、必要に応じて他のプロパティを利用することができます。
ある意味で、ButtonパッケージはWidgetパッケージの機能を重複して提供しています。The Emacs Widget Libraryのはじめにを参照してください。Buttonパッケージの利点は、より高速でサイズが小さく、プログラミングが簡単である点です。ユーザーの視点から見れば、これら2つのパッケージによって生成されるインターフェースは非常に似ています。