diff --git a/bochs/patches/patch.fhs b/bochs/patches/patch.fhs deleted file mode 100644 index 142dcfcfd..000000000 --- a/bochs/patches/patch.fhs +++ /dev/null @@ -1,225 +0,0 @@ ----------------------------------------------------------------------- -Patch name: patch.fhs -Author: Robert Millan -Date: May, 16th 2002 - -Detailed description: - see patch [ 551811 ] - Location of some files on Bochs installation breaks the - Filesystem Hierrachy Standard, to be found at: - - http://www.pathname.com/fhs/ - - It is important to comply with FHS because most - distributions require it in order to accept packages. - - We have to change some more files to make them work with the new file - locations. (Volker) - -Patch was created with: - diff -u -Apply patch to what version: - CVS as May, 16th 2002 -Instructions: - To patch, go to main bochs directory. - Type "patch -p0 < THIS_PATCH_FILE". ----------------------------------------------------------------------- -diff -u -r1.68 Makefile.in ---- Makefile.in 18 Apr 2002 00:22:18 -0000 1.68 -+++ Makefile.in 15 May 2002 09:06:13 -0000 -@@ -30,19 +30,21 @@ - bindir = @bindir@ - mandir = @mandir@ - man1dir = $(mandir)/man1 -+docdir = $(prefix)/share/doc/bochs -+sharedir = $(prefix)/share/bochs - - DESTDIR = - - VERSION=@VERSION@ - VER_STRING=@VER_STRING@ - REL_STRING=@REL_STRING@ --BOCHSDIR=$(prefix)/bochs --VERSIONDIR=$(BOCHSDIR)/$(VERSION) - MAN_PAGE_LIST=bochs bochsrc bximage bochs-dlx --INSTALL_LIST=bios/BIOS-* CHANGES COPYING README bios/VGABIOS* bochs bochsdbg bximage @INSTALL_LIST_FOR_PLATFORM@ -+INSTALL_LIST_SHARE=bios/BIOS-* bios/VGABIOS* @INSTALL_LIST_FOR_PLATFORM@ -+INSTALL_LIST_DOC=CHANGES COPYING README -+INSTALL_LIST_BIN=bochs bochsdbg bximage $(srcdir)/build/linux/bochs-docs -+INSTALL_LIST=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) $(INSTALL_LIST_BIN) - INSTALL_LIST_X11=install-x11-fonts test-x11-fonts - INSTALL_LIST_SED=DOC-linux.html --BOCHS_SCRIPTS=bochs-docs - CP=cp - CAT=cat - RM=rm -@@ -58,7 +60,7 @@ - RMDIR=rmdir - TAR=tar - CHMOD=chmod --GZIP=gzip -+GZIP=gzip -9 - GUNZIP=gunzip - ZIP=zip - UNIX2DOS=unix2dos -@@ -287,35 +289,31 @@ - # install target for unix - ##################################################################### - --install_unix: install_bin install_man install_fonts unpack_dlx install_dlx -- --install_fonts:: -- -srcdir=$(srcdir) $(VERSIONDIR)/install-x11-fonts -+install_unix: install_bin install_man install_share install_doc - - install_bin:: -- -mkdir -p $(DESTDIR)$(BOCHSDIR) -- -mkdir -p $(DESTDIR)$(VERSIONDIR) -- -mkdir -p $(DESTDIR)$(bindir) -- test -d $(DESTDIR)$(VERSIONDIR) -- test -w $(DESTDIR)$(VERSIONDIR) -- for i in bochs-docs; do cp $(srcdir)/build/linux/$$i $(DESTDIR)$(bindir)/$$i; $(CHMOD) 755 $(DESTDIR)$(bindir)/$$i; done -- for i in $(INSTALL_LIST_SED); do cp $(srcdir)/build/linux/$$i $(DESTDIR)$(VERSIONDIR)/$$i; $(CHMOD) 644 $(DESTDIR)$(VERSIONDIR)/$$i; done -+ for i in $(DESTDIR)$(bindir); do mkdir -p $$i && test -d $$i && test -w $$i; done - $(CHMOD) a+x install-x11-fonts test-x11-fonts -- for i in $(INSTALL_LIST); do if test -f $$i; then cp $$i $(DESTDIR)$(VERSIONDIR); else cp $(srcdir)/$$i $(DESTDIR)$(VERSIONDIR); fi; done -- $(LN_S) $(VERSIONDIR)/bochs $(DESTDIR)$(bindir)/bochs -- $(LN_S) $(VERSIONDIR)/bximage $(DESTDIR)$(bindir)/bximage -- $(CP) -r $(srcdir)/docs-html $(DESTDIR)$(VERSIONDIR) -- $(CP) -r $(srcdir)/gui/keymaps $(DESTDIR)$(VERSIONDIR) -- $(RM) -f $(DESTDIR)$(VERSIONDIR)/README -- $(CAT) $(srcdir)/build/linux/README.linux-binary $(srcdir)/README > $(DESTDIR)$(VERSIONDIR)/README -- $(CP) $(srcdir)/font/vga.pcf $(DESTDIR)$(VERSIONDIR) -- $(CP) $(srcdir)/.bochsrc $(DESTDIR)$(VERSIONDIR)/bochsrc-sample.txt -- $(RM) -f $(DESTDIR)$(BOCHSDIR)/latest -- $(LN_S) $(VERSION) $(DESTDIR)$(BOCHSDIR)/latest -+ for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done -+ -+install_share:: -+ for i in $(DESTDIR)$(sharedir); do mkdir -p $$i && test -d $$i && test -w $$i; done -+ for i in $(INSTALL_LIST_SHARE); do if test -f $$i; then cp $$i $(DESTDIR)$(sharedir); else cp $(srcdir)/$$i $(DESTDIR)$(sharedir); fi; done -+ $(CP) -r $(srcdir)/gui/keymaps $(DESTDIR)$(sharedir) -+ $(CP) $(srcdir)/font/vga.pcf $(DESTDIR)$(sharedir)/vga.pcf -+ -+install_doc:: -+ for i in $(DESTDIR)$(docdir); do mkdir -p $$i && test -d $$i && test -w $$i; done -+ for i in $(INSTALL_LIST_SED); do install -m644 $(srcdir)/build/linux/$$i $(DESTDIR)$(docdir)/$$i; done -+ for i in $(INSTALL_LIST_DOC); do if test -f $$i; then cp $$i $(DESTDIR)$(docdir); else cp $(srcdir)/$$i $(DESTDIR)$(docdir); fi; done -+ $(CP) -r $(srcdir)/docs-html $(DESTDIR)$(docdir) -+ $(RM) -f $(DESTDIR)$(docdir)/README -+ $(CAT) $(srcdir)/build/linux/README.linux-binary $(srcdir)/README > $(DESTDIR)$(docdir)/README -+ $(CP) $(srcdir)/.bochsrc $(DESTDIR)$(docdir)/bochsrc-sample.txt - - install_man:: - -mkdir -p $(DESTDIR)$(man1dir) -- for i in $(MAN_PAGE_LIST); do cat $(srcdir)/doc/man/$$i.1 | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(DESTDIR)$(man1dir)/$$i.1; chmod 644 $(DESTDIR)$(man1dir)/$$i.1; done -+ for i in $(MAN_PAGE_LIST); do cat $(srcdir)/doc/man/$$i.1 | $(SED) 's/@VERSION@/$(VERSION)/g' | $(GZIP) -c > $(DESTDIR)$(man1dir)/$$i.1.gz; chmod 644 $(DESTDIR)$(man1dir)/$$i.1.gz; done - - download_dlx: $(DLXLINUX_TAR) - -@@ -331,20 +329,18 @@ - (cd dlxlinux; $(MV) bochsrc.txt bochsrc.txt.orig; $(SED) -e "s/1\.1\.2/$(VERSION)/g" -e 's,/usr/local,$(prefix),g' < bochsrc.txt.orig > bochsrc.txt; rm -f bochsrc.txt.orig) - - install_dlx: -- $(RM) -rf $(BOCHSDIR)/dlxlinux -- cp -r dlxlinux $(BOCHSDIR)/dlxlinux -- $(CHMOD) 755 $(BOCHSDIR)/dlxlinux -- $(GZIP) $(BOCHSDIR)/dlxlinux/hd10meg.img -- $(CHMOD) 644 $(BOCHSDIR)/dlxlinux/* -- for i in bochs-dlx; do cp $(srcdir)/build/linux/$$i $(bindir)/$$i; $(CHMOD) 755 $(bindir)/$$i; done -+ $(RM) -rf $(DESTDIR)$(sharedir)/dlxlinux -+ cp -r dlxlinux $(DESTDIR)$(sharedir)/dlxlinux -+ $(CHMOD) 755 $(DESTDIR)$(sharedir)/dlxlinux -+ $(GZIP) $(DESTDIR)$(sharedir)/dlxlinux/hd10meg.img -+ $(CHMOD) 644 $(DESTDIR)$(sharedir)/dlxlinux/* -+ for i in bochs-dlx; do cp $(srcdir)/build/linux/$$i $(bindir)/$$i; $(CHMOD) 755 $(DESTDIR)$(bindir)/$$i; done - - uninstall:: -- $(RM) -rf $(VERSIONDIR) -- $(RM) -rf $(BOCHSDIR)/dlxlinux -- $(RM) -rf $(BOCHSDIR)/latest -- -$(RMDIR) $(BOCHSDIR) -+ $(RM) -rf $(DESTDIR)$(sharedir) -+ $(RM) -rf $(DESTDIR)$(docdir) - for i in bochs bximage bochs-dlx $(BOCHS_SCRIPTS); do rm -f $(DESTDIR)$(bindir)/$$i; done -- for i in $(MAN_PAGE_LIST); do $(RM) -f $(man1dir)/$$i.1; done -+ for i in $(MAN_PAGE_LIST); do $(RM) -f $(man1dir)/$$i.1.gz; done - - V6WORKSPACE_ZIP=build/win32/workspace.zip - V6WORKSPACE_FILES=bochs.dsw bochs.dsp bochs.opt cpu/cpu.dsp \ -diff -urN ../bochs/build/linux/bochs-dlx.in ./build/linux/bochs-dlx.in ---- ../bochs/build/linux/bochs-dlx.in Fri Dec 7 16:46:13 2001 -+++ ./build/linux/bochs-dlx.in Wed Jun 26 21:08:22 2002 -@@ -1,6 +1,6 @@ - #!/bin/sh - BOCHS=@prefix@/bin/bochs --DLXINST=@prefix@/bochs/dlxlinux -+DLXINST=@prefix@/share/bochs/dlxlinux - GZIP=@GZIP@ - if [ ! -z $1 ]; then - DLXPATH=$1 -diff -urN ../bochs/build/linux/bochs-docs.in ./build/linux/bochs-docs.in ---- ../bochs/build/linux/bochs-docs.in Fri May 31 09:57:56 2002 -+++ ./build/linux/bochs-docs.in Wed Jun 26 18:41:55 2002 -@@ -1,6 +1,6 @@ - #!/bin/sh - BROWSER=netscape --URL=@prefix@/bochs/@VERSION@/DOC-linux.html -+URL=@prefix@/share/doc/bochs/DOC-linux.html - MY_PATH=@prefix@/bin/bochs-docs - - cat < /dev/null 2>&1 -+ rmdir /usr/share/bochs > /dev/null 2>&1 -diff -urN ../bochs/install-x11-fonts.in ./install-x11-fonts.in ---- ../bochs/install-x11-fonts.in Mon Mar 18 12:39:57 2002 -+++ ./install-x11-fonts.in Wed Jun 26 18:35:53 2002 -@@ -9,7 +9,7 @@ - - X11_FONT_PATH_CHOICES="/usr/X11R6/lib/X11/fonts /usr/local/lib/X11/fonts /usr/lib/X11/fonts /usr/openwin/lib/X11/fonts" - FONTS=vga.pcf --FONT_SOURCE_PATH_CHOICES="font ${srcdir+$srcdir/font} @prefix@/bochs/latest" -+FONT_SOURCE_PATH_CHOICES="font ${srcdir+$srcdir/font} @prefix@/share/bochs" - - die () { - cat < -@@ -1541,6 +1542,8 @@ - - // try several possibilities for the bochsrc before giving up - -+ bochsrc_include_count++; -+ - fd = fopen (rcfile, "r"); - if (fd == NULL) return -1; - -@@ -1555,6 +1558,7 @@ - } - } while (!feof(fd)); - fclose(fd); -+ bochsrc_include_count--; - return 0; - } - -@@ -1581,7 +1585,10 @@ - - num_params = 0; - -- ptr = strtok(line, ":"); -+ if (!strncmp(line, "#include", 8)) -+ ptr = strtok(line, " "); -+ else -+ ptr = strtok(line, ":"); - while (ptr) { - string_i = 0; - for (i=0; iget (), */ - SIM->get_param_num (BXP_VGA_UPDATE_INTERVAL)->get (), - SIM->get_param_num (BXP_MOUSE_ENABLED)->get () ? "enabled" : "disabled", -- SIM->get_param_num (BXP_KBD_PASTE_DELAY)->get ()); -+ SIM->get_param_num (BXP_KBD_PASTE_DELAY)->get (), -+ SIM->get_param_string (BXP_USER_SHORTCUT)->getptr ()); - } - - int do_menu (bx_id id) { -@@ -511,7 +513,7 @@ - bx_floppy_options floppyop; - bx_cdrom_options cdromop; - build_runtime_options_prompt (runtime_menu_prompt, prompt, 1024); -- if (ask_uint (prompt, 1, 12, 11, &choice, 10) < 0) return -1; -+ if (ask_uint (prompt, 1, 13, 12, &choice, 10) < 0) return -1; - switch (choice) { - case 1: - SIM->get_floppy_options (0, &floppyop); -@@ -534,9 +536,10 @@ - case 7: askparam (BXP_VGA_UPDATE_INTERVAL); break; - case 8: askparam (BXP_MOUSE_ENABLED); break; - case 9: askparam (BXP_KBD_PASTE_DELAY); break; -- case 10: NOT_IMPLEMENTED (choice); break; -- case 11: fprintf (stderr, "Continuing simulation\n"); return 0; -- case 12: -+ case 10: askparam (BXP_USER_SHORTCUT); break; -+ case 11: NOT_IMPLEMENTED (choice); break; -+ case 12: fprintf (stderr, "Continuing simulation\n"); return 0; -+ case 13: - fprintf (stderr, "You chose quit on the control panel.\n"); - SIM->quit_sim (1); - return -1; -diff -urN ../bochs/gui/gui.cc ./gui/gui.cc ---- ../bochs/gui/gui.cc Sun Aug 4 10:42:34 2002 -+++ ./gui/gui.cc Thu Aug 8 00:14:02 2002 -@@ -37,6 +37,7 @@ - #include "gui/bitmaps/paste.h" - #include "gui/bitmaps/configbutton.h" - #include "gui/bitmaps/cdromd.h" -+#include "gui/bitmaps/userbutton.h" - #if BX_WITH_MACOS - # include - #endif -@@ -82,6 +83,7 @@ - BX_GUI_THIS copy_bmap_id = create_bitmap(bx_copy_bmap, BX_COPY_BMAP_X, BX_COPY_BMAP_Y); - BX_GUI_THIS paste_bmap_id = create_bitmap(bx_paste_bmap, BX_PASTE_BMAP_X, BX_PASTE_BMAP_Y); - BX_GUI_THIS config_bmap_id = create_bitmap(bx_config_bmap, BX_CONFIG_BMAP_X, BX_CONFIG_BMAP_Y); -+ BX_GUI_THIS user_bmap_id = create_bitmap(bx_user_bmap, BX_USER_BMAP_X, BX_USER_BMAP_Y); - - - // Add the initial bitmaps to the headerbar, and enable callback routine, for use -@@ -145,6 +147,9 @@ - // Copy button - BX_GUI_THIS copy_hbar_id = headerbar_bitmap(BX_GUI_THIS copy_bmap_id, - BX_GRAVITY_RIGHT, copy_handler); -+ // User button -+ BX_GUI_THIS user_hbar_id = headerbar_bitmap(BX_GUI_THIS user_bmap_id, -+ BX_GRAVITY_RIGHT, userbutton_handler); - - show_headerbar(); - } -@@ -389,6 +394,53 @@ - int old = bx_options.Omouse_enabled->get (); - BX_DEBUG (("toggle mouse_enabled, now %d", !old)); - bx_options.Omouse_enabled->set (!old); -+} -+ -+ void -+bx_gui_c::userbutton_handler(void) -+{ -+ unsigned shortcut[4]; -+ char *user_shortcut; -+ int i, len; -+ -+ len = 0; -+ user_shortcut = bx_options.Ouser_shortcut->getptr(); -+ i = 0; -+ if (user_shortcut[0] && (strcmp(user_shortcut, "none"))) { -+ if (!strcmp(user_shortcut, "ctrlaltdel")) { -+ shortcut[0] = BX_KEY_CTRL_L; -+ shortcut[1] = BX_KEY_ALT_L; -+ shortcut[2] = BX_KEY_DELETE; -+ len = 3; -+ } -+ else if (!strcmp(user_shortcut, "ctrlaltesc")) { -+ shortcut[0] = BX_KEY_CTRL_L; -+ shortcut[1] = BX_KEY_ALT_L; -+ shortcut[2] = BX_KEY_ESC; -+ len = 3; -+ } -+ else if (!strcmp(user_shortcut, "ctrlaltf1")) { -+ shortcut[0] = BX_KEY_CTRL_L; -+ shortcut[1] = BX_KEY_ALT_L; -+ shortcut[2] = BX_KEY_F1; -+ len = 3; -+ } -+ else if (!strcmp(user_shortcut, "alttab")) { -+ shortcut[0] = BX_KEY_ALT_L; -+ shortcut[1] = BX_KEY_TAB; -+ len = 2; -+ } -+ else { -+ BX_ERROR(("Unknown shortcut %s ignored", user_shortcut)); -+ } -+ while (i < len) { -+ bx_devices.keyboard->gen_scancode(shortcut[i++]); -+ } -+ i--; -+ while (i >= 0) { -+ bx_devices.keyboard->gen_scancode(shortcut[i--] | BX_KEY_RELEASED); -+ } -+ } - } - - void -diff -urN ../bochs/gui/gui.h ./gui/gui.h ---- ../bochs/gui/gui.h Sat Apr 20 09:19:35 2002 -+++ ./gui/gui.h Thu Aug 8 00:14:02 2002 -@@ -83,6 +83,7 @@ - static void snapshot_handler(void); - static void config_handler(void); - static void toggle_mouse_enable(void); -+ static void userbutton_handler(void); - static Bit32s make_text_snapshot (char **snapshot, Bit32u *length); - - Boolean floppyA_status; -@@ -98,11 +99,12 @@ - unsigned snapshot_bmap_id, snapshot_hbar_id; - unsigned config_bmap_id, config_hbar_id; - unsigned mouse_bmap_id, nomouse_bmap_id, mouse_hbar_id; -+ unsigned user_bmap_id, user_hbar_id; - }; - - - #define BX_MAX_PIXMAPS 16 --#define BX_MAX_HEADERBAR_ENTRIES 10 -+#define BX_MAX_HEADERBAR_ENTRIES 11 - #define BX_HEADER_BAR_Y 32 - - // align pixmaps towards left or right side of header bar -diff -urN ../bochs/gui/siminterface.h ./gui/siminterface.h ---- ../bochs/gui/siminterface.h Sun Aug 4 10:42:34 2002 -+++ ./gui/siminterface.h Thu Aug 8 00:27:51 2002 -@@ -158,6 +158,7 @@ - BXP_KEYBOARD_USEMAPPING, - BXP_KEYBOARD_MAP, - BXP_KEYBOARD, -+ BXP_USER_SHORTCUT, - BXP_ASK_FOR_PATHNAME, // for general file selection dialog - BXP_THIS_IS_THE_LAST // used to determine length of list - } bx_id; -@@ -173,7 +174,8 @@ - BX_TOOLBAR_PASTE, - BX_TOOLBAR_SNAPSHOT, - BX_TOOLBAR_CONFIG, -- BX_TOOLBAR_MOUSE_EN -+ BX_TOOLBAR_MOUSE_EN, -+ BX_TOOLBAR_USER - } bx_toolbar_buttons; - - // Log level defines -diff -urN ../bochs/gui/wx.cc ./gui/wx.cc ---- ../bochs/gui/wx.cc Sat Apr 20 09:19:35 2002 -+++ ./gui/wx.cc Thu Aug 8 09:31:24 2002 -@@ -612,6 +612,7 @@ - case BX_TOOLBAR_SNAPSHOT: snapshot_handler (); break; - case BX_TOOLBAR_CONFIG: config_handler (); break; - case BX_TOOLBAR_MOUSE_EN: toggle_mouse_enable (); break; -+ case BX_TOOLBAR_USER: userbutton_handler (); break; - default: - wxLogDebug ("unknown toolbar id %d", event_queue[i].u.toolbar.button); - } -diff -urN ../bochs/gui/wxmain.cc ./gui/wxmain.cc ---- ../bochs/gui/wxmain.cc Sat Jun 1 17:44:54 2002 -+++ ./gui/wxmain.cc Thu Aug 8 09:32:53 2002 -@@ -55,6 +55,7 @@ - #include "bitmaps/snapshot.xpm" - #include "bitmaps/mouse.xpm" - #include "bitmaps/configbutton.xpm" -+#include "bitmaps/userbutton.xpm" - - // FIXME: ugly global variables that the bx_gui_c object in wx.cc can use - // to access the MyFrame and the MyPanel. -@@ -96,7 +97,8 @@ - ID_Toolbar_Paste, - ID_Toolbar_Snapshot, - ID_Toolbar_Config, -- ID_Toolbar_Mouse_en -+ ID_Toolbar_Mouse_en, -+ ID_Toolbar_User - }; - - ////////////////////////////////////////////////////////////////////// -@@ -174,6 +176,7 @@ - EVT_TOOL(ID_Toolbar_Snapshot, MyFrame::OnToolbarClick) - EVT_TOOL(ID_Toolbar_Config, MyFrame::OnToolbarClick) - EVT_TOOL(ID_Toolbar_Mouse_en, MyFrame::OnToolbarClick) -+ EVT_TOOL(ID_Toolbar_User, MyFrame::OnToolbarClick) - END_EVENT_TABLE() - - -@@ -253,6 +256,7 @@ - BX_ADD_TOOL(ID_Toolbar_Snapshot, snapshot_xpm, "Save screen snapshot"); - BX_ADD_TOOL(ID_Toolbar_Config, configbutton_xpm, "Runtime Configuration"); - BX_ADD_TOOL(ID_Toolbar_Mouse_en, mouse_xpm, "Mouse Enable/Disable"); -+ BX_ADD_TOOL(ID_Toolbar_User, userbutton_xpm, "Keyboard shortcut"); - - tb->Realize(); - -@@ -540,6 +544,7 @@ - case ID_Toolbar_Snapshot: which = BX_TOOLBAR_SNAPSHOT; break; - case ID_Toolbar_Config: which = BX_TOOLBAR_CONFIG; break; - case ID_Toolbar_Mouse_en: which = BX_TOOLBAR_MOUSE_EN; break; -+ case ID_Toolbar_User: which = BX_TOOLBAR_USER; break; - default: - wxLogError ("unknown toolbar id %d", id); - } -diff -urN ../bochs/gui/x.cc ./gui/x.cc ---- ../bochs/gui/x.cc Sat May 18 18:02:20 2002 -+++ ./gui/x.cc Thu Aug 8 00:14:02 2002 -@@ -1245,15 +1245,23 @@ - bx_gui_c::show_headerbar(void) - { - unsigned xorigin; -+ int xleft, xright; - - // clear header bar area to white - XFillRectangle(bx_x_display, win, gc_headerbar_inv, 0,0, dimension_x, bx_headerbar_y); - -+ xleft = 0; -+ xright = dimension_x; - for (unsigned i=0; iset_format ("Keyboard type: %s"); - bx_options.Okeyboard_type->set_ask_format ("Enter keyboard type: [%s] "); - -+ // Userbutton shortcut -+ bx_options.Ouser_shortcut = new bx_param_string_c (BXP_USER_SHORTCUT, -+ "Userbutton shortcut", -+ "Userbutton shortcut", -+ "none", 16); -+ - bx_param_c *other_init_list[] = { - bx_options.Okeyboard_serial_delay, - bx_options.Okeyboard_paste_delay, -@@ -1035,6 +1041,7 @@ - bx_options.keyboard.OuseMapping, - bx_options.keyboard.Okeymap, - bx_options.Okeyboard_type, -+ bx_options.Ouser_shortcut, - NULL - }; - menu = new bx_list_c (BXP_MENU_MISC, "Configure Everything Else", "", other_init_list); -@@ -2357,7 +2364,15 @@ - else if (!strncmp(params[i], "map=", 4)) { - bx_options.keyboard.Okeymap->set (strdup(¶ms[i][4])); - } -+ } - } -+ else if (!strcmp(params[0], "user_shortcut")) { -+ if (num_params != 2) { -+ BX_PANIC(("%s: user_shortcut directive: wrong # args.", context)); -+ } -+ if(!strncmp(params[1], "keys=", 4)) { -+ bx_options.Ouser_shortcut->set (strdup(¶ms[1][5])); -+ } - } - -