趣味で現在、エンターキーを叩くと音が鳴るように、自分のEmacsを拡張しています。そのときに、以下のようなEmacs Lispを書いています:

 (defun java-button ()
    (interactive)
    (progn
      (start-process
       "java-button-process"
       nil
       "aplay"
       (concat (getenv "HOME") "/Archive/" "java.wav"))
      ;; (newline) ???
      ))

  (global-set-key [return] 'java-button)

このとき、global-set-keyの段階で、java-buttonという関数に上書きされてしまうため、元々あるreturn(エンターキー)の「バッファでのメニュー決定」などの機能が無くなってしまいます。

newlineを使えばいいのかなとも思ったのですが、Readonly-bufferのエラーとなってしまい、そのバッファのテキスト内容を編集しようとしてしまいます。

この場合、java-buttonという関数(?)から何を呼び出すのが適切なのでしょうか。それとも本来はこのように書くべきではなく、他の上書きしないような回避方法があるのでしょうか?