Commit Graph

50 Commits

Author SHA1 Message Date
Bryce Denney
c74b8c55fc - add key mapping for SDL gui, to demonstrate/verify that key mapping is not
specific to X windows.  I changed a few names of variables and methods to
  sound less X windows specific, for example in the BXKeyEntry struct
  the "xwinKey" field is now called "hostKey".
- remove the hacks in bx_keymap_c::loadKeymap that checked that every
  keysym started with "XK_".  Now I can still make that check, but it
  is done in x.cc's convertStringToXKeysym() instead.
- in sdl.cc, load the keymap in specific_init function.  I had to
  create a conversion function from SDL key names to SDLkey values.
  I created a table of key names and associated values, and I just
  do a strcmp on each name.  It's not a fast algorithm obviously but this
  conversion only has to be done for maybe 200 keys at startup time.
- added a key map file for SDL called sdl-pc-us.map.  Since this has
  basically all the SDLK_* symbols defined, it is a good starting point
  if you need to make any other keymaps.
- modified: gui/keymap.cc gui/keymap.h gui/sdl.cc gui/x.cc iodev/keyboard.cc
- added: gui/sdlkeys.h gui/keymaps/sdl-pc-us.map
2002-10-08 06:14:53 +00:00
Bryce Denney
c901d60d00 - only XFlush if display has been opened already 2002-10-02 02:52:24 +00:00
Bryce Denney
ae1ac3e266 - add cases in switch statement for keys: Right CTRL, Right ALT, Scroll Lock,
Print Screen, Pause.
2002-09-25 07:21:38 +00:00
Bryce Denney
97f3350daf - only call XCloseDisplay if display has been opened 2002-09-23 16:30:27 +00:00
Bryce Denney
17624e7549 - clean up memory usage after bx_gui_c::get_clipboard_text for win32,
X windows, wxWindows.  Each platform has its own way of returning
  a variable length string, and its own rules about how you're supposed
  to dispose of the string.  Now all platforms do the same thing: they
  allocate a Bit8u buffer with C++ "new" and copy the clipboard data in,
  then release the clipboard data in the platform-specific correct way.
  The Bit8u buffer is sent to the keyboard code, which frees it with
  delete [] when finished.
