changeset 11389:4a8836398f3e

(Fset_message_beep): Defined. (ring_bell): Support audio cards.
author Karl Heuer <kwzh@gnu.org>
date Wed, 12 Apr 1995 02:29:47 +0000
parents 96fa39ad9403
children 5c486ab3c695
files src/w32console.c
diffstat 1 files changed, 37 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32console.c	Wed Apr 12 02:27:16 1995 +0000
+++ b/src/w32console.c	Wed Apr 12 02:29:47 1995 +0000
@@ -36,7 +36,7 @@
 
 #include "ntinevt.h"
 
-/* frrom window.c */
+/* from window.c */
 extern Lisp_Object Frecenter ();
 
 /* from keyboard.c */
@@ -101,7 +101,7 @@
   cursor_coords.X = col;
   cursor_coords.Y = row;
   
-  if (updating_frame == NULL)
+  if (updating_frame == (FRAME_PTR) NULL)
     {
       SetConsoleCursorPosition (cur_screen, cursor_coords);
     }
@@ -388,14 +388,14 @@
   /* Write the attributes.  */
   if (!WriteConsoleOutputAttribute (cur_screen, attrs, len, cursor_coords, &i))
     {
-      printf ("Failed writing console attributes.\n");
+      printf ("Failed writing console attributes: %d\n", GetLastError ());
       fflush (stdout);
     }
 
   /* Write the characters.  */
   if (!WriteConsoleOutputCharacter (cur_screen, chars, len, cursor_coords, &i))
     {
-      printf ("Failed writing console characters.\n");
+      printf ("Failed writing console characters: %d\n", GetLastError ());
       fflush (stdout);
     }
   
@@ -413,19 +413,43 @@
   scroll_line (n, LEFT);
 }
 
+static unsigned int sound_type = 0xFFFFFFFF;
+
 void
 ring_bell (void)
 {
-  Beep (666, 100);
+  if (sound_type == 0xFFFFFFFF) 
+      Beep (666, 100);
+  else
+      MessageBeep (sound_type);
 }
 
-/* Reset to the original console mode but don't get rid of our console
-   For suspending emacs.  */
-void
-restore_console (void)
+DEFUN ("set-message-beep", Fset_message_beep, Sset_message_beep, 1, 1, 0,
+       "Set the sound generated when the bell is rung.\n\
+SOUND is 'asterisk, 'exclamation, 'hand, 'question, or 'ok\n\
+to use the corresponding system sound for the bell.\n\
+SOUND is nil to use the normal beep.")
+     (sound)
+     Lisp_Object sound;
 {
-  unset_kbd ();
-  SetConsoleActiveScreenBuffer (prev_screen);
+  CHECK_SYMBOL (sound, 0);
+
+  if (NILP (sound)) 
+      sound_type = 0xFFFFFFFF;
+  else if (EQ (sound, intern ("asterisk")))
+      sound_type = MB_ICONASTERISK;
+  else if (EQ (sound, intern ("exclamation"))) 
+      sound_type = MB_ICONEXCLAMATION;
+  else if (EQ (sound, intern ("hand"))) 
+      sound_type = MB_ICONHAND;
+  else if (EQ (sound, intern ("question"))) 
+      sound_type = MB_ICONQUESTION;
+  else if (EQ (sound, intern ("ok"))) 
+      sound_type = MB_OK;
+  else
+      sound_type = 0xFFFFFFFF;
+
+  return sound;
 }
 
 /* Put our console back up, for ending a suspended session.  */
@@ -441,8 +465,6 @@
 {
   unset_kbd ();
   SetConsoleActiveScreenBuffer (prev_screen);
-  CloseHandle (cur_screen);
-  cur_screen = NULL;
 }
 
 void
@@ -597,9 +619,10 @@
   *pix_y = y;
 }
 
-_VOID_
+void
 syms_of_ntterm ()
 {
   defsubr (&Sset_screen_color);
   defsubr (&Sset_cursor_size);
+  defsubr (&Sset_message_beep);
 }