-/* MS-DOS specific C utilities. -*- coding: raw-text -*-
+/* MS-DOS specific C utilities. -*- coding: cp850 -*-
-Copyright (C) 1993-1997, 1999-2012 Free Software Foundation, Inc.
+Copyright (C) 1993-1997, 1999-2013 Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* Contributed by Morten Welinder */
/* New display, keyboard, and mouse control by Kim F. Storm */
+/* Note: This file MUST use a unibyte encoding, to both display the
+ keys on the non-US keyboard layout as their respective labels, and
+ provide the correct byte values for the keyboard input to inject
+ into Emacs. See 'struct dos_keyboard_map' below. As long as there
+ are only European keyboard layouts here, we are OK with DOS
+ codepage 850 encoding. */
+
/* Note: some of the stuff here was taken from end of sysdep.c in demacs. */
#include <config.h>
hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1;
hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1;
hlinfo->mouse_face_window = Qnil;
- hlinfo->mouse_face_deferred_gc = 0;
hlinfo->mouse_face_mouse_frame = NULL;
}
static void
IT_frame_up_to_date (struct frame *f)
{
- Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f);
Lisp_Object new_cursor, frame_desired_cursor;
struct window *sw;
- if (hlinfo->mouse_face_deferred_gc
- || (f && f == hlinfo->mouse_face_mouse_frame))
- {
- block_input ();
- if (hlinfo->mouse_face_mouse_frame)
- note_mouse_highlight (hlinfo->mouse_face_mouse_frame,
- hlinfo->mouse_face_mouse_x,
- hlinfo->mouse_face_mouse_y);
- hlinfo->mouse_face_deferred_gc = 0;
- unblock_input ();
- }
+ FRAME_MOUSE_UPDATE (f);
/* Set the cursor type to whatever they wanted. In a minibuffer
window, we want the cursor to appear only if we are reading input
FRAME_BACKGROUND_PIXEL (SELECTED_FRAME ()) = colors[1];
}
the_only_display_info.mouse_highlight.mouse_face_mouse_frame = NULL;
- the_only_display_info.mouse_highlight.mouse_face_deferred_gc = 0;
the_only_display_info.mouse_highlight.mouse_face_beg_row =
the_only_display_info.mouse_highlight.mouse_face_beg_col = -1;
the_only_display_info.mouse_highlight.mouse_face_end_row =
static struct dos_keyboard_map us_keyboard = {
/* 0 1 2 3 4 5 */
-/* 01234567890123456789012345678901234567890 12345678901234 */
- "`1234567890-= qwertyuiop[] asdfghjkl;'\\ zxcvbnm,./ ",
+/* 01234567890123456789012345678901234567890 123 45678901234 */
+ "`1234567890-= qwertyuiop[] asdfghjkl;'\\ \\zxcvbnm,./ ",
/* 0123456789012345678901234567890123456789 012345678901234 */
- "~!@#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:\"| ZXCVBNM<>? ",
+ "~!@#$%^&*()_+ QWERTYUIOP{} ASDFGHJKL:\"| |ZXCVBNM<>? ",
0, /* no Alt-Gr key */
0 /* no translate table */
};
static struct dos_keyboard_map fr_keyboard = {
/* 0 1 2 3 4 5 */
/* 012 3456789012345678901234567890123456789012345678901234 */
- "ý&\82\",(-\8a_\80\85)= azertyuiop^$ qsdfghjklm\97* wxcvbnm;:! ",
+ "ý&\82\"'(-\8a_\80\85)= azertyuiop^$ qsdfghjklm\97* <wxcvbn,;:! ",
/* 0123456789012345678901234567890123456789012345678901234 */
- " 1234567890ø+ AZERTYUIOPù\9c QSDFGHJKLM%æ WXCVBN?./õ ",
+ " 1234567890ø+ AZERTYUIOPù\9c QSDFGHJKLM%æ >WXCVBN?./õ ",
/* 01234567 89012345678901234567890123456789012345678901234 */
" ~#{[|`\\^@]} Ï ",
0 /* no translate table */
static struct dos_keyboard_map it_keyboard = {
/* 0 1 2 3 4 5 */
/* 0 123456789012345678901234567890123456789012345678901234 */
- "\\1234567890'\8d< qwertyuiop\8a+> asdfghjkl\95\85\97 zxcvbnm,.- ",
+ "\\1234567890'\8d< qwertyuiop\8a+> asdfghjkl\95\85\97 <zxcvbnm,.- ",
/* 01 23456789012345678901234567890123456789012345678901234 */
- "|!\"\9c$%&/()=?^> QWERTYUIOP\82* ASDFGHJKL\87øõ ZXCVBNM;:_ ",
+ "|!\"\9c$%&/()=?^> QWERTYUIOP\82* ASDFGHJKL\87øõ >ZXCVBNM;:_ ",
/* 0123456789012345678901234567890123456789012345678901234 */
" {}~` [] @# ",
it_kbd_translate_table
static struct dos_keyboard_map dk_keyboard = {
/* 0 1 2 3 4 5 */
/* 0123456789012345678901234567890123456789012345678901234 */
- "«1234567890+| qwertyuiop\86~ asdfghjkl\91\9b' zxcvbnm,.- ",
+ "«1234567890+| qwertyuiop\86~ asdfghjkl\91\9b' <zxcvbnm,.- ",
/* 01 23456789012345678901234567890123456789012345678901234 */
- "õ!\"#$%&/()=?` QWERTYUIOP\8f^ ASDFGHJKL\92\9d* ZXCVBNM;:_ ",
+ "õ!\"#$%&/()=?` QWERTYUIOP\8f^ ASDFGHJKL\92\9d* >ZXCVBNM;:_ ",
/* 0123456789012345678901234567890123456789012345678901234 */
" @\9c$ {[]} | ",
0 /* no translate table */
erasing it works correctly... */
if (! NILP (saved_echo_area_message))
message_with_string ("%s", saved_echo_area_message, 0);
- message (0);
+ message1 (0);
while (statecount--)
xfree (state[statecount].screen_behind);
- IT_display_cursor (1); /* turn cursor back on */
+ IT_display_cursor (1); /* Turn cursor back on. */
/* Clean up any mouse events that are waiting inside Emacs event queue.
These events are likely to be generated before the menu was even
displayed, probably because the user pressed and released the button
/* Destructively turn backslashes into slashes. */
void
-dostounix_filename (char *p)
+dostounix_filename (char *p, int ignore)
{
msdos_downcase_filename (p);
if (!s) s = "c:/command.com";
t = alloca (strlen (s) + 1);
strcpy (t, s);
- dostounix_filename (t);
+ dostounix_filename (t, 0);
setenv ("SHELL", t, 0);
/* PATH is also downcased and backslashes mirrored. */
/* Current directory is always considered part of MsDos's path but it is
not normally mentioned. Now it is. */
strcat (strcpy (t, ".;"), s);
- dostounix_filename (t); /* Not a single file name, but this should work. */
+ dostounix_filename (t, 0); /* Not a single file name, but this should work. */
setenv ("PATH", t, 1);
/* In some sense all dos users have root privileges, so... */
/*
* A few unimplemented functions that we silently ignore.
*/
-int setpgrp (void) {return 0; }
+pid_t tcgetpgrp (int fd) { return 0; }
+int setpgid (int pid, int pgid) { return 0; }
int setpriority (int x, int y, int z) { return 0; }
+pid_t setsid (void) { return 0; }
#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
ssize_t
return buffer;
}
-ssize_t
-careadlinkatcwd (int fd, char const *filename, char *buffer,
- size_t buffer_size)
-{
- (void) fd;
- return readlink (filename, buffer, buffer_size);
-}
-
\f
#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2