- modified: gui/wx.cc gui/x.cc gui/win32.cc iodev/keyboard.cc
2002-09-05 15:57:37 +00:00
Bryce Denney
26385f2866 - I've added lots of comments in siminterface.h, and tried to clean up
the terminology a bit.  In particular, the term "gui" has started
  to mean different things in different contexts, so I've defined
  some more specific names for the parts of the user interface, and
  updated comments and some variable names to reflect it.  See
  siminterface.h for a more complete description of all of these.

    VGAW: VGA display window and toolbar buttons, the traditional Bochs
      display which is ported to X, win32, MacOS X, etc.  Implemented
      in gui/gui.* and platform dependent gui/*.cc files.
    CI: configuration interface that lets the user change settings such
      as floppy disk image, ne2k settings, log options.  The CI consists
      of two parts: configuration user interface (CUI) which does the
      actual rendering to the screen and handles key/mouse/menu events,
      and the siminterface object.
    CUI: configuration user interface.  This handles the user interactions
      that allow the user to configure Bochs.  To actually change any
      values it talks to the siminterface object.  One implementation of
      the CUI is the text-mode menus in gui/control.cc.  Another
      implementation is (will be) the wxWindows menus and dialogs in
      gui/wxmain.cc.
    siminterface: the glue between the CUI and the simulation code,
      accessible throughout the code by the global variable
        bx_simulator_interface_c *SIM;
      Among other things, siminterface methods allow the simulator to ask the
      CUI to display things or ask for user input, and allows the CUI
      to query and modify variables in the simulation code.


    GUI: Literally, "graphical user interface".  Until the configuration menus
      and wxWindows came along, everyone understood that "gui" referred to the
      VGA display window and the toolbar buttons because that's all there
      was.  Now that we have the wxWindows code, which implements both the VGAW
      and the CUI, while all other platforms implement only the VGAW, it's not
      so clear.  So, I'm trying to use VGAW, CI, and CUI consistently since
      they are more specific.
    control panel: This has been used as another name for the configuration
      interface.  "control panel" is also somewhat unspecific and it sounds
      like it would be graphical with buttons and sliders, but our text-mode
      thing is not graphical at all.  I've replaced "control panel" with
      "configuration interface" wherever I could find it.  In configure script,
      the --disable-control-panel option is still supported, but it politely
      suggests that you use --disable-config-interface instead.
- clean up comments in siminterface,wx* code
- add comments and examples for bx_param_* and BxEvents
- remove some obsolete stuff: notify_*_args,
  bx_simulator_interface_c::[sg]et_enabled() methods
- in siminterface.cc, move a few bx_real_sim_c methods to where they belong,
  with the rest of the methods.  No changes to the actual methods.
- remove some DOS ^M's which crept in and confused my editor.
2002-08-26 15:31:23 +00:00
Volker Ruppert
1d4d5aa244 - new "user" button added to the headerbar. It can send keyboard shortcuts to
the guest OS. The shortcut can be defined in the bochsrc or in the config
  interface. It is possible to change it at runtime.

  These shortcuts are currently recognized:
  ctrlaltdel, ctrlaltesc, ctrlaltf1, alttab

  Here is the list of changes:

  * userbutton.h and userbutton.xpm added in gui/bitmaps
  * config options for the userbutton shortcut added
  * initialize the new button in the gui.cc
  * the new userbutton handler generates keypresses and relaeses depending on
    the shortcut keyword
  * the gui stops adding buttons to the headerbar if not enough space is left.
    This can happen when the screen width is 320 pixels (done for X11 only).
  * TODO: build a dialog box for the wxWindows gui
2002-08-09 06:16:43 +00:00
Volker Ruppert
a8fc8f8d84 - cleaned up and improved the X gui text font handling
* dimension_update() stores the global variables columns, rows and
    font_height_orig; it uses X font sizes to recalculate the screen size
  * text_update() uses the columns, rows and X font sizes when redrawing the
    screen; it adjusts the cursor shape using the font sizes
2002-05-18 16:02:20 +00:00
Volker Ruppert
462871fd3a - Improvements for dimension_update() in text mode and text_update()
- The emulated vga card issues a dimension_update() using the real
    screen dimensions and the real font height.

  - The gui selects a font with the requested height or it recalculates
    the screen height if the font height is not available.

  - The text_update() function uses a new variable 'ncols' instead of the
    fixed value of 80 for the number of text columns.

  I have tested the changes with X11/Linux, SDL, wxGTK and win32. The changes
  in the other guis are not tested yet.
2002-04-20 07:19:35 +00:00
Bryce Denney
30aaf4088e - commit patch.wxwindows.gz in the main branch. Now you can try out
the wxwindows interface by just "configure --with-wx; make"

  Modified Files:
    Makefile.in bochs.h config.h.in configure configure.in
    load32bitOShack.cc logio.cc main.cc cpu/cpu.cc cpu/cpu.h
    debug/dbg_main.cc gui/Makefile.in gui/control.cc gui/gui.cc
    gui/siminterface.cc gui/siminterface.h gui/x.cc iodev/cdrom.cc
    iodev/keyboard.cc memory/misc_mem.cc
  Added Files:
    README-wxWindows wxbochs.rc gui/wx.cc gui/wxmain.cc
    gui/wxmain.h gui/bitmaps/cdromd.xpm
    gui/bitmaps/configbutton.xpm gui/bitmaps/copy.xpm
    gui/bitmaps/floppya.xpm gui/bitmaps/floppyb.xpm
    gui/bitmaps/mouse.xpm gui/bitmaps/paste.xpm
    gui/bitmaps/power.xpm gui/bitmaps/reset.xpm
    gui/bitmaps/snapshot.xpm
  Removed Files:
    patches/patch.wxwindows.gz
2002-04-18 00:22:20 +00:00
Christophe Bothamy
2dceae9e8f - fixed bug on NumericKeypad 5 when not using keymapping 2002-04-05 12:10:50 +00:00
Bryce Denney
54721fc3d2 - if vga font not found, search for a font called "-*-vga-*" too.
This was suggested in the bug report:
  [ #537593 ] vga font not being found.
2002-04-03 04:22:18 +00:00
Bryce Denney
8ba46b2450 - apply patch.x11-auto-private-colormap 2002-03-19 23:38:08 +00:00
Bryce Denney
7a6fbf9597 - fix copy to clipboard problem for X11 by calling XSetSelectionOwner()
before XStoreBytes.
2002-03-19 18:43:22 +00:00
Volker Ruppert
92b06b9ebf - new function get_clipboard_text() for GUI specific clipboard handling
GUI specific paste functions for X11 and WIN32 in paste_handler() moved to
  the new function
- get_clipboard_text() prepared for other GUIs
- set_clipboard_text() has now a return value (0 = failed or not implemented)
- use portable code in copy_handler() if set_clipboard_text() fails
- snapshot_handler() prepared for adding a file dialog call
- writing snapshot file in binary mode (LF->CRLF conversion already done)
2002-03-16 11:30:06 +00:00
Volker Ruppert
7373bb7647 - new function set_clipboard_text() for GUI specific clipboard handling
GUI specific copy functions for X11 and WIN32 in copy_handler() moved to
  the new function
- set_clipboard_text() prepared for other GUIs
- value of text mode cursor variables fixed (and renamed in x.cc)
- BX_ERROR message in snapshot_handler() fixed
2002-03-15 16:45:10 +00:00
Bryce Denney
8125bee908 - commit patch.paste 2002-03-11 15:04:58 +00:00
Christophe Bothamy
e931247144 - New keymap architecture.
The localisation is now read from keymap files
  The keymap files are in gui/keymaps directory
2002-03-06 09:31:55 +00:00
Stu Grossman
6f3d73741a Deal with systems that don't have XK_EuroSign defined. 2002-03-05 15:42:02 +00:00
Volker Ruppert
856ad9f99d - statement 'static' removed from bx_gui_c::sim_is_idle() 2002-01-27 09:24:50 +00:00
Bryce Denney
d2a3364463 - clean up comment 2002-01-07 16:30:43 +00:00
Bryce Denney
11d907e40a - add Spanish keymap, from a patch by Vicente Hernando Ara
<bizenton@navegalia.com>
2002-01-07 15:50:50 +00:00
Volker Ruppert
384d4f1cce - added Windows(tm) keys to the German keymap 2001-12-19 19:15:12 +00:00
Volker Ruppert
0093de1adc - missing right control key added to german keymap 2001-12-16 17:17:16 +00:00
Christophe Bothamy
bd7420ade5 - Added XFree86 keyboard mapping (us, fr, de) 2001-12-14 17:56:37 +00:00
Volker Ruppert
051ef5f1c9 - text mode cursur feature added for X and prepared for other GUIs 2001-12-13 18:36:29 +00:00
Bryce Denney
0708c77999 - first look for a font called bochsvga, then for one called vga, then
panic
2001-12-08 13:42:55 +00:00
Bryce Denney
e0b4801b1f - commit Roland Mainz's idle hack as a configure option. To try it,
configure with --enable-idle-hack.  I have moved most of the code into
  x.cc since it is X windows specific.
2001-11-12 00:45:09 +00:00
Gregory Alexander
98b68ec140 Changed the error for missing fonts to point to the documentation.
Modified Files:
 	x.cc
2001-10-11 13:03:35 +00:00
Bryce Denney
daf2a9fb55 - add RCS Id to header of every file. This makes it easier to know what's
going on when someone sends in a modified file.
2001-10-03 13:10:38 +00:00
Bryce Denney
1fd43969a2 - commit patch from David Haslam <dch@sirius.clara.co.uk>
submitted to source forge on 2001-08-27.
  [ #455763 ] Cursor trail with DOS Edit/Minix vi
2001-09-11 16:50:59 +00:00
Todd T.Fries
28885e4973 some INFO->DEBUG/ERROR cleanups 2001-08-31 16:06:32 +00:00
Gregory Alexander
03a2ae5bbd Minor theoretical fix for X. I don't see any benefit, but
it may just be that there are other problems afoot.


 Modified Files:
 	x.cc
2001-08-24 13:50:02 +00:00
Todd T.Fries
a06b031dcf setprefix -> put 2001-06-27 19:16:01 +00:00
Bryce Denney
06fb629d85 - backed out patch.kbd-dieter. The patch appears to work on all XFree86
X servers that I've seen, however on other X servers it makes all
  key mappings into absolute junk.  We need to continue to work on this
  patch to support all X servers and all key maps.
2001-06-25 22:57:27 +00:00
Bryce Denney
602b054d38 - when key pressed, print both the keysym and keycode with BX_DEBUG 2001-06-25 21:28:00 +00:00
Bryce Denney
c6e98db0fc - commit patches/patch.kbd-dieter by Dieter Mittelmaier
<dieter.mittelmaier@freenet.de> which fixes X11 keyboard mapping
  on German keyboards using Keycodes instead of Keysyms.
  His comments are:
  > I mapped your BX_KEY-defines in gui.h to values from XFree
  > ../keycodes/Xfree86. Keysyms in x.cc would now translated
  > to keycodes. Now I can use german or us keyboard-layout in
  > win95 and all works well.
  > Note: Changing keyboard layout in win95 to en works too
  > Also you must change keyboard setup in win95 to AT-Enhanced 101/102 keyboard
2001-06-25 13:35:51 +00:00
Bryce Denney
fba34be1e7 - added a new method to all GUIs called mouse_enabled_changed_specific,
which notifies them that the mouse_enabled bit has changed.  Now that
  mouse_enabled can be initialized or modified by parameter events in
  addition to GUI events, the guis must be prepared for it.  I have pasted
  empty method definitions into mouse_enabled_changed_specific for all
  guis except for X11, which I did the right way.  The implementation
  of this function must use the argument "val" rather than reading the
  parameter.
2001-06-23 03:18:14 +00:00
Bryce Denney
ec0fbf18bc - convert nearly all bx_options to parameter form. All options that have
been converted into parameters temporarily have the letter "O" appended
  to their name.  I don't want to keep it this way, but it has helped
  in the conversion process because the compiler refuses to compile the
  old uses of the name.  Before I started using the "O" trick, there were
  many bugs like this:   if (bx_options.diskc.present) {...}
  This was legal with the new parameters, but it was testing whether the
  parameter structure had been created, instead of testing the value of
  the present parameter.  Renaming present to Opresent turns this into
  a compile error, which points out the incorrect use of the param.
- the "--disable-control-panel" no longer works, I'm afraid.  I can no
  longer support this and continue progress.
2001-06-20 14:01:39 +00:00
Todd T.Fries
12985edb26 setprefix now uses a variable length name as a string for an argument 2001-06-19 21:36:09 +00:00
Bryce Denney
c3d88c5924 - now ips, mouse_enabled, vga_update_interval, and rom_path are
declared as bx_param_c * types in the bx_options structure.  They are
  initialized in main.cc (bx_init_options) with default values.
  Access to parameters of this type should always be like this:
    bx_options.mouse_enabled->get ();
    bx_options.mouse_enabled->set (newval);
  Eventually I will be transferring all options to this format.
2001-06-16 23:08:32 +00:00
Todd T.Fries
2bbb1ef8eb strip '\n' from BX_{INFO,DEBUG,ERROR,PANIC}
don't need it, moved the output of it into the general io functions.
saves space, as well as removes the confusing output if a '\n' is left off
2001-05-30 18:56:02 +00:00
Todd T.Fries
e291dd17d4 demote BX_INFO to BX_ERROR 2001-05-25 22:17:51 +00:00
Todd T.Fries
aa8081aff3 cleanup output more 2001-05-24 14:08:54 +00:00
Todd T.Fries
cd01453c9d cleanup output 2001-05-23 19:36:55 +00:00
Bryce Denney
c32028ab09 - title of window used to have the old website name in it. 2001-05-18 05:45:01 +00:00
Todd T.Fries
6a958e88c5 typo, double parens 2001-05-16 17:51:56 +00:00
Todd T.Fries
bdb89cd364 merge in BRANCH-io-cleanup.
To see the commit logs for this use either cvsweb or
cvs update -r BRANCH-io-cleanup and then 'cvs log' the various files.

In general this provides a generic interface for logging.

logfunctions:: is a class that is inherited by some classes, and also
.   allocated as a standalone global called 'genlog'.  All logging uses
.   one of the ::info(), ::error(), ::ldebug(), ::panic() methods of this
.   class through 'BX_INFO(), BX_ERROR(), BX_DEBUG(), BX_PANIC()' macros
.   respectively.
.
.   An example usage:
.     BX_INFO(("Hello, World!\n"));

iofunctions:: is a class that is allocated once by default, and assigned
as the iofunction of each logfunctions instance.  It is this class that
maintains the file descriptor and other output related code, at this
point using vfprintf().  At some future point, someone may choose to
write a gui 'console' for bochs to which messages would be redirected
simply by assigning a different iofunction class to the various logfunctions
objects.

More cleanup is coming, but this works for now.  If you want to see alot
of debugging output, in main.cc, change onoff[LOGLEV_DEBUG]=0 to =1.

Comments, bugs, flames, to me: todd@fries.net
2001-05-15 14:49:57 +00:00
Bryce Denney
a6fef54678 - update copyright dates to 2001 for all mandrake headers
- for bochs files with other header, replaced with current mandrake header
2001-04-10 02:20:02 +00:00
cvs
beff63eb32 - entered original Bochs snapshot bochs-2000_0325a.tar.gz from
ftp.bochs.com
2001-04-10 01:04:59 +00:00