diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-04-12 02:29:47 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-04-12 02:29:47 +0000 |
commit | dab2bfdb6b85af0c25eb24464dd2f66a9f933427 (patch) | |
tree | 645c278d681878a24d369806898ab917b9548390 /src/w32console.c | |
parent | 5ecdeb34ed8624111930a4924a039967689cc232 (diff) | |
download | emacs-dab2bfdb6b85af0c25eb24464dd2f66a9f933427.tar.gz |
(Fset_message_beep): Defined.
(ring_bell): Support audio cards.
Diffstat (limited to 'src/w32console.c')
-rw-r--r-- | src/w32console.c | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/src/w32console.c b/src/w32console.c index 53e8e2cbcda..95d54a8c204 100644 --- a/src/w32console.c +++ b/src/w32console.c @@ -36,7 +36,7 @@ #include "ntinevt.h" -/* frrom window.c */ +/* from window.c */ extern Lisp_Object Frecenter (); /* from keyboard.c */ @@ -101,7 +101,7 @@ move_cursor (int row, int col) 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_glyphs (register GLYPH *string, register int len) /* 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 @@ delete_glyphs (int n) 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 @@ reset_terminal_modes (void) { unset_kbd (); SetConsoleActiveScreenBuffer (prev_screen); - CloseHandle (cur_screen); - cur_screen = NULL; } void @@ -597,9 +619,10 @@ glyph_to_pixel_coords (FRAME_PTR f, int x, int y, int *pix_x, int *pix_y) *pix_y = y; } -_VOID_ +void syms_of_ntterm () { defsubr (&Sset_screen_color); defsubr (&Sset_cursor_size); + defsubr (&Sset_message_beep); } |