ia64/xen-unstable

changeset 3404:b25937a57863

bitkeeper revision 1.1159.1.530 (41e39c56JMhunecWuhMFo5L5NMfbng)

Merge tempest.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xeno.bk
into tempest.cl.cam.ac.uk:/local/scratch/smh22/xen-unstable.bk
author smh22@tempest.cl.cam.ac.uk
date Tue Jan 11 09:28:54 2005 +0000 (2005-01-11)
parents 0451cbfd268d 9ad7af5b3f9b
children 10e3000a78b4
files .rootkeys tools/ioemu/Makefile tools/ioemu/font/vga.bitmap.h tools/ioemu/gui/Makefile tools/ioemu/gui/Makefile.in tools/ioemu/gui/bitmaps/cdromd.h tools/ioemu/gui/bitmaps/cdromd.xpm tools/ioemu/gui/bitmaps/configbutton.h tools/ioemu/gui/bitmaps/configbutton.xpm tools/ioemu/gui/bitmaps/copy.h tools/ioemu/gui/bitmaps/copy.xpm tools/ioemu/gui/bitmaps/floppya.h tools/ioemu/gui/bitmaps/floppya.xpm tools/ioemu/gui/bitmaps/floppyb.h tools/ioemu/gui/bitmaps/floppyb.xpm tools/ioemu/gui/bitmaps/mouse.h tools/ioemu/gui/bitmaps/mouse.xpm tools/ioemu/gui/bitmaps/paste.h tools/ioemu/gui/bitmaps/paste.xpm tools/ioemu/gui/bitmaps/power.h tools/ioemu/gui/bitmaps/power.xpm tools/ioemu/gui/bitmaps/reset.h tools/ioemu/gui/bitmaps/reset.xpm tools/ioemu/gui/bitmaps/snapshot.h tools/ioemu/gui/bitmaps/snapshot.xpm tools/ioemu/gui/bitmaps/userbutton.h tools/ioemu/gui/bitmaps/userbutton.xpm tools/ioemu/gui/gui.cc tools/ioemu/gui/gui.h tools/ioemu/gui/icon_bochs.h tools/ioemu/gui/icon_bochs.xpm tools/ioemu/gui/keymap.cc tools/ioemu/gui/keymap.h tools/ioemu/gui/keymaps/convertmap.pl tools/ioemu/gui/keymaps/sdl-pc-de.map tools/ioemu/gui/keymaps/sdl-pc-us.map tools/ioemu/gui/keymaps/x11-pc-be.map tools/ioemu/gui/keymaps/x11-pc-da.map tools/ioemu/gui/keymaps/x11-pc-de.map tools/ioemu/gui/keymaps/x11-pc-es.map tools/ioemu/gui/keymaps/x11-pc-fr.map tools/ioemu/gui/keymaps/x11-pc-it.map tools/ioemu/gui/keymaps/x11-pc-se.map tools/ioemu/gui/keymaps/x11-pc-uk.map tools/ioemu/gui/keymaps/x11-pc-us.map tools/ioemu/gui/nogui.cc tools/ioemu/gui/rfb.cc tools/ioemu/gui/rfb.h tools/ioemu/gui/rfbproto.h tools/ioemu/gui/sdl.h tools/ioemu/gui/sdlkeys.h tools/ioemu/gui/siminterface.cc tools/ioemu/gui/siminterface.h tools/ioemu/gui/svga.cc tools/ioemu/gui/term.cc tools/ioemu/gui/textconfig.cc tools/ioemu/gui/textconfig.h tools/ioemu/gui/x.cc tools/ioemu/include/bochs.h tools/ioemu/include/bxversion.h tools/ioemu/include/config.h tools/ioemu/include/cpu/cpu.h tools/ioemu/include/extplugin.h tools/ioemu/include/instrument.h tools/ioemu/include/ltdl.h tools/ioemu/include/ltdlconf.h tools/ioemu/include/osdep.h tools/ioemu/include/pc_system.h tools/ioemu/include/plugin.h tools/ioemu/include/state_file.h tools/ioemu/iodev/Makefile tools/ioemu/iodev/aspi-win32.h tools/ioemu/iodev/biosdev.cc tools/ioemu/iodev/biosdev.h tools/ioemu/iodev/cdrom.cc tools/ioemu/iodev/cdrom.h tools/ioemu/iodev/cdrom_beos.h tools/ioemu/iodev/cmos.cc tools/ioemu/iodev/cmos.h tools/ioemu/iodev/cpu.cc tools/ioemu/iodev/crc32.cc tools/ioemu/iodev/crc32.h tools/ioemu/iodev/devices.cc tools/ioemu/iodev/dma.cc tools/ioemu/iodev/dma.h tools/ioemu/iodev/eth.cc tools/ioemu/iodev/eth.h tools/ioemu/iodev/eth_arpback.cc tools/ioemu/iodev/eth_fbsd.cc tools/ioemu/iodev/eth_linux.cc tools/ioemu/iodev/eth_null.cc tools/ioemu/iodev/eth_packetmaker.cc tools/ioemu/iodev/eth_packetmaker.h tools/ioemu/iodev/eth_tap.cc tools/ioemu/iodev/eth_tuntap.cc tools/ioemu/iodev/extfpuirq.cc tools/ioemu/iodev/extfpuirq.h tools/ioemu/iodev/floppy.cc tools/ioemu/iodev/floppy.h tools/ioemu/iodev/gameport.cc tools/ioemu/iodev/gameport.h tools/ioemu/iodev/guest2host.h tools/ioemu/iodev/harddrv.cc tools/ioemu/iodev/harddrv.h tools/ioemu/iodev/ioapic.cc tools/ioemu/iodev/ioapic.h tools/ioemu/iodev/iodebug.cc tools/ioemu/iodev/iodebug.h tools/ioemu/iodev/iodev.h tools/ioemu/iodev/keyboard.cc tools/ioemu/iodev/keyboard.h tools/ioemu/iodev/load32bitOShack.cc tools/ioemu/iodev/logio.cc tools/ioemu/iodev/main.cc tools/ioemu/iodev/ne2k.cc tools/ioemu/iodev/ne2k.h tools/ioemu/iodev/osdep.cc tools/ioemu/iodev/parallel.cc tools/ioemu/iodev/parallel.h tools/ioemu/iodev/pc_system.cc tools/ioemu/iodev/pci.cc tools/ioemu/iodev/pci.h tools/ioemu/iodev/pci2isa.cc tools/ioemu/iodev/pci2isa.h tools/ioemu/iodev/pciusb.cc tools/ioemu/iodev/pciusb.h tools/ioemu/iodev/pcivga.cc tools/ioemu/iodev/pcivga.h tools/ioemu/iodev/pic.cc tools/ioemu/iodev/pic.h tools/ioemu/iodev/pit.cc tools/ioemu/iodev/pit.h tools/ioemu/iodev/pit82c54.cc tools/ioemu/iodev/pit82c54.h tools/ioemu/iodev/pit_wrap.cc tools/ioemu/iodev/pit_wrap.h tools/ioemu/iodev/plugin.cc tools/ioemu/iodev/scancodes.cc tools/ioemu/iodev/scancodes.h tools/ioemu/iodev/scsi_commands.h tools/ioemu/iodev/scsidefs.h tools/ioemu/iodev/scsipt.h tools/ioemu/iodev/serial.cc tools/ioemu/iodev/serial.h tools/ioemu/iodev/serial_raw.h tools/ioemu/iodev/slowdown_timer.cc tools/ioemu/iodev/slowdown_timer.h tools/ioemu/iodev/soundlnx.cc tools/ioemu/iodev/soundlnx.h tools/ioemu/iodev/soundwin.cc tools/ioemu/iodev/soundwin.h tools/ioemu/iodev/state_file.cc tools/ioemu/iodev/unmapped.cc tools/ioemu/iodev/unmapped.h tools/ioemu/iodev/vga.cc tools/ioemu/iodev/vga.h tools/ioemu/iodev/virt_timer.cc tools/ioemu/iodev/virt_timer.h tools/ioemu/memory/Makefile tools/ioemu/memory/memory.cc tools/ioemu/memory/memory.h tools/ioemu/memory/misc_mem.cc tools/ioemu/mk/helix.mk
line diff
     1.1 --- a/.rootkeys	Mon Jan 10 10:59:25 2005 +0000
     1.2 +++ b/.rootkeys	Tue Jan 11 09:28:54 2005 +0000
     1.3 @@ -330,6 +330,168 @@ 40ee75a93cqxHp6MiYXxxwR5j2_8QQ tools/exa
     1.4  41dde8af6M2Pm1Rrv_f5jEFC_BIOIA tools/examples/xmexample.vmx
     1.5  41090ec8Pj_bkgCBpg2W7WfmNkumEA tools/examples/xmexample1
     1.6  40cf2937oKlROYOJTN8GWwWM5AmjBg tools/examples/xmexample2
     1.7 +41e2ff6dNPgvIrdIF6dC1azdex1U3A tools/ioemu/Makefile
     1.8 +41e2ff6aoF5fgddZi0QpEWqFr89E5g tools/ioemu/font/vga.bitmap.h
     1.9 +41e2ff6avgnBNvZRiL4ynyGGq2UKlw tools/ioemu/gui/Makefile
    1.10 +41e2ff6a30Xuw7pDX3SlVBx3ssOMDQ tools/ioemu/gui/Makefile.in
    1.11 +41e2ff6aGGn5D3-Yh856G7xWJ5ZJsA tools/ioemu/gui/bitmaps/cdromd.h
    1.12 +41e2ff6abNiWU34DwftxJ30sI6TQmw tools/ioemu/gui/bitmaps/cdromd.xpm
    1.13 +41e2ff6adSUYHlvyVpz7q1Izcx5_gQ tools/ioemu/gui/bitmaps/configbutton.h
    1.14 +41e2ff6aLWWXfMqIH2jSCNUzuc4_Yg tools/ioemu/gui/bitmaps/configbutton.xpm
    1.15 +41e2ff6ahsqMjwuhpbqfrFHCBqYhEA tools/ioemu/gui/bitmaps/copy.h
    1.16 +41e2ff6ajL41CnUeGefMrNijudQlCg tools/ioemu/gui/bitmaps/copy.xpm
    1.17 +41e2ff6aXn5GhkDNOGqUcfCLbDZf3w tools/ioemu/gui/bitmaps/floppya.h
    1.18 +41e2ff6agOpnECodSZ62L-Uijy5fsQ tools/ioemu/gui/bitmaps/floppya.xpm
    1.19 +41e2ff6akrHp6jG_Y2BmFpEcaswUqg tools/ioemu/gui/bitmaps/floppyb.h
    1.20 +41e2ff6aGbvPO1cQLMLduGl16rntbg tools/ioemu/gui/bitmaps/floppyb.xpm
    1.21 +41e2ff6aEcsgeBHQZ_5e3rfgo0USMA tools/ioemu/gui/bitmaps/mouse.h
    1.22 +41e2ff6aO8pXESvDVxMG7TgZL7UvFA tools/ioemu/gui/bitmaps/mouse.xpm
    1.23 +41e2ff6aSd1H6Z0dUVUYLsW-6EDrYw tools/ioemu/gui/bitmaps/paste.h
    1.24 +41e2ff6aRGfY6Jd2TThqWtXoh2CHuQ tools/ioemu/gui/bitmaps/paste.xpm
    1.25 +41e2ff6aKDap56ifPVgdBVPc9yfmvw tools/ioemu/gui/bitmaps/power.h
    1.26 +41e2ff6aDLfEO8dFUd9IpsfUpMk-Vg tools/ioemu/gui/bitmaps/power.xpm
    1.27 +41e2ff6aKWtTsWCds4vL2azV3w-XtQ tools/ioemu/gui/bitmaps/reset.h
    1.28 +41e2ff6a_AU4_ytzHU0Btr3trcbVmA tools/ioemu/gui/bitmaps/reset.xpm
    1.29 +41e2ff6a-hGpcXEChJQDo-xRyH5oGQ tools/ioemu/gui/bitmaps/snapshot.h
    1.30 +41e2ff6aRoGi5nKyQFtcUzK0-9dRDA tools/ioemu/gui/bitmaps/snapshot.xpm
    1.31 +41e2ff6aZdTp9lSJjyUI7YoXqQnCng tools/ioemu/gui/bitmaps/userbutton.h
    1.32 +41e2ff6aWc4p23rAKngLMu8eLZiXlw tools/ioemu/gui/bitmaps/userbutton.xpm
    1.33 +41e2ff6a7gMd57Q5DL0kRD-mR7JzZg tools/ioemu/gui/gui.cc
    1.34 +41e2ff6a-USvofVXiSpY76RT4C0IVw tools/ioemu/gui/gui.h
    1.35 +41e2ff6aYAuOb0x4zTVB7cWYIFIdOA tools/ioemu/gui/icon_bochs.h
    1.36 +41e2ff6aZbFf-Djysg393N4vCEJ7ig tools/ioemu/gui/icon_bochs.xpm
    1.37 +41e2ff6ai-vJcSE9hfz4SHZ20rK5QA tools/ioemu/gui/keymap.cc
    1.38 +41e2ff6a_TY9EJnCcbr5EKV_pi90kg tools/ioemu/gui/keymap.h
    1.39 +41e2ff6aP0co3DAK04MrugZCkp0roQ tools/ioemu/gui/keymaps/convertmap.pl
    1.40 +41e2ff6a-GiP9bzqtVXEjxmxiYgzeg tools/ioemu/gui/keymaps/sdl-pc-de.map
    1.41 +41e2ff6aa5xj7jyze5bcPnj-UHYgTQ tools/ioemu/gui/keymaps/sdl-pc-us.map
    1.42 +41e2ff6ahemkf0kG8SzDXq8g2qp9Pg tools/ioemu/gui/keymaps/x11-pc-be.map
    1.43 +41e2ff6ajdaBBS85yriZ3S9ecy5Odg tools/ioemu/gui/keymaps/x11-pc-da.map
    1.44 +41e2ff6aGkLyRvwOTZnDqvobziAoiQ tools/ioemu/gui/keymaps/x11-pc-de.map
    1.45 +41e2ff6aWcqOK6RjpY28Y4bVjMy9yg tools/ioemu/gui/keymaps/x11-pc-es.map
    1.46 +41e2ff6aF46Uu09XOmmkcGDotToSxw tools/ioemu/gui/keymaps/x11-pc-fr.map
    1.47 +41e2ff6aHM040MYLmOeW_PKIx1TWWg tools/ioemu/gui/keymaps/x11-pc-it.map
    1.48 +41e2ff6aCa-6fHjBOoPWP8hDweZ1Fw tools/ioemu/gui/keymaps/x11-pc-se.map
    1.49 +41e2ff6aUH4wvnqRwo91dJBnhxEYUg tools/ioemu/gui/keymaps/x11-pc-uk.map
    1.50 +41e2ff6aF7b08llRJQBLgNAEfyn9wQ tools/ioemu/gui/keymaps/x11-pc-us.map
    1.51 +41e2ff6a2gbWdoaE7X9vtizvQ4QqdQ tools/ioemu/gui/nogui.cc
    1.52 +41e2ff6a_rWAWre2toEtNUMKliCJPA tools/ioemu/gui/rfb.cc
    1.53 +41e2ff6aQfuugiO3YE07l03L6ASP9g tools/ioemu/gui/rfb.h
    1.54 +41e2ff6aTWFzmW0sjxXpQq7ulaj_Pw tools/ioemu/gui/rfbproto.h
    1.55 +41e2ff6bf4pfJkZTN5vA6HbiJJqeNA tools/ioemu/gui/sdl.h
    1.56 +41e2ff6bVnojmIqKJCbhVUKtMcUWJg tools/ioemu/gui/sdlkeys.h
    1.57 +41e2ff6bKVx97oSdGGToXQXvbQgkZA tools/ioemu/gui/siminterface.cc
    1.58 +41e2ff6bDB5XABCVAA7nMolZPe5ZoA tools/ioemu/gui/siminterface.h
    1.59 +41e2ff6benMg1o7HQ2C5PGS3KFHFow tools/ioemu/gui/svga.cc
    1.60 +41e2ff6bz3XZGzzwvXGqFadb3QqWWQ tools/ioemu/gui/term.cc
    1.61 +41e2ff6b8jzKgyKu2gNVlRWepPNA0A tools/ioemu/gui/textconfig.cc
    1.62 +41e2ff6bUKaJhGtIDqUYzAesLg1MGA tools/ioemu/gui/textconfig.h
    1.63 +41e2ff6b__Pd6Q2aYDZ5vB9bGJEMNA tools/ioemu/gui/x.cc
    1.64 +41e2ff6bp96y5NyMIFjH-HpCRcGBPg tools/ioemu/include/bochs.h
    1.65 +41e2ff6bqIMIJlitAnubjNjf70s3dw tools/ioemu/include/bxversion.h
    1.66 +41e2ff6bTfksDlUXSWC_wC_g30r1cQ tools/ioemu/include/config.h
    1.67 +41e2ff6bwDEGCUwYTf1oo9ZCva2nkw tools/ioemu/include/cpu/cpu.h
    1.68 +41e2ff6bH1PTh2iMScpOn9v9R3SDag tools/ioemu/include/extplugin.h
    1.69 +41e2ff6bFS9XP8ndI6IhGFitzsvTtw tools/ioemu/include/instrument.h
    1.70 +41e2ff6bz71jKff_NUdmI279ArbMgw tools/ioemu/include/ltdl.h
    1.71 +41e2ff6bYayW_YSVmb1sJCvk9z9-ug tools/ioemu/include/ltdlconf.h
    1.72 +41e2ff6b_MdkIIjsFYTFMIKIt7Royw tools/ioemu/include/osdep.h
    1.73 +41e2ff6bPJNSITgePniKtvlujrmcLA tools/ioemu/include/pc_system.h
    1.74 +41e2ff6bmHZyZrzF7iHpD212GeAT-w tools/ioemu/include/plugin.h
    1.75 +41e2ff6bHgstm2ZhCIdsag_c3_dVjA tools/ioemu/include/state_file.h
    1.76 +41e2ff6bJjm8-4K6Cu2k6zoanQ8Yyg tools/ioemu/iodev/Makefile
    1.77 +41e2ff6bKj9bQ4ELP2msSYoT7XrxHQ tools/ioemu/iodev/aspi-win32.h
    1.78 +41e2ff6b95DLt3iA-okw7D4NJcaDCg tools/ioemu/iodev/biosdev.cc
    1.79 +41e2ff6b1ra22hFnE6Tm9lxVaH4Mjw tools/ioemu/iodev/biosdev.h
    1.80 +41e2ff6bftET40KQA19RAisCxyDHVQ tools/ioemu/iodev/cdrom.cc
    1.81 +41e2ff6buuSLUZPj9EtlGA3tufslNQ tools/ioemu/iodev/cdrom.h
    1.82 +41e2ff6bvD6jE2JHKP0wd7I_mB7MJg tools/ioemu/iodev/cdrom_beos.h
    1.83 +41e2ff6b99qviTPyKLjy0-D5DIqACw tools/ioemu/iodev/cmos.cc
    1.84 +41e2ff6bpeZbWqQfuwM_Xj-kElElAA tools/ioemu/iodev/cmos.h
    1.85 +41e2ff6bRf7QN_i1c7BAzkQha8AFUg tools/ioemu/iodev/cpu.cc
    1.86 +41e2ff6byVHp6G3fxAlly1u1sx_DEg tools/ioemu/iodev/crc32.cc
    1.87 +41e2ff6bHWz28hOKgLKRizX9UjsyOQ tools/ioemu/iodev/crc32.h
    1.88 +41e2ff6b3tvq7uKSC9DWkOswq0Re8w tools/ioemu/iodev/devices.cc
    1.89 +41e2ff6bO-SYXzx1RB-1If_FNkyjLg tools/ioemu/iodev/dma.cc
    1.90 +41e2ff6bdI7Ri1mVb1MzkvBKlNSx6Q tools/ioemu/iodev/dma.h
    1.91 +41e2ff6bfnGRrb25sneyvOXxSi8pLg tools/ioemu/iodev/eth.cc
    1.92 +41e2ff6bteOXqvNO1FIR5iFHUwqUuA tools/ioemu/iodev/eth.h
    1.93 +41e2ff6bTQxXrfWSsDCISUAdzlAe9w tools/ioemu/iodev/eth_arpback.cc
    1.94 +41e2ff6brorlh9N9Myd1_g7ktKcIfQ tools/ioemu/iodev/eth_fbsd.cc
    1.95 +41e2ff6b5xRFy8_OISEtd2UrHEUdfw tools/ioemu/iodev/eth_linux.cc
    1.96 +41e2ff6biySiByowEn40XP_yx_lxKg tools/ioemu/iodev/eth_null.cc
    1.97 +41e2ff6bFAVD0UO_ob40usJOnEPAZg tools/ioemu/iodev/eth_packetmaker.cc
    1.98 +41e2ff6bsR-mjksFNRC9HiDDVUfI2w tools/ioemu/iodev/eth_packetmaker.h
    1.99 +41e2ff6bMnzZ7cpqVPQY0_0smpqjHw tools/ioemu/iodev/eth_tap.cc
   1.100 +41e2ff6bGa18jj0cqoOAqBPDzk2Aog tools/ioemu/iodev/eth_tuntap.cc
   1.101 +41e2ff6bY1u244mkTGfttym3HoLo5Q tools/ioemu/iodev/extfpuirq.cc
   1.102 +41e2ff6b_wh3dgYBx38KIJ00Qv4XUA tools/ioemu/iodev/extfpuirq.h
   1.103 +41e2ff6b3uiKo02slxJn11bvZKsF3g tools/ioemu/iodev/floppy.cc
   1.104 +41e2ff6bKba0nlJHGy2kWUr_3e_nvw tools/ioemu/iodev/floppy.h
   1.105 +41e2ff6bC1KaCAEBYYTkJJ5_pBydkQ tools/ioemu/iodev/gameport.cc
   1.106 +41e2ff6bePGww4K0p8vTLphdE_zdig tools/ioemu/iodev/gameport.h
   1.107 +41e2ff6biLQpMiiiKokz7qUXpBn5cg tools/ioemu/iodev/guest2host.h
   1.108 +41e2ff6bji1Iix0CzQTeh9yB-Ao14Q tools/ioemu/iodev/harddrv.cc
   1.109 +41e2ff6bcSDALK1SdvKvTCxemzpWwQ tools/ioemu/iodev/harddrv.h
   1.110 +41e2ff6b36hFBfV06tX0a5CRjFpuxA tools/ioemu/iodev/ioapic.cc
   1.111 +41e2ff6brajF6a0a7RkLHiX0M9oH7w tools/ioemu/iodev/ioapic.h
   1.112 +41e2ff6btDX2IfOnC_LkP08ZlKxjJw tools/ioemu/iodev/iodebug.cc
   1.113 +41e2ff6b-__Z4ECo9pHWVM-Rz-0ehw tools/ioemu/iodev/iodebug.h
   1.114 +41e2ff6btRbGfsUt5k4MClieCZ-EBQ tools/ioemu/iodev/iodev.h
   1.115 +41e2ff6bH5C9aG3f2QhoD6zCdShJYQ tools/ioemu/iodev/keyboard.cc
   1.116 +41e2ff6bUOmeloSf5s9Gkdffo1bEyA tools/ioemu/iodev/keyboard.h
   1.117 +41e2ff6b55oybF1yhInYSZX2bxiJSw tools/ioemu/iodev/load32bitOShack.cc
   1.118 +41e2ff6b5WcmfYXaREzUm0KQu7pKCQ tools/ioemu/iodev/logio.cc
   1.119 +41e2ff6bqqHfrDtizlRKA-_oPRbGAw tools/ioemu/iodev/main.cc
   1.120 +41e2ff6cWAAGa6Pt6eE4URbCOq8wQA tools/ioemu/iodev/ne2k.cc
   1.121 +41e2ff6cap6qrVL42AgTpxjav0QMQg tools/ioemu/iodev/ne2k.h
   1.122 +41e2ff6cHH0UoJW74RKZFnPBSt1jUw tools/ioemu/iodev/osdep.cc
   1.123 +41e2ff6ckuFNtxuAQDMVwJtYwL2QCg tools/ioemu/iodev/parallel.cc
   1.124 +41e2ff6cbqWnJwLAQ9NDZJwUyGiIww tools/ioemu/iodev/parallel.h
   1.125 +41e2ff6cAdkxmfzVhbQn9Plq3X4S_w tools/ioemu/iodev/pc_system.cc
   1.126 +41e2ff6csu1e9S_rywWOq9B85IaZzA tools/ioemu/iodev/pci.cc
   1.127 +41e2ff6cjcmNZLD17naGuKj_Qon6Ow tools/ioemu/iodev/pci.h
   1.128 +41e2ff6c91zYiAb9XulXkl2vLERo-w tools/ioemu/iodev/pci2isa.cc
   1.129 +41e2ff6cV7IdLNbFXwlWvdcOz4F1Aw tools/ioemu/iodev/pci2isa.h
   1.130 +41e2ff6cviwF37ZllnYtHA3MEHRMWw tools/ioemu/iodev/pciusb.cc
   1.131 +41e2ff6ceFmfyqr1MgYhEoRM1s6icQ tools/ioemu/iodev/pciusb.h
   1.132 +41e2ff6cd-1VHyISVo789tv3ImNgLw tools/ioemu/iodev/pcivga.cc
   1.133 +41e2ff6cVkXDlrNUTdt7D6BULEp1Tg tools/ioemu/iodev/pcivga.h
   1.134 +41e2ff6c3xjAFB8X5OLFz_8Of62v2Q tools/ioemu/iodev/pic.cc
   1.135 +41e2ff6c4UHzse5_N0Mx6u5dqKrVkw tools/ioemu/iodev/pic.h
   1.136 +41e2ff6cdD9yovRmQNNJu8QVtZg7Iw tools/ioemu/iodev/pit.cc
   1.137 +41e2ff6cXtvewmYJyoxrWGic2sOayg tools/ioemu/iodev/pit.h
   1.138 +41e2ff6cXaqNRxMagdpNiT1kTWJJUA tools/ioemu/iodev/pit82c54.cc
   1.139 +41e2ff6cHAkpKzMwyz3diMZWTswxmg tools/ioemu/iodev/pit82c54.h
   1.140 +41e2ff6cMK9E2gjqHoWV9ZQfz-cP1Q tools/ioemu/iodev/pit_wrap.cc
   1.141 +41e2ff6cbie7fPpQMgBImJ885GAPdw tools/ioemu/iodev/pit_wrap.h
   1.142 +41e2ff6c0wLrWtBHxxboIzHsrZzkRA tools/ioemu/iodev/plugin.cc
   1.143 +41e2ff6cN4Z6pnguPQaqiCkWp42MOQ tools/ioemu/iodev/scancodes.cc
   1.144 +41e2ff6chK1sqb78l1sqhF3fJhjzBw tools/ioemu/iodev/scancodes.h
   1.145 +41e2ff6cIyPvY7hNE5rP_PMZELhyVw tools/ioemu/iodev/scsi_commands.h
   1.146 +41e2ff6cF3wH8A_66_yG92Wk7I2IWQ tools/ioemu/iodev/scsidefs.h
   1.147 +41e2ff6cbAin6eD3Gfz2CozOS4_bwA tools/ioemu/iodev/scsipt.h
   1.148 +41e2ff6cce6mNXZPGmlQ1bg_I0ef8Q tools/ioemu/iodev/serial.cc
   1.149 +41e2ff6cxsITO-ikpd4vBYZUYO3qSw tools/ioemu/iodev/serial.h
   1.150 +41e2ff6cbaCEgMJ92UELiRE2wEYe3g tools/ioemu/iodev/serial_raw.h
   1.151 +41e2ff6cwDKTU8OukKNBNMDiAYUWvQ tools/ioemu/iodev/slowdown_timer.cc
   1.152 +41e2ff6cM5XYdcgL417IBOzW-QipFg tools/ioemu/iodev/slowdown_timer.h
   1.153 +41e2ff6c5X0WxdBPUyZlNmW6Zv_LRQ tools/ioemu/iodev/soundlnx.cc
   1.154 +41e2ff6cIuE1VxGF_L6rdBtD6rZ_aA tools/ioemu/iodev/soundlnx.h
   1.155 +41e2ff6cDIv87LKamP0Y-yjrdqALzQ tools/ioemu/iodev/soundwin.cc
   1.156 +41e2ff6cB55j_uYIqYh-UiLS4wlm_g tools/ioemu/iodev/soundwin.h
   1.157 +41e2ff6dRPBmtxjFbEM5WYuilnSSZg tools/ioemu/iodev/state_file.cc
   1.158 +41e2ff6dMwkI1Dpa-UHSEzHCvjpOyw tools/ioemu/iodev/unmapped.cc
   1.159 +41e2ff6d_yJMFHYPENtVmJz6wyldQA tools/ioemu/iodev/unmapped.h
   1.160 +41e2ff6dU5hJI6Kn70mFingJo4cHUw tools/ioemu/iodev/vga.cc
   1.161 +41e2ff6dh8xDcCXkZzpSqnFP-OXggw tools/ioemu/iodev/vga.h
   1.162 +41e2ff6dayXwb5dxf0K5pd3q4QppRA tools/ioemu/iodev/virt_timer.cc
   1.163 +41e2ff6dI_rNgBwki594UAWN337-zw tools/ioemu/iodev/virt_timer.h
   1.164 +41e2ff6dCCtE_btrlEopLaCsLO3JDA tools/ioemu/memory/Makefile
   1.165 +41e2ff6dZtwsTW8s-Gqv7bqObdvaXw tools/ioemu/memory/memory.cc
   1.166 +41e2ff6dpk6EFzlHlsAsFEFdyG4wrA tools/ioemu/memory/memory.h
   1.167 +41e2ff6d2i-wqgCe4iAXdckUc1GD-A tools/ioemu/memory/misc_mem.cc
   1.168 +41e2ff6dCYuZgf6pxRmphkh5yeuA9Q tools/ioemu/mk/helix.mk
   1.169  3fbba6dbDfYvJSsw9500b4SZyUhxjQ tools/libxc/Makefile
   1.170  41dde8afKYRKxS4XtLv1KUegGQy_bg tools/libxc/linux_boot_params.h
   1.171  41cc934abX-QLXJXW_clV_wRjM0zYg tools/libxc/plan9a.out.h
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/tools/ioemu/Makefile	Tue Jan 11 09:28:54 2005 +0000
     2.3 @@ -0,0 +1,19 @@
     2.4 +# Order is important!
     2.5 +SUBDIRS=gui memory iodev
     2.6 +
     2.7 +all: $(SUBDIRS)
     2.8 +
     2.9 +$(SUBDIRS):
    2.10 +	$(MAKE) -C $@
    2.11 +
    2.12 +.PHONY: all $(SUBDIRS)
    2.13 +
    2.14 +clean:
    2.15 +	@for subdir in $(SUBDIRS); do 				\
    2.16 +		$(MAKE) -C $$subdir $(MAKEDEFS) $@ || exit -1; 	\
    2.17 +	done
    2.18 +
    2.19 +install:
    2.20 +	@for subdir in $(SUBDIRS); do 				\
    2.21 +		$(MAKE) -C $$subdir $(MAKEDEFS) $@ || exit -1; 	\
    2.22 +	done
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/tools/ioemu/font/vga.bitmap.h	Tue Jan 11 09:28:54 2005 +0000
     3.3 @@ -0,0 +1,288 @@
     3.4 +/////////////////////////////////////////////////////////////////////////
     3.5 +// $Id: vga.bitmap.h,v 1.4 2002/05/25 14:22:53 vruppert Exp $
     3.6 +/////////////////////////////////////////////////////////////////////////
     3.7 +//
     3.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
     3.9 +//
    3.10 +//    MandrakeSoft S.A.
    3.11 +//    43, rue d'Aboukir
    3.12 +//    75002 Paris - France
    3.13 +//    http://www.linux-mandrake.com/
    3.14 +//    http://www.mandrakesoft.com/
    3.15 +//
    3.16 +//  This library is free software; you can redistribute it and/or
    3.17 +//  modify it under the terms of the GNU Lesser General Public
    3.18 +//  License as published by the Free Software Foundation; either
    3.19 +//  version 2 of the License, or (at your option) any later version.
    3.20 +//
    3.21 +//  This library is distributed in the hope that it will be useful,
    3.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
    3.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    3.24 +//  Lesser General Public License for more details.
    3.25 +//
    3.26 +//  You should have received a copy of the GNU Lesser General Public
    3.27 +//  License along with this library; if not, write to the Free Software
    3.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    3.29 +
    3.30 +typedef struct {
    3.31 +  unsigned char data[16];
    3.32 +  } bx_fontcharbitmap_t;
    3.33 +
    3.34 +static const bx_fontcharbitmap_t bx_vgafont[256] = {
    3.35 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.36 +{{ 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xa5, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
    3.37 +{{ 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xdb, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
    3.38 +{{ 0x00, 0x00, 0x00, 0x00, 0x36, 0x7f, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00 }},
    3.39 +{{ 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.40 +{{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
    3.41 +{{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
    3.42 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.43 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }},
    3.44 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.45 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff }},
    3.46 +{{ 0x00, 0x00, 0x78, 0x60, 0x70, 0x58, 0x1e, 0x33, 0x33, 0x33, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00 }},
    3.47 +{{ 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.48 +{{ 0x00, 0x00, 0xfc, 0xcc, 0xfc, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00 }},
    3.49 +{{ 0x00, 0x00, 0xfe, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xe6, 0xe7, 0x67, 0x03, 0x00, 0x00, 0x00 }},
    3.50 +{{ 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.51 +{{ 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00 }},
    3.52 +{{ 0x00, 0x40, 0x60, 0x70, 0x78, 0x7c, 0x7f, 0x7c, 0x78, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00 }},
    3.53 +{{ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.54 +{{ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }},
    3.55 +{{ 0x00, 0x00, 0xfe, 0xdb, 0xdb, 0xdb, 0xde, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00 }},
    3.56 +{{ 0x00, 0x3e, 0x63, 0x06, 0x1c, 0x36, 0x63, 0x63, 0x36, 0x1c, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00 }},
    3.57 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
    3.58 +{{ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
    3.59 +{{ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.60 +{{ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.61 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x7f, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.62 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x7f, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.63 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.64 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x36, 0x7f, 0x36, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.65 +{{ 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x3e, 0x3e, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.66 +{{ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.67 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.68 +{{ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.69 +{{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.70 +{{ 0x00, 0x00, 0x00, 0x36, 0x36, 0x7f, 0x36, 0x36, 0x36, 0x7f, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }},
    3.71 +{{ 0x18, 0x18, 0x3e, 0x63, 0x43, 0x03, 0x3e, 0x60, 0x60, 0x61, 0x63, 0x3e, 0x18, 0x18, 0x00, 0x00 }},
    3.72 +{{ 0x00, 0x00, 0x00, 0x00, 0x43, 0x63, 0x30, 0x18, 0x0c, 0x06, 0x63, 0x61, 0x00, 0x00, 0x00, 0x00 }},
    3.73 +{{ 0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x6e, 0x3b, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
    3.74 +{{ 0x00, 0x0c, 0x0c, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.75 +{{ 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 }},
    3.76 +{{ 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
    3.77 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.78 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.79 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00 }},
    3.80 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.81 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.82 +{{ 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00 }},
    3.83 +{{ 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x6b, 0x6b, 0x63, 0x63, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00 }},
    3.84 +{{ 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
    3.85 +{{ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
    3.86 +{{ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x60, 0x3c, 0x60, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
    3.87 +{{ 0x00, 0x00, 0x30, 0x38, 0x3c, 0x36, 0x33, 0x7f, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 }},
    3.88 +{{ 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x60, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
    3.89 +{{ 0x00, 0x00, 0x1c, 0x06, 0x03, 0x03, 0x3f, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
    3.90 +{{ 0x00, 0x00, 0x7f, 0x63, 0x60, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
    3.91 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
    3.92 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x60, 0x60, 0x30, 0x1e, 0x00, 0x00, 0x00, 0x00 }},
    3.93 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.94 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
    3.95 +{{ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00 }},
    3.96 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
    3.97 +{{ 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00 }},
    3.98 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x30, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
    3.99 +{{ 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x7b, 0x7b, 0x7b, 0x3b, 0x03, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.100 +{{ 0x00, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.101 +{{ 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3f, 0x00, 0x00, 0x00, 0x00 }},
   3.102 +{{ 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x03, 0x03, 0x43, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.103 +{{ 0x00, 0x00, 0x1f, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x36, 0x1f, 0x00, 0x00, 0x00, 0x00 }},
   3.104 +{{ 0x00, 0x00, 0x7f, 0x66, 0x46, 0x16, 0x1e, 0x16, 0x06, 0x46, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   3.105 +{{ 0x00, 0x00, 0x7f, 0x66, 0x46, 0x16, 0x1e, 0x16, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
   3.106 +{{ 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x7b, 0x63, 0x63, 0x66, 0x5c, 0x00, 0x00, 0x00, 0x00 }},
   3.107 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.108 +{{ 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.109 +{{ 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x33, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00 }},
   3.110 +{{ 0x00, 0x00, 0x67, 0x66, 0x66, 0x36, 0x1e, 0x1e, 0x36, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
   3.111 +{{ 0x00, 0x00, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   3.112 +{{ 0x00, 0x00, 0x63, 0x77, 0x7f, 0x7f, 0x6b, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.113 +{{ 0x00, 0x00, 0x63, 0x67, 0x6f, 0x7f, 0x7b, 0x73, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.114 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.115 +{{ 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
   3.116 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x6b, 0x7b, 0x3e, 0x30, 0x70, 0x00, 0x00 }},
   3.117 +{{ 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x36, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
   3.118 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x06, 0x1c, 0x30, 0x60, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.119 +{{ 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.120 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.121 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00 }},
   3.122 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x6b, 0x6b, 0x6b, 0x7f, 0x77, 0x36, 0x00, 0x00, 0x00, 0x00 }},
   3.123 +{{ 0x00, 0x00, 0x63, 0x63, 0x36, 0x3e, 0x1c, 0x1c, 0x3e, 0x36, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.124 +{{ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.125 +{{ 0x00, 0x00, 0x7f, 0x63, 0x61, 0x30, 0x18, 0x0c, 0x06, 0x43, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   3.126 +{{ 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.127 +{{ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00 }},
   3.128 +{{ 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.129 +{{ 0x08, 0x1c, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.130 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 }},
   3.131 +{{ 0x0c, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.132 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.133 +{{ 0x00, 0x00, 0x07, 0x06, 0x06, 0x1e, 0x36, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.134 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x03, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.135 +{{ 0x00, 0x00, 0x38, 0x30, 0x30, 0x3c, 0x36, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.136 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.137 +{{ 0x00, 0x00, 0x1c, 0x36, 0x26, 0x06, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
   3.138 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3e, 0x30, 0x33, 0x1e, 0x00 }},
   3.139 +{{ 0x00, 0x00, 0x07, 0x06, 0x06, 0x36, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
   3.140 +{{ 0x00, 0x00, 0x18, 0x18, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.141 +{{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x00 }},
   3.142 +{{ 0x00, 0x00, 0x07, 0x06, 0x06, 0x66, 0x36, 0x1e, 0x1e, 0x36, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
   3.143 +{{ 0x00, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.144 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x6b, 0x6b, 0x6b, 0x6b, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.145 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }},
   3.146 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.147 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x0f, 0x00 }},
   3.148 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3e, 0x30, 0x30, 0x78, 0x00 }},
   3.149 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6e, 0x66, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
   3.150 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x06, 0x1c, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.151 +{{ 0x00, 0x00, 0x08, 0x0c, 0x0c, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 }},
   3.152 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.153 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   3.154 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x6b, 0x6b, 0x6b, 0x7f, 0x36, 0x00, 0x00, 0x00, 0x00 }},
   3.155 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x36, 0x1c, 0x1c, 0x1c, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.156 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x30, 0x1f, 0x00 }},
   3.157 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x33, 0x18, 0x0c, 0x06, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   3.158 +{{ 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00 }},
   3.159 +{{ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   3.160 +{{ 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
   3.161 +{{ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.162 +{{ 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.163 +{{ 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x03, 0x43, 0x66, 0x3c, 0x30, 0x60, 0x3e, 0x00, 0x00 }},
   3.164 +{{ 0x00, 0x00, 0x33, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.165 +{{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.166 +{{ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.167 +{{ 0x00, 0x00, 0x33, 0x00, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.168 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.169 +{{ 0x00, 0x1c, 0x36, 0x1c, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.170 +{{ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x06, 0x06, 0x66, 0x3c, 0x30, 0x60, 0x3c, 0x00, 0x00, 0x00 }},
   3.171 +{{ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.172 +{{ 0x00, 0x00, 0x63, 0x00, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.173 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.174 +{{ 0x00, 0x00, 0x66, 0x00, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.175 +{{ 0x00, 0x18, 0x3c, 0x66, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.176 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.177 +{{ 0x00, 0x63, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.178 +{{ 0x1c, 0x36, 0x1c, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.179 +{{ 0x18, 0x0c, 0x06, 0x00, 0x7f, 0x66, 0x06, 0x3e, 0x06, 0x06, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   3.180 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x6e, 0x6c, 0x7e, 0x1b, 0x1b, 0x76, 0x00, 0x00, 0x00, 0x00 }},
   3.181 +{{ 0x00, 0x00, 0x7c, 0x36, 0x33, 0x33, 0x7f, 0x33, 0x33, 0x33, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00 }},
   3.182 +{{ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.183 +{{ 0x00, 0x00, 0x63, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.184 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.185 +{{ 0x00, 0x0c, 0x1e, 0x33, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.186 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.187 +{{ 0x00, 0x00, 0x63, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x30, 0x1e, 0x00 }},
   3.188 +{{ 0x00, 0x63, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.189 +{{ 0x00, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.190 +{{ 0x00, 0x18, 0x18, 0x3c, 0x66, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   3.191 +{{ 0x00, 0x1c, 0x36, 0x26, 0x06, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x67, 0x3f, 0x00, 0x00, 0x00, 0x00 }},
   3.192 +{{ 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   3.193 +{{ 0x00, 0x1f, 0x33, 0x33, 0x1f, 0x23, 0x33, 0x7b, 0x33, 0x33, 0x33, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.194 +{{ 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00, 0x00 }},
   3.195 +{{ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.196 +{{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.197 +{{ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.198 +{{ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.199 +{{ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x3b, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }},
   3.200 +{{ 0x6e, 0x3b, 0x00, 0x63, 0x67, 0x6f, 0x7f, 0x7b, 0x73, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.201 +{{ 0x00, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.202 +{{ 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.203 +{{ 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x06, 0x03, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   3.204 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.205 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.206 +{{ 0x00, 0x03, 0x03, 0x43, 0x63, 0x33, 0x18, 0x0c, 0x06, 0x3b, 0x61, 0x30, 0x18, 0x7c, 0x00, 0x00 }},
   3.207 +{{ 0x00, 0x03, 0x03, 0x43, 0x63, 0x33, 0x18, 0x0c, 0x66, 0x73, 0x79, 0x7c, 0x60, 0x60, 0x00, 0x00 }},
   3.208 +{{ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   3.209 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x36, 0x1b, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.210 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.211 +{{ 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22 }},
   3.212 +{{ 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 }},
   3.213 +{{ 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee }},
   3.214 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.215 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.216 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.217 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.218 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.219 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.220 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x60, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.221 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.222 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.223 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x60, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.224 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.225 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.226 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.227 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.228 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.229 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.230 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.231 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.232 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.233 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.234 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.235 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x0c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.236 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.237 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.238 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xef, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.239 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x0c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.240 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.241 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0x00, 0xef, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.242 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.243 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.244 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.245 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.246 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.247 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.248 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.249 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.250 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
   3.251 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.252 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.253 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.254 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }},
   3.255 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }},
   3.256 +{{ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }},
   3.257 +{{ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0 }},
   3.258 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.259 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b, 0x1b, 0x1b, 0x3b, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   3.260 +{{ 0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x1b, 0x33, 0x63, 0x63, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00 }},
   3.261 +{{ 0x00, 0x00, 0x7f, 0x63, 0x63, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00 }},
   3.262 +{{ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }},
   3.263 +{{ 0x00, 0x00, 0x00, 0x7f, 0x63, 0x06, 0x0c, 0x18, 0x0c, 0x06, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   3.264 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
   3.265 +{{ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00 }},
   3.266 +{{ 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   3.267 +{{ 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   3.268 +{{ 0x00, 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00 }},
   3.269 +{{ 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00 }},
   3.270 +{{ 0x00, 0x00, 0x78, 0x0c, 0x18, 0x30, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   3.271 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.272 +{{ 0x00, 0x00, 0x00, 0xc0, 0x60, 0x7e, 0xdb, 0xdb, 0xcf, 0x7e, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }},
   3.273 +{{ 0x00, 0x00, 0x38, 0x0c, 0x06, 0x06, 0x3e, 0x06, 0x06, 0x06, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00 }},
   3.274 +{{ 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
   3.275 +{{ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.276 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 }},
   3.277 +{{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   3.278 +{{ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   3.279 +{{ 0x00, 0x00, 0x70, 0xd8, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
   3.280 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
   3.281 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.282 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.283 +{{ 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.284 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.285 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.286 +{{ 0x00, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x36, 0x3c, 0x38, 0x00, 0x00, 0x00, 0x00 }},
   3.287 +{{ 0x00, 0x1b, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.288 +{{ 0x00, 0x0e, 0x1b, 0x0c, 0x06, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.289 +{{ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.290 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   3.291 +};
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/tools/ioemu/gui/Makefile	Tue Jan 11 09:28:54 2005 +0000
     4.3 @@ -0,0 +1,10 @@
     4.4 +TOPDIR= ..
     4.5 +CXXFLAGS=-I. -I../include -I..
     4.6 +OBJS= gui.o keymap.o siminterface.o textconfig.o x.o
     4.7 +
     4.8 +all: libgui.a
     4.9 +
    4.10 +libgui.a: $(OBJS)
    4.11 +	$(AR) $(ARFLAGS) $@ $(OBJS)
    4.12 +
    4.13 +include $(TOPDIR)/mk/helix.mk
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/tools/ioemu/gui/Makefile.in	Tue Jan 11 09:28:54 2005 +0000
     5.3 @@ -0,0 +1,561 @@
     5.4 +# Copyright (C) 2002  MandrakeSoft S.A.
     5.5 +#
     5.6 +#   MandrakeSoft S.A.
     5.7 +#   43, rue d'Aboukir
     5.8 +#   75002 Paris - France
     5.9 +#   http://www.linux-mandrake.com/
    5.10 +#   http://www.mandrakesoft.com/
    5.11 +#
    5.12 +# This library is free software; you can redistribute it and/or
    5.13 +# modify it under the terms of the GNU Lesser General Public
    5.14 +# License as published by the Free Software Foundation; either
    5.15 +# version 2 of the License, or (at your option) any later version.
    5.16 +#
    5.17 +# This library is distributed in the hope that it will be useful,
    5.18 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    5.19 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    5.20 +# Lesser General Public License for more details.
    5.21 +#
    5.22 +# You should have received a copy of the GNU Lesser General Public
    5.23 +# License along with this library; if not, write to the Free Software
    5.24 +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    5.25 +
    5.26 +# Makefile for the gui component of bochs
    5.27 +
    5.28 +
    5.29 +@SUFFIX_LINE@
    5.30 +
    5.31 +prefix          = @prefix@
    5.32 +exec_prefix     = @exec_prefix@
    5.33 +srcdir          = @srcdir@
    5.34 +VPATH = @srcdir@
    5.35 +bindir          = @bindir@
    5.36 +libdir          = @libdir@
    5.37 +mandir          = @mandir@
    5.38 +man1dir         = $(mandir)/man1
    5.39 +man5dir         = $(mandir)/man5
    5.40 +docdir          = $(prefix)/share/doc/bochs
    5.41 +sharedir        = $(prefix)/share/bochs
    5.42 +top_builddir    = ..
    5.43 +top_srcdir      = @top_srcdir@
    5.44 +
    5.45 +SHELL = /bin/sh
    5.46 +
    5.47 +@SET_MAKE@
    5.48 +
    5.49 +CXX = @CXX@
    5.50 +CXXFLAGS = $(BX_INCDIRS) @CXXFLAGS@  @GUI_CXXFLAGS@
    5.51 +LOCAL_CXXFLAGS =
    5.52 +LDFLAGS = @LDFLAGS@
    5.53 +LIBS = @LIBS@
    5.54 +X_CFLAGS = @X_CFLAGS@
    5.55 +RANLIB = @RANLIB@
    5.56 +PLUGIN_PATH=@libdir@
    5.57 +top_builddir    = ..
    5.58 +LIBTOOL=@LIBTOOL@
    5.59 +WIN32_DLL_IMPORT_LIBRARY=../dllexports.a
    5.60 +BX_INCDIRS = -I.. -I$(srcdir)/.. -I../iodev -I$(srcdir)/../iodev -I../@INSTRUMENT_DIR@ -I$(srcdir)/../@INSTRUMENT_DIR@
    5.61 +
    5.62 +GUI_OBJS_X11  = x.o
    5.63 +GUI_OBJS_SDL = sdl.o
    5.64 +GUI_OBJS_SVGA = svga.o
    5.65 +GUI_OBJS_BEOS = beos.o
    5.66 +GUI_OBJS_WIN32 = win32.o
    5.67 +GUI_OBJS_MACOS = macintosh.o
    5.68 +GUI_OBJS_CARBON = carbon.o
    5.69 +GUI_OBJS_NOGUI = nogui.o
    5.70 +GUI_OBJS_TERM  = term.o
    5.71 +GUI_OBJS_RFB = rfb.o
    5.72 +GUI_OBJS_AMIGAOS = amigaos.o
    5.73 +GUI_OBJS_WX = wx.o
    5.74 +GUI_OBJS_WX_SUPPORT = wxmain.o wxdialog.o
    5.75 +OBJS_THAT_CANNOT_BE_PLUGINS = keymap.o gui.o siminterface.o textconfig.o @DIALOG_OBJS@
    5.76 +OBJS_THAT_CAN_BE_PLUGINS = @GUI_OBJS@
    5.77 +
    5.78 +X_LIBS = @X_LIBS@
    5.79 +X_PRE_LIBS = @X_PRE_LIBS@
    5.80 +GUI_LINK_OPTS_X = $(X_LIBS) $(X_PRE_LIBS) -lX11 -lXpm
    5.81 +GUI_LINK_OPTS_SDL = `sdl-config --cflags --libs`
    5.82 +GUI_LINK_OPTS_SVGA =  -lvga -lvgagl
    5.83 +GUI_LINK_OPTS_BEOS = -lbe
    5.84 +GUI_LINK_OPTS_RFB = @RFB_LIBS@
    5.85 +GUI_LINK_OPTS_AMIGAOS = 
    5.86 +GUI_LINK_OPTS_WIN32 = -luser32 -lgdi32 -lcomdlg32 -lcomctl32
    5.87 +GUI_LINK_OPTS_WIN32_VCPP = user32.lib gdi32.lib winmm.lib \
    5.88 +  comdlg32.lib comctl32.lib wsock32.lib
    5.89 +GUI_LINK_OPTS_MACOS =
    5.90 +GUI_LINK_OPTS_CARBON = -framework Carbon
    5.91 +GUI_LINK_OPTS_NOGUI =
    5.92 +GUI_LINK_OPTS_TERM = @GUI_LINK_OPTS_TERM@
    5.93 +GUI_LINK_OPTS_WX = @GUI_LINK_OPTS_WX@
    5.94 +GUI_LINK_OPTS = @GUI_LINK_OPTS@  @DEVICE_LINK_OPTS@
    5.95 +
    5.96 +NONPLUGIN_OBJS = @GUI_NON_PLUGIN_OBJS@
    5.97 +PLUGIN_OBJS = @GUI_PLUGIN_OBJS@
    5.98 +
    5.99 +#
   5.100 +# -------- end configurable options --------------------------
   5.101 +#
   5.102 +
   5.103 +all: libgui.a 
   5.104 +
   5.105 +plugins: $(PLUGIN_OBJS:@PLUGIN_LIBNAME_TRANSFORMATION@)
   5.106 +
   5.107 +libgui.a: $(NONPLUGIN_OBJS)
   5.108 +	@RMCOMMAND@ libgui.a
   5.109 +	@MAKELIB@ $(NONPLUGIN_OBJS)
   5.110 +	@RANLIB@ libgui.a
   5.111 +
   5.112 +# standard compile rule for C++ files
   5.113 +.@CPP_SUFFIX@.o:
   5.114 +	$(CXX) @DASH@c  $(CXXFLAGS) $(LOCAL_CXXFLAGS) @CXXFP@$< @OFP@$@
   5.115 +
   5.116 +##### building plugins with libtool
   5.117 +%.lo: %.@CPP_SUFFIX@
   5.118 +	$(LIBTOOL) --mode=compile $(CXX) -c $(CXXFLAGS) $(LOCAL_CXXFLAGS) $< -o $@
   5.119 +
   5.120 +libbx_%.la: %.lo
   5.121 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH)
   5.122 +
   5.123 +libbx_x.la: x.lo
   5.124 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_X)
   5.125 +
   5.126 +libbx_sdl.la: sdl.lo
   5.127 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_SDL)
   5.128 +
   5.129 +libbx_svga.la: svga.lo
   5.130 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_SVGA)
   5.131 +
   5.132 +libbx_beos.la: beos.lo
   5.133 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_BEOS)
   5.134 +
   5.135 +libbx_rfb.la: rfb.lo
   5.136 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_RFB)
   5.137 +
   5.138 +libbx_amigaos.la: amigaos.lo
   5.139 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_AMIGAOS)
   5.140 +
   5.141 +libbx_win32.la: win32.lo
   5.142 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_WIN32)
   5.143 +
   5.144 +libbx_macos.la: macos.lo
   5.145 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_MACOS)
   5.146 +
   5.147 +libbx_carbon.la: carbon.lo
   5.148 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_CARBON)
   5.149 +
   5.150 +libbx_nogui.la: nogui.lo
   5.151 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_NOGUI)
   5.152 +
   5.153 +libbx_term.la: term.lo
   5.154 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_TERM)
   5.155 +
   5.156 +# special link rules for plugins that require more than one object file
   5.157 +libbx_wx.la: $(GUI_OBJS_WX:.o=.lo) $(GUI_OBJS_WX_SUPPORT:.o=.lo)
   5.158 +	$(LIBTOOL) --mode=link $(CXX) -module $(GUI_OBJS_WX:.o=.lo) $(GUI_OBJS_WX_SUPPORT:.o=.lo) -o libbx_wx.la -rpath $(PLUGIN_PATH)  $(GUI_LINK_OPTS_WX)
   5.159 +
   5.160 +#### building DLLs for win32  (tested on cygwin only)
   5.161 +bx_%.dll: %.o
   5.162 +	$(CXX) $(CXXFLAGS) -shared -o $@ $< $(WIN32_DLL_IMPORT_LIBRARY)  $(GUI_LINK_OPTS_WIN32)
   5.163 +
   5.164 +bx_wx.dll: $(GUI_OBJS_WX) $(GUI_OBJS_WX_SUPPORT)
   5.165 +	$(CXX) $(CXXFLAGS) -shared -o bx_wx.dll $(GUI_OBJS_WX) $(GUI_OBJS_WX_SUPPORT) $(WIN32_DLL_IMPORT_LIBRARY) `wx-config --libs` -luser32 -lgdi32 -lcomdlg32 -lcomctl32
   5.166 +
   5.167 +bx_sdl.dll: $(GUI_OBJS_SDL) 
   5.168 +	$(CXX) $(CXXFLAGS) -shared -o bx_sdl.dll $(GUI_OBJS_SDL) $(WIN32_DLL_IMPORT_LIBRARY) $(GUI_LINK_OPTS_SDL)
   5.169 +
   5.170 +bx_rfb.dll: $(GUI_OBJS_RFB) 
   5.171 +	$(CXX) $(CXXFLAGS) -shared -o bx_rfb.dll $(GUI_OBJS_RFB) $(WIN32_DLL_IMPORT_LIBRARY) $(GUI_LINK_OPTS_RFB)
   5.172 +
   5.173 +# no need to build DLLs for beos.o
   5.174 +# no need to build DLLs for x.o
   5.175 +
   5.176 +##### end DLL section
   5.177 +
   5.178 +clean:
   5.179 +	@RMCOMMAND@ -rf .libs *.la *.a *.lo *.o *.dll
   5.180 +
   5.181 +dist-clean: clean
   5.182 +	@RMCOMMAND@ Makefile
   5.183 +
   5.184 +###########################################
   5.185 +# all other dependencies generated by
   5.186 +#  gcc -MM -I.. -I../instrument/stubs `wx-config --cxxflags` *.cc | 
   5.187 +#     sed -e 's/\.cc/.@CPP_SUFFIX@/g'
   5.188 +#  gcc -MM -I.. -I../instrument/stubs `wx-config --cxxflags` *.cc | \
   5.189 +#     sed -e 's/\.cc/.@CPP_SUFFIX@/g' -e 's/\.o:/.lo:/g'
   5.190 +#
   5.191 +# This means that every source file is listed twice, once with a .o rule
   5.192 +# and then again with an identical .lo rule.  The .lo rules are used when
   5.193 +# building plugins.
   5.194 +###########################################
   5.195 +amigaos.o: amigaos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
   5.196 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.197 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.198 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.199 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.200 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.201 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.202 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.203 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.204 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.205 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
   5.206 + icon_bochs.h amigagui.h
   5.207 +beos.o: beos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.208 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.209 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.210 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.211 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.212 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.213 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.214 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.215 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.216 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.217 + ../instrument/stubs/instrument.h ../font/vga.bitmap.h
   5.218 +carbon.o: carbon.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.219 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.220 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.221 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.222 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.223 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.224 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.225 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.226 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.227 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.228 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
   5.229 +gui.o: gui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.230 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.231 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.232 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.233 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.234 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.235 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.236 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.237 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.238 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.239 + ../instrument/stubs/instrument.h ../gui/bitmaps/floppya.h \
   5.240 + ../gui/bitmaps/floppyb.h ../gui/bitmaps/mouse.h \
   5.241 + ../gui/bitmaps/reset.h ../gui/bitmaps/power.h \
   5.242 + ../gui/bitmaps/snapshot.h ../gui/bitmaps/copy.h \
   5.243 + ../gui/bitmaps/paste.h ../gui/bitmaps/configbutton.h \
   5.244 + ../gui/bitmaps/cdromd.h ../gui/bitmaps/userbutton.h
   5.245 +keymap.o: keymap.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.246 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.247 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.248 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.249 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.250 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.251 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.252 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.253 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.254 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.255 + ../instrument/stubs/instrument.h
   5.256 +macintosh.o: macintosh.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
   5.257 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.258 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.259 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.260 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.261 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.262 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.263 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.264 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.265 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.266 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
   5.267 + icon_bochs.h ../font/vga.bitmap.h
   5.268 +nogui.o: nogui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.269 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.270 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.271 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.272 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.273 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.274 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.275 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.276 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.277 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.278 + ../instrument/stubs/instrument.h icon_bochs.h
   5.279 +rfb.o: rfb.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.280 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.281 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.282 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.283 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.284 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.285 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.286 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.287 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.288 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.289 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h \
   5.290 + rfbproto.h
   5.291 +sdl.o: sdl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.292 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.293 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.294 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.295 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.296 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.297 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.298 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.299 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.300 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.301 + ../instrument/stubs/instrument.h icon_bochs.h sdl.h sdlkeys.h
   5.302 +siminterface.o: siminterface.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
   5.303 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.304 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.305 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.306 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.307 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.308 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.309 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.310 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.311 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.312 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h
   5.313 +svga.o: svga.@CPP_SUFFIX@ ../font/vga.bitmap.h ../bochs.h ../config.h ../osdep.h \
   5.314 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.315 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.316 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.317 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.318 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.319 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.320 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.321 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.322 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.323 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
   5.324 + icon_bochs.h
   5.325 +term.o: term.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.326 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.327 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.328 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.329 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.330 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.331 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.332 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.333 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.334 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.335 + ../instrument/stubs/instrument.h icon_bochs.h
   5.336 +textconfig.o: textconfig.@CPP_SUFFIX@ ../config.h ../osdep.h textconfig.h \
   5.337 + siminterface.h ../extplugin.h ../ltdl.h
   5.338 +win32.o: win32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.339 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.340 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.341 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.342 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.343 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.344 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.345 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.346 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.347 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.348 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
   5.349 +wx.o: wx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.350 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.351 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.352 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.353 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.354 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.355 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.356 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.357 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.358 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.359 + ../instrument/stubs/instrument.h ../gui/icon_bochs.h \
   5.360 + ../font/vga.bitmap.h wxmain.h
   5.361 +wxdialog.o: wxdialog.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
   5.362 + ../bxversion.h wxdialog.h wxmain.h
   5.363 +wxmain.o: wxmain.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
   5.364 + ../bxversion.h wxdialog.h wxmain.h ../extplugin.h ../ltdl.h \
   5.365 + bitmaps/cdromd.xpm bitmaps/copy.xpm bitmaps/floppya.xpm \
   5.366 + bitmaps/floppyb.xpm bitmaps/paste.xpm bitmaps/power.xpm \
   5.367 + bitmaps/reset.xpm bitmaps/snapshot.xpm bitmaps/mouse.xpm \
   5.368 + bitmaps/userbutton.xpm
   5.369 +x.o: x.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.370 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.371 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.372 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.373 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.374 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.375 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.376 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.377 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.378 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.379 + ../instrument/stubs/instrument.h icon_bochs.h
   5.380 +amigaos.lo: amigaos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
   5.381 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.382 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.383 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.384 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.385 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.386 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.387 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.388 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.389 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.390 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
   5.391 + icon_bochs.h amigagui.h
   5.392 +beos.lo: beos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.393 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.394 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.395 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.396 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.397 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.398 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.399 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.400 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.401 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.402 + ../instrument/stubs/instrument.h ../font/vga.bitmap.h
   5.403 +carbon.lo: carbon.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.404 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.405 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.406 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.407 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.408 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.409 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.410 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.411 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.412 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.413 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
   5.414 +gui.lo: gui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.415 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.416 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.417 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.418 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.419 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.420 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.421 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.422 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.423 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.424 + ../instrument/stubs/instrument.h ../gui/bitmaps/floppya.h \
   5.425 + ../gui/bitmaps/floppyb.h ../gui/bitmaps/mouse.h \
   5.426 + ../gui/bitmaps/reset.h ../gui/bitmaps/power.h \
   5.427 + ../gui/bitmaps/snapshot.h ../gui/bitmaps/copy.h \
   5.428 + ../gui/bitmaps/paste.h ../gui/bitmaps/configbutton.h \
   5.429 + ../gui/bitmaps/cdromd.h ../gui/bitmaps/userbutton.h
   5.430 +keymap.lo: keymap.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.431 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.432 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.433 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.434 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.435 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.436 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.437 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.438 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.439 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.440 + ../instrument/stubs/instrument.h
   5.441 +macintosh.lo: macintosh.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
   5.442 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.443 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.444 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.445 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.446 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.447 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.448 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.449 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.450 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.451 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
   5.452 + icon_bochs.h ../font/vga.bitmap.h
   5.453 +nogui.lo: nogui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.454 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.455 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.456 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.457 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.458 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.459 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.460 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.461 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.462 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.463 + ../instrument/stubs/instrument.h icon_bochs.h
   5.464 +rfb.lo: rfb.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.465 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.466 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.467 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.468 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.469 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.470 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.471 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.472 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.473 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.474 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h \
   5.475 + rfbproto.h
   5.476 +sdl.lo: sdl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.477 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.478 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.479 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.480 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.481 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.482 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.483 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.484 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.485 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.486 + ../instrument/stubs/instrument.h icon_bochs.h sdl.h sdlkeys.h
   5.487 +siminterface.lo: siminterface.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
   5.488 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.489 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.490 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.491 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.492 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.493 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.494 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.495 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.496 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.497 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h
   5.498 +svga.lo: svga.@CPP_SUFFIX@ ../font/vga.bitmap.h ../bochs.h ../config.h ../osdep.h \
   5.499 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
   5.500 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
   5.501 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
   5.502 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
   5.503 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
   5.504 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
   5.505 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
   5.506 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
   5.507 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
   5.508 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
   5.509 + icon_bochs.h
   5.510 +term.lo: term.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.511 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.512 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.513 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.514 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.515 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.516 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.517 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.518 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.519 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.520 + ../instrument/stubs/instrument.h icon_bochs.h
   5.521 +textconfig.lo: textconfig.@CPP_SUFFIX@ ../config.h ../osdep.h textconfig.h \
   5.522 + siminterface.h ../extplugin.h ../ltdl.h
   5.523 +win32.lo: win32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.524 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.525 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.526 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.527 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.528 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.529 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.530 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.531 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.532 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.533 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
   5.534 +wx.lo: wx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.535 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.536 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.537 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.538 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.539 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.540 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.541 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.542 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.543 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.544 + ../instrument/stubs/instrument.h ../gui/icon_bochs.h \
   5.545 + ../font/vga.bitmap.h wxdialog.h wxmain.h
   5.546 +wxdialog.lo: wxdialog.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
   5.547 + ../bxversion.h wxdialog.h wxmain.h
   5.548 +wxmain.lo: wxmain.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
   5.549 + ../bxversion.h wxdialog.h wxmain.h ../extplugin.h ../ltdl.h \
   5.550 + bitmaps/cdromd.xpm bitmaps/copy.xpm bitmaps/floppya.xpm \
   5.551 + bitmaps/floppyb.xpm bitmaps/paste.xpm bitmaps/power.xpm \
   5.552 + bitmaps/reset.xpm bitmaps/snapshot.xpm bitmaps/mouse.xpm \
   5.553 + bitmaps/userbutton.xpm
   5.554 +x.lo: x.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
   5.555 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
   5.556 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
   5.557 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
   5.558 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
   5.559 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
   5.560 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
   5.561 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
   5.562 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
   5.563 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
   5.564 + ../instrument/stubs/instrument.h icon_bochs.h
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/tools/ioemu/gui/bitmaps/cdromd.h	Tue Jan 11 09:28:54 2005 +0000
     6.3 @@ -0,0 +1,34 @@
     6.4 +/////////////////////////////////////////////////////////////////////////
     6.5 +// $Id: cdromd.h,v 1.1 2002/01/31 21:16:52 vruppert Exp $
     6.6 +/////////////////////////////////////////////////////////////////////////
     6.7 +//
     6.8 +#define BX_CDROMD_BMAP_X 32
     6.9 +#define BX_CDROMD_BMAP_Y 32
    6.10 +
    6.11 +static const unsigned char bx_cdromd_bmap[(BX_CONFIG_BMAP_X * BX_CONFIG_BMAP_Y)/8] = {
    6.12 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0e, 0x00, 0x00, 0x10, 0x12, 0x00, 
    6.13 +  0x00, 0x10, 0x12, 0x00, 0x00, 0x10, 0x12, 0x00, 0x00, 0x60, 0x0e, 0x00, 
    6.14 +  0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x0c, 0x30, 0x00, 
    6.15 +  0x00, 0xe2, 0x47, 0x00, 0x00, 0x19, 0x98, 0x00, 0x80, 0xe6, 0x67, 0x01, 
    6.16 +  0x40, 0x19, 0x98, 0x02, 0x20, 0xe5, 0xa7, 0x04, 0xa0, 0x12, 0x48, 0x05, 
    6.17 +  0x90, 0xca, 0x53, 0x09, 0x50, 0x25, 0xa4, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 
    6.18 +  0x50, 0x15, 0xa8, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 
    6.19 +  0x50, 0x25, 0xa4, 0x0a, 0x90, 0xca, 0x53, 0x09, 0xa0, 0x12, 0x48, 0x05, 
    6.20 +  0x20, 0xe5, 0xa7, 0x04, 0x40, 0x19, 0x98, 0x02, 0x80, 0xe6, 0x67, 0x01, 
    6.21 +  0x00, 0x19, 0x98, 0x00, 0x00, 0xe2, 0x47, 0x00, 0x00, 0x0c, 0x30, 0x00, 
    6.22 +  0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00
    6.23 +  };
    6.24 +
    6.25 +static const unsigned char bx_cdromd_eject_bmap[(BX_CONFIG_BMAP_X * BX_CONFIG_BMAP_Y)/8] = {
    6.26 +  0x01, 0x00, 0x00, 0x80, 0x02, 0x60, 0x0e, 0x40, 0x04, 0x10, 0x12, 0x20, 
    6.27 +  0x08, 0x10, 0x12, 0x10, 0x10, 0x10, 0x12, 0x08, 0x20, 0x60, 0x0e, 0x04, 
    6.28 +  0x40, 0x00, 0x00, 0x02, 0x80, 0xf0, 0x0f, 0x01, 0x00, 0x0d, 0xb0, 0x00, 
    6.29 +  0x00, 0xe2, 0x47, 0x00, 0x00, 0x1d, 0xb8, 0x00, 0x80, 0xee, 0x77, 0x01, 
    6.30 +  0x40, 0x19, 0x98, 0x02, 0x20, 0xe5, 0xa7, 0x04, 0xa0, 0x52, 0x4a, 0x05, 
    6.31 +  0x90, 0xca, 0x53, 0x09, 0x50, 0xa5, 0xa5, 0x0a, 0x50, 0x55, 0xaa, 0x0a, 
    6.32 +  0x50, 0x35, 0xac, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 0x50, 0x1d, 0xb8, 0x0a, 
    6.33 +  0x50, 0x25, 0xa4, 0x0a, 0x90, 0xca, 0x53, 0x09, 0xa0, 0x13, 0xc8, 0x05, 
    6.34 +  0xa0, 0xe5, 0xa7, 0x05, 0x40, 0x19, 0x98, 0x02, 0xa0, 0xe6, 0x67, 0x05, 
    6.35 +  0x10, 0x19, 0x98, 0x08, 0x08, 0xe2, 0x47, 0x10, 0x04, 0x0c, 0x30, 0x20, 
    6.36 +  0x02, 0xf0, 0x0f, 0x40, 0x01, 0x00, 0x00, 0x80
    6.37 +  };
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/tools/ioemu/gui/bitmaps/cdromd.xpm	Tue Jan 11 09:28:54 2005 +0000
     7.3 @@ -0,0 +1,41 @@
     7.4 +/* XPM */
     7.5 +static char *cdromd_xpm[] = {
     7.6 +/* width height num_colors chars_per_pixel */
     7.7 +"    32    32        2            1",
     7.8 +/* colors */
     7.9 +". c None",
    7.10 +"# c #000000",
    7.11 +/* pixels */
    7.12 +"................................",
    7.13 +".............##..###............",
    7.14 +"............#....#..#...........",
    7.15 +"............#....#..#...........",
    7.16 +"............#....#..#...........",
    7.17 +".............##..###............",
    7.18 +"................................",
    7.19 +"............########............",
    7.20 +"..........##........##..........",
    7.21 +".........#...######...#.........",
    7.22 +"........#..##......##..#........",
    7.23 +".......#.##..######..##.#.......",
    7.24 +"......#.#..##......##..#.#......",
    7.25 +".....#..#.#..######..#.#..#.....",
    7.26 +".....#.#.#..#......#..#.#.#.....",
    7.27 +"....#..#.#.#..####..#.#.#..#....",
    7.28 +"....#.#.#.#..#....#..#.#.#.#....",
    7.29 +"....#.#.#.#.#......#.#.#.#.#....",
    7.30 +"....#.#.#.#.#......#.#.#.#.#....",
    7.31 +"....#.#.#.#.#......#.#.#.#.#....",
    7.32 +"....#.#.#.#.#......#.#.#.#.#....",
    7.33 +"....#.#.#.#..#....#..#.#.#.#....",
    7.34 +"....#..#.#.#..####..#.#.#..#....",
    7.35 +".....#.#.#..#......#..#.#.#.....",
    7.36 +".....#..#.#..######..#.#..#.....",
    7.37 +"......#.#..##......##..#.#......",
    7.38 +".......#.##..######..##.#.......",
    7.39 +"........#..##......##..#........",
    7.40 +".........#...######...#.........",
    7.41 +"..........##........##..........",
    7.42 +"............########............",
    7.43 +"................................"
    7.44 +};
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/tools/ioemu/gui/bitmaps/configbutton.h	Tue Jan 11 09:28:54 2005 +0000
     8.3 @@ -0,0 +1,16 @@
     8.4 +#define BX_CONFIG_BMAP_X 32
     8.5 +#define BX_CONFIG_BMAP_Y 32
     8.6 +
     8.7 +static const unsigned char bx_config_bmap[(BX_CONFIG_BMAP_X * BX_CONFIG_BMAP_Y)/8] = {
     8.8 +  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x01, 0xfc, 0x7f, 0xc0, 0x03, 
     8.9 +  0xfc, 0xff, 0xc1, 0x03, 0xfc, 0xff, 0xc1, 0x03, 0xfc, 0x7f, 0xc0, 0x03, 
    8.10 +  0x84, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
    8.11 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
    8.12 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
    8.13 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
    8.14 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xe0, 0x07, 0x80, 0x07, 0xf0, 0x0f, 
    8.15 +  0x80, 0x07, 0x70, 0x0e, 0x80, 0x07, 0x30, 0x0c, 0x80, 0x07, 0x30, 0x0c, 
    8.16 +  0x80, 0x07, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x38, 0x27, 0xba, 0x1c, 
    8.17 +  0x84, 0x68, 0x8a, 0x02, 0x84, 0xa8, 0xba, 0x32, 0x84, 0x28, 0x8b, 0x22, 
    8.18 +  0x38, 0x27, 0x8a, 0x1c, 0x00, 0x00, 0x00, 0x00
    8.19 +  };
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/tools/ioemu/gui/bitmaps/configbutton.xpm	Tue Jan 11 09:28:54 2005 +0000
     9.3 @@ -0,0 +1,41 @@
     9.4 +/* XPM */
     9.5 +static char *configbutton_xpm[] = {
     9.6 +/* width height num_colors chars_per_pixel */
     9.7 +"    32    32        2            1",
     9.8 +/* colors */
     9.9 +". c None",
    9.10 +"# c #000000",
    9.11 +/* pixels */
    9.12 +"................................",
    9.13 +"..#....................##.......",
    9.14 +"..#############.......####......",
    9.15 +"..###############.....####......",
    9.16 +"..###############.....####......",
    9.17 +"..#############.......####......",
    9.18 +"..#....####...........####......",
    9.19 +".......####...........####......",
    9.20 +".......####...........####......",
    9.21 +".......####...........####......",
    9.22 +".......####...........####......",
    9.23 +".......####...........####......",
    9.24 +".......####...........####......",
    9.25 +".......####...........####......",
    9.26 +".......####...........####......",
    9.27 +".......####...........####......",
    9.28 +".......####...........####......",
    9.29 +".......####...........####......",
    9.30 +".......####...........####......",
    9.31 +".......####..........######.....",
    9.32 +".......####.........########....",
    9.33 +".......####.........###..###....",
    9.34 +".......####.........##....##....",
    9.35 +".......####.........##....##....",
    9.36 +".......####..........#....#.....",
    9.37 +"................................",
    9.38 +"...###..###..#...#.###.#..###...",
    9.39 +"..#....#...#.##..#.#...#.#......",
    9.40 +"..#....#...#.#.#.#.###.#.#..##..",
    9.41 +"..#....#...#.#..##.#...#.#...#..",
    9.42 +"...###..###..#...#.#...#..###...",
    9.43 +"................................"
    9.44 +};
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/tools/ioemu/gui/bitmaps/copy.h	Tue Jan 11 09:28:54 2005 +0000
    10.3 @@ -0,0 +1,18 @@
    10.4 +/////////////////////////////////////////////////////////////////////////
    10.5 +// $Id: copy.h,v 1.1 2002/03/11 15:04:58 bdenney Exp $
    10.6 +/////////////////////////////////////////////////////////////////////////
    10.7 +#define BX_COPY_BMAP_X 32
    10.8 +#define BX_COPY_BMAP_Y 32
    10.9 +
   10.10 +static unsigned char bx_copy_bmap[(BX_COPY_BMAP_X*BX_COPY_BMAP_Y)] = {
   10.11 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
   10.12 +  0x80, 0x60, 0x4e, 0x02, 0x80, 0x90, 0x52, 0x02, 0x80, 0x90, 0x52, 0x02,
   10.13 +  0x00, 0x6f, 0x8e, 0x03, 0x00, 0x00, 0x02, 0x02, 0xf8, 0x3f, 0x02, 0x02,
   10.14 +  0x08, 0x20, 0xc0, 0x01, 0xe8, 0x2b, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00,
   10.15 +  0xe8, 0x2e, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0xe8, 0x39, 0x00, 0x00,
   10.16 +  0x08, 0x24, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0xe8, 0xaf, 0xff, 0x03,
   10.17 +  0x08, 0xa0, 0x00, 0x02, 0xf8, 0xbf, 0xbe, 0x02, 0x00, 0x80, 0x00, 0x02,
   10.18 +  0x80, 0x88, 0xee, 0x02, 0x80, 0x90, 0x00, 0x02, 0x00, 0xbf, 0x9e, 0x03,
   10.19 +  0x00, 0x90, 0x40, 0x02, 0x00, 0x88, 0x08, 0x02, 0x00, 0x80, 0xfe, 0x02,
   10.20 +  0x00, 0x80, 0x00, 0x02, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
   10.21 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/tools/ioemu/gui/bitmaps/copy.xpm	Tue Jan 11 09:28:54 2005 +0000
    11.3 @@ -0,0 +1,41 @@
    11.4 +/* XPM */
    11.5 +static char *copy_xpm[] = {
    11.6 +/* width height num_colors chars_per_pixel */
    11.7 +"    32    32        2            1",
    11.8 +/* colors */
    11.9 +". c None",
   11.10 +"# c #000000",
   11.11 +/* pixels */
   11.12 +"................................",
   11.13 +"........####....................",
   11.14 +".......#........................",
   11.15 +".......#.....##..###..#..#......",
   11.16 +".......#....#..#.#..#.#..#......",
   11.17 +".......#....#..#.#..#.#..#......",
   11.18 +"........####.##..###...###......",
   11.19 +".................#.......#......",
   11.20 +"...###########...#.......#......",
   11.21 +"...#.........#........###.......",
   11.22 +"...#.#####.#.#..................",
   11.23 +"...#.........#..................",
   11.24 +"...#.###.###.#..................",
   11.25 +"...#.........#..................",
   11.26 +"...#.####..###..................",
   11.27 +"...#......#..#..................",
   11.28 +"...#...#.....#..................",
   11.29 +"...#.#######.#.###########......",
   11.30 +"...#.........#.#.........#......",
   11.31 +"...###########.#.#####.#.#......",
   11.32 +"...............#.........#......",
   11.33 +".......#...#...#.###.###.#......",
   11.34 +".......#....#..#.........#......",
   11.35 +"........######.#.####..###......",
   11.36 +"............#..#......#..#......",
   11.37 +"...........#...#...#.....#......",
   11.38 +"...............#.#######.#......",
   11.39 +"...............#.........#......",
   11.40 +"...............###########......",
   11.41 +"................................",
   11.42 +"................................",
   11.43 +"................................"
   11.44 +};
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/tools/ioemu/gui/bitmaps/floppya.h	Tue Jan 11 09:28:54 2005 +0000
    12.3 @@ -0,0 +1,34 @@
    12.4 +/////////////////////////////////////////////////////////////////////////
    12.5 +// $Id: floppya.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    12.6 +/////////////////////////////////////////////////////////////////////////
    12.7 +//
    12.8 +#define BX_FLOPPYA_BMAP_X 32
    12.9 +#define BX_FLOPPYA_BMAP_Y 32
   12.10 +
   12.11 +static const unsigned char bx_floppya_bmap[(BX_FLOPPYA_BMAP_X * BX_FLOPPYA_BMAP_Y)/8] = {
   12.12 +   0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x11, 0x00,
   12.13 +   0x00, 0xc0, 0x01, 0x00, 0x00, 0x60, 0x13, 0x00, 0x00, 0x60, 0x03, 0x00,
   12.14 +   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   12.15 +   0x20, 0xfd, 0xbf, 0x04, 0x20, 0x01, 0x80, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   12.16 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   12.17 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   12.18 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   12.19 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   12.20 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   12.21 +   0xe0, 0xef, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07, 0xc0, 0xef, 0xea, 0x07,
   12.22 +   0x80, 0x57, 0xd5, 0x07, 0x00, 0xaf, 0xea, 0x07
   12.23 +  };
   12.24 +
   12.25 +static const unsigned char bx_floppya_eject_bmap[(BX_FLOPPYA_BMAP_X * BX_FLOPPYA_BMAP_Y)/8] = {
   12.26 +   0x01, 0x80, 0x00, 0x80, 0x02, 0x40, 0x01, 0x40, 0x04, 0x40, 0x11, 0x20,
   12.27 +   0x08, 0xc0, 0x01, 0x10, 0x10, 0x60, 0x13, 0x08, 0x20, 0x60, 0x03, 0x04,
   12.28 +   0x40, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   12.29 +   0x20, 0xff, 0xff, 0x04, 0x20, 0x05, 0xa0, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   12.30 +   0xe0, 0x11, 0x88, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x41, 0x82, 0x07,
   12.31 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x81, 0x81, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   12.32 +   0xe0, 0x21, 0x84, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x09, 0x90, 0x07,
   12.33 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   12.34 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   12.35 +   0xf0, 0xef, 0xea, 0x0f, 0xe8, 0xf7, 0xd5, 0x17, 0xc4, 0xef, 0xea, 0x27,
   12.36 +   0x82, 0x57, 0xd5, 0x47, 0x01, 0xaf, 0xea, 0x87
   12.37 +  };
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/tools/ioemu/gui/bitmaps/floppya.xpm	Tue Jan 11 09:28:54 2005 +0000
    13.3 @@ -0,0 +1,41 @@
    13.4 +/* XPM */
    13.5 +static char *floppya_xpm[] = {
    13.6 +/* width height num_colors chars_per_pixel */
    13.7 +"    32    32        2            1",
    13.8 +/* colors */
    13.9 +". c None",
   13.10 +"# c #000000",
   13.11 +/* pixels */
   13.12 +"...............#................",
   13.13 +"..............#.#...............",
   13.14 +"..............#.#...#...........",
   13.15 +"..............###...............",
   13.16 +".............##.##..#...........",
   13.17 +".............##.##..............",
   13.18 +"................................",
   13.19 +".....######################.....",
   13.20 +".....####..............####.....",
   13.21 +".....#..#.############.#..#.....",
   13.22 +".....#..#..............#..#.....",
   13.23 +".....####.############.####.....",
   13.24 +".....####..............####.....",
   13.25 +".....####.############.####.....",
   13.26 +".....####..............####.....",
   13.27 +".....####.############.####.....",
   13.28 +".....####..............####.....",
   13.29 +".....####.############.####.....",
   13.30 +".....####..............####.....",
   13.31 +".....####.############.####.....",
   13.32 +".....####..............####.....",
   13.33 +".....######################.....",
   13.34 +".....######################.....",
   13.35 +".....######################.....",
   13.36 +".....######################.....",
   13.37 +".....#######.#.#.#.#.######.....",
   13.38 +".....######.#####.#.#.#####.....",
   13.39 +".....#######.###.#.#.######.....",
   13.40 +".....######.#####.#.#.#####.....",
   13.41 +"......######.###.#.#.######.....",
   13.42 +".......####.#.#.#.#.#.#####.....",
   13.43 +"........####.#.#.#.#.######....."
   13.44 +};
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/tools/ioemu/gui/bitmaps/floppyb.h	Tue Jan 11 09:28:54 2005 +0000
    14.3 @@ -0,0 +1,34 @@
    14.4 +/////////////////////////////////////////////////////////////////////////
    14.5 +// $Id: floppyb.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    14.6 +/////////////////////////////////////////////////////////////////////////
    14.7 +//
    14.8 +#define BX_FLOPPYB_BMAP_X 32
    14.9 +#define BX_FLOPPYB_BMAP_Y 32
   14.10 +
   14.11 +static const unsigned char bx_floppyb_bmap[(BX_FLOPPYB_BMAP_X * BX_FLOPPYB_BMAP_Y)/8] = {
   14.12 +   0x00, 0xe0, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0xe0, 0x08, 0x00,
   14.13 +   0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0xe0, 0x00, 0x00,
   14.14 +   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   14.15 +   0x20, 0xfd, 0xbf, 0x04, 0x20, 0x01, 0x80, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   14.16 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   14.17 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   14.18 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   14.19 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   14.20 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   14.21 +   0xe0, 0xef, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07, 0xc0, 0xef, 0xea, 0x07,
   14.22 +   0x80, 0x57, 0xd5, 0x07, 0x00, 0xaf, 0xea, 0x07
   14.23 +  };
   14.24 +
   14.25 +static const unsigned char bx_floppyb_eject_bmap[(BX_FLOPPYB_BMAP_X * BX_FLOPPYB_BMAP_Y)/8] = {
   14.26 +   0x01, 0xe0, 0x00, 0x80, 0x02, 0x20, 0x01, 0x40, 0x04, 0xe0, 0x08, 0x20,
   14.27 +   0x08, 0x20, 0x01, 0x10, 0x10, 0x20, 0x09, 0x08, 0x20, 0xe0, 0x00, 0x04,
   14.28 +   0x40, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   14.29 +   0x20, 0xff, 0xff, 0x04, 0x20, 0x05, 0xa0, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   14.30 +   0xe0, 0x11, 0x88, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x41, 0x82, 0x07,
   14.31 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x81, 0x81, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   14.32 +   0xe0, 0x21, 0x84, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x09, 0x90, 0x07,
   14.33 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   14.34 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   14.35 +   0xf0, 0xef, 0xea, 0x0f, 0xe8, 0xf7, 0xd5, 0x17, 0xc4, 0xef, 0xea, 0x27,
   14.36 +   0x82, 0x57, 0xd5, 0x47, 0x01, 0xaf, 0xea, 0x87
   14.37 +  };
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/tools/ioemu/gui/bitmaps/floppyb.xpm	Tue Jan 11 09:28:54 2005 +0000
    15.3 @@ -0,0 +1,41 @@
    15.4 +/* XPM */
    15.5 +static char *floppyb_xpm[] = {
    15.6 +/* width height num_colors chars_per_pixel */
    15.7 +"    32    32        2            1",
    15.8 +/* colors */
    15.9 +". c None",
   15.10 +"# c #000000",
   15.11 +/* pixels */
   15.12 +".............###................",
   15.13 +".............#..#...............",
   15.14 +".............###...#............",
   15.15 +".............#..#...............",
   15.16 +".............#..#..#............",
   15.17 +".............###................",
   15.18 +"................................",
   15.19 +".....######################.....",
   15.20 +".....####..............####.....",
   15.21 +".....#..#.############.#..#.....",
   15.22 +".....#..#..............#..#.....",
   15.23 +".....####.############.####.....",
   15.24 +".....####..............####.....",
   15.25 +".....####.############.####.....",
   15.26 +".....####..............####.....",
   15.27 +".....####.############.####.....",
   15.28 +".....####..............####.....",
   15.29 +".....####.############.####.....",
   15.30 +".....####..............####.....",
   15.31 +".....####.############.####.....",
   15.32 +".....####..............####.....",
   15.33 +".....######################.....",
   15.34 +".....######################.....",
   15.35 +".....######################.....",
   15.36 +".....######################.....",
   15.37 +".....#######.#.#.#.#.######.....",
   15.38 +".....######.#####.#.#.#####.....",
   15.39 +".....#######.###.#.#.######.....",
   15.40 +".....######.#####.#.#.#####.....",
   15.41 +"......######.###.#.#.######.....",
   15.42 +".......####.#.#.#.#.#.#####.....",
   15.43 +"........####.#.#.#.#.######....."
   15.44 +};
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/tools/ioemu/gui/bitmaps/mouse.h	Tue Jan 11 09:28:54 2005 +0000
    16.3 @@ -0,0 +1,34 @@
    16.4 +/////////////////////////////////////////////////////////////////////////
    16.5 +// $Id: mouse.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    16.6 +/////////////////////////////////////////////////////////////////////////
    16.7 +//
    16.8 +#define BX_MOUSE_BMAP_X 32
    16.9 +#define BX_MOUSE_BMAP_Y 32
   16.10 +
   16.11 +static unsigned char bx_mouse_bmap[(BX_MOUSE_BMAP_X * BX_MOUSE_BMAP_Y)/8] = {
   16.12 +   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf8, 0x1f, 0x00,
   16.13 +   0x00, 0x0c, 0x30, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x40, 0x00,
   16.14 +   0xf8, 0xff, 0xc0, 0x00, 0x0c, 0x80, 0xc1, 0x00, 0x24, 0x22, 0xc1, 0x00,
   16.15 +   0x74, 0x77, 0x81, 0x00, 0x74, 0x77, 0x81, 0x01, 0x74, 0x77, 0x81, 0x01,
   16.16 +   0x74, 0x77, 0x01, 0x01, 0x74, 0x77, 0x01, 0x03, 0x74, 0x77, 0x01, 0x06,
   16.17 +   0x24, 0x22, 0x01, 0x0c, 0x0c, 0x80, 0x01, 0x38, 0x04, 0x00, 0x01, 0x00,
   16.18 +   0x0c, 0x80, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x0c, 0x80, 0x01, 0x00,
   16.19 +   0x04, 0x00, 0x01, 0x00, 0x0c, 0x80, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00,
   16.20 +   0x0c, 0x80, 0x01, 0x00, 0x14, 0x40, 0x01, 0x00, 0x2c, 0xa0, 0x01, 0x00,
   16.21 +   0x54, 0x55, 0x01, 0x00, 0xac, 0xaa, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00,
   16.22 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   16.23 +   };
   16.24 +
   16.25 +static unsigned char bx_nomouse_bmap[(BX_MOUSE_BMAP_X * BX_MOUSE_BMAP_Y)/8] = {
   16.26 +   0x01, 0x00, 0x00, 0x80, 0x02, 0xe0, 0x07, 0x40, 0x04, 0xf8, 0x1f, 0x20,
   16.27 +   0x08, 0x0c, 0x30, 0x10, 0x10, 0x06, 0x60, 0x08, 0x20, 0x06, 0x40, 0x04,
   16.28 +   0xf8, 0xff, 0xc0, 0x02, 0x8c, 0x80, 0xc1, 0x01, 0x24, 0x23, 0xc1, 0x00,
   16.29 +   0x74, 0x77, 0xc1, 0x00, 0x74, 0x77, 0xa1, 0x01, 0x74, 0x7f, 0x91, 0x01,
   16.30 +   0x74, 0x77, 0x09, 0x01, 0x74, 0x77, 0x05, 0x03, 0x74, 0x77, 0x03, 0x06,
   16.31 +   0x24, 0xa2, 0x01, 0x0c, 0x0c, 0x80, 0x01, 0x38, 0x04, 0x40, 0x03, 0x00,
   16.32 +   0x0c, 0xa0, 0x05, 0x00, 0x04, 0x10, 0x09, 0x00, 0x0c, 0x88, 0x11, 0x00,
   16.33 +   0x04, 0x04, 0x21, 0x00, 0x0c, 0x82, 0x41, 0x00, 0x04, 0x01, 0x81, 0x00,
   16.34 +   0x8c, 0x80, 0x01, 0x01, 0x54, 0x40, 0x01, 0x02, 0x2c, 0xa0, 0x01, 0x04,
   16.35 +   0x54, 0x55, 0x01, 0x08, 0xac, 0xaa, 0x01, 0x10, 0xfc, 0xff, 0x00, 0x20,
   16.36 +   0x02, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x80
   16.37 +   };
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/tools/ioemu/gui/bitmaps/mouse.xpm	Tue Jan 11 09:28:54 2005 +0000
    17.3 @@ -0,0 +1,41 @@
    17.4 +/* XPM */
    17.5 +static char *mouse_xpm[] = {
    17.6 +/* width height num_colors chars_per_pixel */
    17.7 +"    32    32        2            1",
    17.8 +/* colors */
    17.9 +". c None",
   17.10 +"# c #000000",
   17.11 +/* pixels */
   17.12 +"................................",
   17.13 +".............######.............",
   17.14 +"...........##########...........",
   17.15 +"..........##........##..........",
   17.16 +".........##..........##.........",
   17.17 +".........##...........#.........",
   17.18 +"...#############......##........",
   17.19 +"..##...........##.....##........",
   17.20 +"..#..#...#...#..#.....##........",
   17.21 +"..#.###.###.###.#......#........",
   17.22 +"..#.###.###.###.#......##.......",
   17.23 +"..#.###.###.###.#......##.......",
   17.24 +"..#.###.###.###.#.......#.......",
   17.25 +"..#.###.###.###.#.......##......",
   17.26 +"..#.###.###.###.#........##.....",
   17.27 +"..#..#...#...#..#.........##....",
   17.28 +"..##...........##..........###..",
   17.29 +"..#.............#...............",
   17.30 +"..##...........##...............",
   17.31 +"..#.............#...............",
   17.32 +"..##...........##...............",
   17.33 +"..#.............#...............",
   17.34 +"..##...........##...............",
   17.35 +"..#.............#...............",
   17.36 +"..##...........##...............",
   17.37 +"..#.#.........#.#...............",
   17.38 +"..##.#.......#.##...............",
   17.39 +"..#.#.#.#.#.#.#.#...............",
   17.40 +"..##.#.#.#.#.#.##...............",
   17.41 +"...#############................",
   17.42 +"................................",
   17.43 +"................................"
   17.44 +};
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/tools/ioemu/gui/bitmaps/paste.h	Tue Jan 11 09:28:54 2005 +0000
    18.3 @@ -0,0 +1,18 @@
    18.4 +/////////////////////////////////////////////////////////////////////////
    18.5 +// $Id: paste.h,v 1.1 2002/03/11 15:04:58 bdenney Exp $
    18.6 +/////////////////////////////////////////////////////////////////////////
    18.7 +#define BX_PASTE_BMAP_X 32
    18.8 +#define BX_PASTE_BMAP_Y 32
    18.9 +
   18.10 +static unsigned char bx_paste_bmap[(BX_PASTE_BMAP_X*BX_PASTE_BMAP_Y)] = {
   18.11 +  0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x10, 0x00, 0x20, 0x9a, 0x93, 0x03,
   18.12 +  0x20, 0x66, 0x78, 0x04, 0xe0, 0xa5, 0xd3, 0x07, 0x20, 0x24, 0x54, 0x00,
   18.13 +  0x20, 0xd8, 0x93, 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x02, 0x00,
   18.14 +  0x00, 0x7c, 0x3f, 0x00, 0xc0, 0x83, 0xc1, 0x03, 0x20, 0x02, 0x40, 0x04,
   18.15 +  0x20, 0x01, 0x80, 0x04, 0x20, 0x01, 0x80, 0x04, 0xa0, 0xff, 0xff, 0x05,
   18.16 +  0x20, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x04, 0x20, 0xf8, 0x3f, 0x04,
   18.17 +  0x20, 0x08, 0x20, 0x04, 0x20, 0xe8, 0x2b, 0x04, 0x20, 0x08, 0x20, 0x04,
   18.18 +  0x20, 0xe8, 0x2e, 0x04, 0x20, 0x08, 0x20, 0x04, 0x20, 0xe8, 0x39, 0x04,
   18.19 +  0x20, 0x08, 0x24, 0x04, 0x20, 0x88, 0x20, 0x04, 0x20, 0xe8, 0x2f, 0x04,
   18.20 +  0x20, 0x08, 0x20, 0x04, 0x20, 0xf8, 0x3f, 0x04, 0x20, 0x00, 0x00, 0x04,
   18.21 +  0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, };
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/tools/ioemu/gui/bitmaps/paste.xpm	Tue Jan 11 09:28:54 2005 +0000
    19.3 @@ -0,0 +1,41 @@
    19.4 +/* XPM */
    19.5 +static char *paste_xpm[] = {
    19.6 +/* width height num_colors chars_per_pixel */
    19.7 +"    32    32        2            1",
    19.8 +/* colors */
    19.9 +". c None",
   19.10 +"# c #000000",
   19.11 +/* pixels */
   19.12 +"................................",
   19.13 +".....####...........#...........",
   19.14 +".....#...#.##..###..#..###......",
   19.15 +".....#...##..##....####...#.....",
   19.16 +".....####.#..#.###..#.#####.....",
   19.17 +".....#....#..#....#.#.#.........",
   19.18 +".....#.....##.####..#..###......",
   19.19 +"...............##...............",
   19.20 +"..............##.#..............",
   19.21 +"..........#####.######..........",
   19.22 +"......####.....##.....####......",
   19.23 +".....#...#............#...#.....",
   19.24 +".....#..#..............#..#.....",
   19.25 +".....#..#..............#..#.....",
   19.26 +".....#.##################.#.....",
   19.27 +".....#....................#.....",
   19.28 +".....#....................#.....",
   19.29 +".....#.....###########....#.....",
   19.30 +".....#.....#.........#....#.....",
   19.31 +".....#.....#.#####.#.#....#.....",
   19.32 +".....#.....#.........#....#.....",
   19.33 +".....#.....#.###.###.#....#.....",
   19.34 +".....#.....#.........#....#.....",
   19.35 +".....#.....#.####..###....#.....",
   19.36 +".....#.....#......#..#....#.....",
   19.37 +".....#.....#...#.....#....#.....",
   19.38 +".....#.....#.#######.#....#.....",
   19.39 +".....#.....#.........#....#.....",
   19.40 +".....#.....###########....#.....",
   19.41 +".....#....................#.....",
   19.42 +"......####################......",
   19.43 +"................................"
   19.44 +};
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/tools/ioemu/gui/bitmaps/power.h	Tue Jan 11 09:28:54 2005 +0000
    20.3 @@ -0,0 +1,20 @@
    20.4 +/////////////////////////////////////////////////////////////////////////
    20.5 +// $Id: power.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    20.6 +/////////////////////////////////////////////////////////////////////////
    20.7 +//
    20.8 +#define BX_POWER_BMAP_X 32
    20.9 +#define BX_POWER_BMAP_Y 32
   20.10 +
   20.11 +static const unsigned char bx_power_bmap[(BX_POWER_BMAP_X * BX_POWER_BMAP_Y)/8] = {
   20.12 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
   20.13 +  0x24, 0x67, 0x66, 0x34, 0xa4, 0x28, 0x92, 0x48, 0x9a, 0xa8, 0xfa, 0x04,
   20.14 +  0x82, 0x64, 0x09, 0x04, 0x07, 0xa3, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00,
   20.15 +  0x00, 0xf8, 0x03, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x0f, 0x1e, 0x00,
   20.16 +  0x80, 0x03, 0x38, 0x00, 0xc0, 0x00, 0x60, 0x00, 0xe0, 0xe0, 0xe0, 0x00,
   20.17 +  0x60, 0xe0, 0xc0, 0x00, 0x70, 0xe0, 0xc0, 0x01, 0x30, 0xe0, 0x80, 0x01,
   20.18 +  0x30, 0xe0, 0x80, 0x01, 0x30, 0xe0, 0x80, 0x01, 0x30, 0xe0, 0x80, 0x01,
   20.19 +  0x30, 0xe0, 0x80, 0x01, 0x70, 0xe0, 0xc0, 0x01, 0x60, 0xe0, 0xc0, 0x00,
   20.20 +  0xe0, 0xe0, 0xe0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x80, 0x03, 0x38, 0x00,
   20.21 +  0x00, 0x0f, 0x1e, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xf8, 0x03, 0x00,
   20.22 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   20.23 +  };
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/tools/ioemu/gui/bitmaps/power.xpm	Tue Jan 11 09:28:54 2005 +0000
    21.3 @@ -0,0 +1,41 @@
    21.4 +/* XPM */
    21.5 +static char *power_xpm[] = {
    21.6 +/* width height num_colors chars_per_pixel */
    21.7 +"    32    32        2            1",
    21.8 +/* colors */
    21.9 +". c None",
   21.10 +"# c #000000",
   21.11 +/* pixels */
   21.12 +"................................",
   21.13 +"................................",
   21.14 +".####...........................",
   21.15 +"..#..#..###..##..##..##...#.##..",
   21.16 +"..#..#.#...#.#...#..#..#...#..#.",
   21.17 +".#.##..#...#.#.#.#.#####..#.....",
   21.18 +".#.....#..#..##.#..#......#.....",
   21.19 +"###.....##...#.#....###..###....",
   21.20 +"................................",
   21.21 +"...........#######..............",
   21.22 +".........###########............",
   21.23 +"........####.....####...........",
   21.24 +".......###.........###..........",
   21.25 +"......##.............##.........",
   21.26 +".....###.....###.....###........",
   21.27 +".....##......###......##........",
   21.28 +"....###......###......###.......",
   21.29 +"....##.......###.......##.......",
   21.30 +"....##.......###.......##.......",
   21.31 +"....##.......###.......##.......",
   21.32 +"....##.......###.......##.......",
   21.33 +"....##.......###.......##.......",
   21.34 +"....###......###......###.......",
   21.35 +".....##......###......##........",
   21.36 +".....###.....###.....###........",
   21.37 +"......##.............##.........",
   21.38 +".......###.........###..........",
   21.39 +"........####.....####...........",
   21.40 +".........###########............",
   21.41 +"...........#######..............",
   21.42 +"................................",
   21.43 +"................................"
   21.44 +};
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/tools/ioemu/gui/bitmaps/reset.h	Tue Jan 11 09:28:54 2005 +0000
    22.3 @@ -0,0 +1,20 @@
    22.4 +/////////////////////////////////////////////////////////////////////////
    22.5 +// $Id: reset.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    22.6 +/////////////////////////////////////////////////////////////////////////
    22.7 +//
    22.8 +#define BX_RESET_BMAP_X 32
    22.9 +#define BX_RESET_BMAP_Y 32
   22.10 +
   22.11 +static const unsigned char bx_reset_bmap[(BX_RESET_BMAP_X * BX_RESET_BMAP_Y)/8] = {
   22.12 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x10,
   22.13 +  0x48, 0x0c, 0xc7, 0x7c, 0x48, 0x92, 0x20, 0x11, 0x34, 0x1f, 0xf3, 0x09,
   22.14 +  0x24, 0x41, 0x12, 0x48, 0x6e, 0xce, 0xe1, 0x30, 0x00, 0x00, 0x00, 0x00,
   22.15 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   22.16 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
   22.17 +  0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00,
   22.18 +  0x00, 0xc7, 0x38, 0x00, 0x00, 0x87, 0x38, 0x00, 0x00, 0x07, 0x38, 0x00,
   22.19 +  0x00, 0x07, 0x38, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x07, 0x38, 0x00,
   22.20 +  0x00, 0x07, 0x38, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00,
   22.21 +  0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   22.22 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   22.23 +  };
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/tools/ioemu/gui/bitmaps/reset.xpm	Tue Jan 11 09:28:54 2005 +0000
    23.3 @@ -0,0 +1,41 @@
    23.4 +/* XPM */
    23.5 +static char *reset_xpm[] = {
    23.6 +/* width height num_colors chars_per_pixel */
    23.7 +"    32    32        2            1",
    23.8 +/* colors */
    23.9 +". c None",
   23.10 +"# c #000000",
   23.11 +/* pixels */
   23.12 +"................................",
   23.13 +".............................#..",
   23.14 +"..####......................#...",
   23.15 +"...#..#...##....###...##..#####.",
   23.16 +"...#..#..#..#..#.....#..#...#...",
   23.17 +"..#.##..#####...##..#####..#....",
   23.18 +"..#..#..#.....#..#..#......#..#.",
   23.19 +".###.##..###..###....###....##..",
   23.20 +"................................",
   23.21 +"................................",
   23.22 +"................................",
   23.23 +"................................",
   23.24 +"................................",
   23.25 +"...............#................",
   23.26 +"..............##................",
   23.27 +".............#######............",
   23.28 +"............#########...........",
   23.29 +".............#########..........",
   23.30 +"........###...##...###..........",
   23.31 +"........###....#...###..........",
   23.32 +"........###........###..........",
   23.33 +"........###........###..........",
   23.34 +"........###........###..........",
   23.35 +"........###........###..........",
   23.36 +"........###........###..........",
   23.37 +"........##############..........",
   23.38 +".........############...........",
   23.39 +"..........##########............",
   23.40 +"................................",
   23.41 +"................................",
   23.42 +"................................",
   23.43 +"................................"
   23.44 +};
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/tools/ioemu/gui/bitmaps/snapshot.h	Tue Jan 11 09:28:54 2005 +0000
    24.3 @@ -0,0 +1,20 @@
    24.4 +/////////////////////////////////////////////////////////////////////////
    24.5 +// $Id: snapshot.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    24.6 +/////////////////////////////////////////////////////////////////////////
    24.7 +//
    24.8 +#define BX_SNAPSHOT_BMAP_X 32
    24.9 +#define BX_SNAPSHOT_BMAP_Y 32
   24.10 +
   24.11 +static const unsigned char bx_snapshot_bmap[(BX_SNAPSHOT_BMAP_X * BX_SNAPSHOT_BMAP_Y)/8] = {
   24.12 +  0x00, 0x00, 0x20, 0x40, 0x77, 0xe6, 0xee, 0xec, 0x91, 0xa8, 0xa2, 0x52,
   24.13 +  0x96, 0xac, 0xac, 0x52, 0x94, 0xaa, 0xa8, 0x52, 0xb7, 0xee, 0xae, 0xcc,
   24.14 +  0x00, 0x20, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x08, 0x10, 0x00,
   24.15 +  0x7c, 0x0f, 0x10, 0x1f, 0xfa, 0x07, 0xa0, 0x2e, 0x42, 0x07, 0xa0, 0x50,
   24.16 +  0xa3, 0x03, 0xc0, 0xe0, 0xff, 0xee, 0x77, 0xbf, 0x01, 0xf9, 0x9f, 0x40,
   24.17 +  0x01, 0x1d, 0xb8, 0xa0, 0xff, 0xe5, 0xa7, 0xff, 0xff, 0xba, 0x5a, 0xff,
   24.18 +  0xff, 0x55, 0xb5, 0xff, 0xff, 0x8d, 0xaa, 0xff, 0xff, 0x16, 0x55, 0xff,
   24.19 +  0xff, 0xa2, 0x6a, 0xff, 0xff, 0x46, 0x55, 0xff, 0xff, 0xaa, 0x6a, 0xff,
   24.20 +  0xff, 0x56, 0x55, 0xff, 0xfe, 0xae, 0x6a, 0x7f, 0x00, 0x55, 0xb5, 0x00,
   24.21 +  0x00, 0xbd, 0xba, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0xe4, 0x27, 0x00,
   24.22 +  0x00, 0x18, 0x18, 0x00, 0x00, 0xe0, 0x07, 0x00
   24.23 +  };
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/tools/ioemu/gui/bitmaps/snapshot.xpm	Tue Jan 11 09:28:54 2005 +0000
    25.3 @@ -0,0 +1,41 @@
    25.4 +/* XPM */
    25.5 +static char *snapshot_xpm[] = {
    25.6 +/* width height num_colors chars_per_pixel */
    25.7 +"    32    32        2            1",
    25.8 +/* colors */
    25.9 +". c None",
   25.10 +"# c #000000",
   25.11 +/* pixels */
   25.12 +".....................#........#.",
   25.13 +"###.###..##..###.###.###..##.###",
   25.14 +"#...#..#...#.#.#.#...#.#.#..#.#.",
   25.15 +".##.#..#..##.#.#..##.#.#.#..#.#.",
   25.16 +"..#.#..#.#.#.#.#...#.#.#.#..#.#.",
   25.17 +"###.##.#.###.###.###.#.#..##..##",
   25.18 +".............#..................",
   25.19 +"............########............",
   25.20 +"...........#........#...........",
   25.21 +"..#####.####........#...#####...",
   25.22 +".#.########..........#.#.###.#..",
   25.23 +".#....#.###..........#.#....#.#.",
   25.24 +"##...#.###............##.....###",
   25.25 +"########.###.######.###.######.#",
   25.26 +"#.......#..##########..#......#.",
   25.27 +"#.......#.###......###.#.....#.#",
   25.28 +"#########.#..######..#.#########",
   25.29 +"########.#.###.#.#.##.#.########",
   25.30 +"#########.#.#.#.#.#.##.#########",
   25.31 +"#########.##...#.#.#.#.#########",
   25.32 +"########.##.#...#.#.#.#.########",
   25.33 +"########.#...#.#.#.#.##.########",
   25.34 +"########.##...#.#.#.#.#.########",
   25.35 +"########.#.#.#.#.#.#.##.########",
   25.36 +"########.##.#.#.#.#.#.#.########",
   25.37 +".#######.###.#.#.#.#.##.#######.",
   25.38 +"........#.#.#.#.#.#.##.#........",
   25.39 +"........#.####.#.#.###.#........",
   25.40 +".........#.##########.#.........",
   25.41 +"..........#..######..#..........",
   25.42 +"...........##......##...........",
   25.43 +".............######............."
   25.44 +};
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/tools/ioemu/gui/bitmaps/userbutton.h	Tue Jan 11 09:28:54 2005 +0000
    26.3 @@ -0,0 +1,19 @@
    26.4 +/////////////////////////////////////////////////////////////////////////
    26.5 +// $Id: userbutton.h,v 1.1 2002/08/09 06:16:43 vruppert Exp $
    26.6 +/////////////////////////////////////////////////////////////////////////
    26.7 +#define BX_USER_BMAP_X 32
    26.8 +#define BX_USER_BMAP_Y 32
    26.9 +
   26.10 +static const unsigned char bx_user_bmap[BX_USER_BMAP_X*BX_USER_BMAP_Y/8] = {
   26.11 +  0x00, 0x00, 0x00, 0x00, 0x84, 0x78, 0x9e, 0x07, 0x84, 0x04, 0x82, 0x08, 
   26.12 +  0x84, 0x04, 0x82, 0x08, 0x84, 0x38, 0x9e, 0x07, 0x84, 0x40, 0x82, 0x01, 
   26.13 +  0x84, 0x40, 0x82, 0x06, 0x78, 0x3c, 0x9e, 0x08, 0x00, 0x00, 0x00, 0x00, 
   26.14 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 
   26.15 +  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 
   26.16 +  0x00, 0x00, 0x80, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x02, 0x00, 0x00, 0x20, 
   26.17 +  0xaa, 0xaa, 0x2a, 0x2a, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 
   26.18 +  0xaa, 0xaa, 0xaa, 0x2a, 0x52, 0x55, 0x11, 0x25, 0xaa, 0xaa, 0xaa, 0x2a, 
   26.19 +  0x52, 0x55, 0x01, 0x25, 0xaa, 0xaa, 0x82, 0x2a, 0x52, 0x55, 0x11, 0x25, 
   26.20 +  0xaa, 0xbf, 0xaa, 0x2a, 0x02, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0x3f, 
   26.21 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   26.22 +  };
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/tools/ioemu/gui/bitmaps/userbutton.xpm	Tue Jan 11 09:28:54 2005 +0000
    27.3 @@ -0,0 +1,40 @@
    27.4 +/* XPM */
    27.5 +static char *userbutton_xpm[] = {
    27.6 +/* columns rows colors chars-per-pixel */
    27.7 +"32 32 2 1",
    27.8 +". c None",
    27.9 +"# c #000000",
   27.10 +/* pixels */
   27.11 +"................................",
   27.12 +"..#....#...####..####..####.....",
   27.13 +"..#....#..#......#.....#...#....",
   27.14 +"..#....#..#......#.....#...#....",
   27.15 +"..#....#...###...####..####.....",
   27.16 +"..#....#......#..#.....##.......",
   27.17 +"..#....#......#..#.....#.##.....",
   27.18 +"...####...####...####..#...#....",
   27.19 +"................................",
   27.20 +"................................",
   27.21 +".............................#..",
   27.22 +"..........................###...",
   27.23 +".........................#......",
   27.24 +"........................#.......",
   27.25 +".......................#........",
   27.26 +".......................#........",
   27.27 +".#############################..",
   27.28 +".#...........................#..",
   27.29 +".#.#.#.#.#.#.#.#.#.#.#...#.#.#..",
   27.30 +".#...........................#..",
   27.31 +".#...........................#..",
   27.32 +".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..",
   27.33 +".#..#.#.#.#.#.#.#...#...#.#..#..",
   27.34 +".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..",
   27.35 +".#..#.#.#.#.#.#.#.......#.#..#..",
   27.36 +".#.#.#.#.#.#.#.#.#.....#.#.#.#..",
   27.37 +".#..#.#.#.#.#.#.#...#...#.#..#..",
   27.38 +".#.#.#.#######.#.#.#.#.#.#.#.#..",
   27.39 +".#...........................#..",
   27.40 +".#############################..",
   27.41 +"................................",
   27.42 +"................................"
   27.43 +};
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/tools/ioemu/gui/gui.cc	Tue Jan 11 09:28:54 2005 +0000
    28.3 @@ -0,0 +1,592 @@
    28.4 +/////////////////////////////////////////////////////////////////////////
    28.5 +// $Id: gui.cc,v 1.73 2003/12/18 20:04:48 vruppert Exp $
    28.6 +/////////////////////////////////////////////////////////////////////////
    28.7 +//
    28.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    28.9 +//
   28.10 +//    MandrakeSoft S.A.
   28.11 +//    43, rue d'Aboukir
   28.12 +//    75002 Paris - France
   28.13 +//    http://www.linux-mandrake.com/
   28.14 +//    http://www.mandrakesoft.com/
   28.15 +//
   28.16 +//  This library is free software; you can redistribute it and/or
   28.17 +//  modify it under the terms of the GNU Lesser General Public
   28.18 +//  License as published by the Free Software Foundation; either
   28.19 +//  version 2 of the License, or (at your option) any later version.
   28.20 +//
   28.21 +//  This library is distributed in the hope that it will be useful,
   28.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   28.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   28.24 +//  Lesser General Public License for more details.
   28.25 +//
   28.26 +//  You should have received a copy of the GNU Lesser General Public
   28.27 +//  License along with this library; if not, write to the Free Software
   28.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   28.29 +
   28.30 +
   28.31 +#include <signal.h>
   28.32 +#include "bochs.h"
   28.33 +#include "gui/bitmaps/floppya.h"
   28.34 +#include "gui/bitmaps/floppyb.h"
   28.35 +#include "gui/bitmaps/mouse.h"
   28.36 +#include "gui/bitmaps/reset.h"
   28.37 +#include "gui/bitmaps/power.h"
   28.38 +#include "gui/bitmaps/snapshot.h"
   28.39 +#include "gui/bitmaps/copy.h"
   28.40 +#include "gui/bitmaps/paste.h"
   28.41 +#include "gui/bitmaps/configbutton.h"
   28.42 +#include "gui/bitmaps/cdromd.h"
   28.43 +#include "gui/bitmaps/userbutton.h"
   28.44 +#if BX_WITH_MACOS
   28.45 +#  include <Disks.h>
   28.46 +#endif
   28.47 +
   28.48 +bx_gui_c *bx_gui = NULL;
   28.49 +
   28.50 +#define BX_GUI_THIS bx_gui->
   28.51 +#define LOG_THIS BX_GUI_THIS
   28.52 +
   28.53 +bx_gui_c::bx_gui_c(void)
   28.54 +{
   28.55 +  put("GUI"); // Init in specific_init
   28.56 +  settype(GUILOG);
   28.57 +}
   28.58 +
   28.59 +bx_gui_c::~bx_gui_c()
   28.60 +{
   28.61 +}
   28.62 +
   28.63 +  void
   28.64 +bx_gui_c::init(int argc, char **argv, unsigned tilewidth, unsigned tileheight)
   28.65 +{
   28.66 +  specific_init(argc, argv, tilewidth, tileheight, BX_HEADER_BAR_Y);
   28.67 +
   28.68 +  // Define some bitmaps to use in the headerbar
   28.69 +  BX_GUI_THIS floppyA_bmap_id = create_bitmap(bx_floppya_bmap,
   28.70 +                          BX_FLOPPYA_BMAP_X, BX_FLOPPYA_BMAP_Y);
   28.71 +  BX_GUI_THIS floppyA_eject_bmap_id = create_bitmap(bx_floppya_eject_bmap,
   28.72 +                          BX_FLOPPYA_BMAP_X, BX_FLOPPYA_BMAP_Y);
   28.73 +  BX_GUI_THIS floppyB_bmap_id = create_bitmap(bx_floppyb_bmap,
   28.74 +                          BX_FLOPPYB_BMAP_X, BX_FLOPPYB_BMAP_Y);
   28.75 +  BX_GUI_THIS floppyB_eject_bmap_id = create_bitmap(bx_floppyb_eject_bmap,
   28.76 +                          BX_FLOPPYB_BMAP_X, BX_FLOPPYB_BMAP_Y);
   28.77 +  BX_GUI_THIS cdromD_bmap_id = create_bitmap(bx_cdromd_bmap,
   28.78 +                          BX_CDROMD_BMAP_X, BX_CDROMD_BMAP_Y);
   28.79 +  BX_GUI_THIS cdromD_eject_bmap_id = create_bitmap(bx_cdromd_eject_bmap,
   28.80 +                          BX_CDROMD_BMAP_X, BX_CDROMD_BMAP_Y);
   28.81 +  BX_GUI_THIS mouse_bmap_id = create_bitmap(bx_mouse_bmap,
   28.82 +                          BX_MOUSE_BMAP_X, BX_MOUSE_BMAP_Y);
   28.83 +  BX_GUI_THIS nomouse_bmap_id = create_bitmap(bx_nomouse_bmap,
   28.84 +                          BX_MOUSE_BMAP_X, BX_MOUSE_BMAP_Y);
   28.85 +
   28.86 +
   28.87 +  BX_GUI_THIS power_bmap_id = create_bitmap(bx_power_bmap, BX_POWER_BMAP_X, BX_POWER_BMAP_Y);
   28.88 +  BX_GUI_THIS reset_bmap_id = create_bitmap(bx_reset_bmap, BX_RESET_BMAP_X, BX_RESET_BMAP_Y);
   28.89 +  BX_GUI_THIS snapshot_bmap_id = create_bitmap(bx_snapshot_bmap, BX_SNAPSHOT_BMAP_X, BX_SNAPSHOT_BMAP_Y);
   28.90 +  BX_GUI_THIS copy_bmap_id = create_bitmap(bx_copy_bmap, BX_COPY_BMAP_X, BX_COPY_BMAP_Y);
   28.91 +  BX_GUI_THIS paste_bmap_id = create_bitmap(bx_paste_bmap, BX_PASTE_BMAP_X, BX_PASTE_BMAP_Y);
   28.92 +  BX_GUI_THIS config_bmap_id = create_bitmap(bx_config_bmap, BX_CONFIG_BMAP_X, BX_CONFIG_BMAP_Y);
   28.93 +  BX_GUI_THIS user_bmap_id = create_bitmap(bx_user_bmap, BX_USER_BMAP_X, BX_USER_BMAP_Y);
   28.94 +
   28.95 +
   28.96 +  // Add the initial bitmaps to the headerbar, and enable callback routine, for use
   28.97 +  // when that bitmap is clicked on
   28.98 +
   28.99 +  // Floppy A:
  28.100 +  BX_GUI_THIS floppyA_status = DEV_floppy_get_media_status(0);
  28.101 +  if (BX_GUI_THIS floppyA_status)
  28.102 +    BX_GUI_THIS floppyA_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyA_bmap_id,
  28.103 +                          BX_GRAVITY_LEFT, floppyA_handler);
  28.104 +  else
  28.105 +    BX_GUI_THIS floppyA_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyA_eject_bmap_id,
  28.106 +                          BX_GRAVITY_LEFT, floppyA_handler);
  28.107 +
  28.108 +  // Floppy B:
  28.109 +  BX_GUI_THIS floppyB_status = DEV_floppy_get_media_status(1);
  28.110 +  if (BX_GUI_THIS floppyB_status)
  28.111 +    BX_GUI_THIS floppyB_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyB_bmap_id,
  28.112 +                          BX_GRAVITY_LEFT, floppyB_handler);
  28.113 +  else
  28.114 +    BX_GUI_THIS floppyB_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyB_eject_bmap_id,
  28.115 +                          BX_GRAVITY_LEFT, floppyB_handler);
  28.116 +
  28.117 +  // CDROM, 
  28.118 +  // valgrinds says that the harddrive object is not be initialised yet, 
  28.119 +  // so we just set the bitmap to ejected for now
  28.120 +#if 0
  28.121 +  if (DEV_hd_present()) {
  28.122 +    Bit32u handle = DEV_hd_get_first_cd_handle();
  28.123 +    BX_GUI_THIS cdromD_status = DEV_hd_get_cd_media_status(handle);
  28.124 +  }
  28.125 +
  28.126 +  if (BX_GUI_THIS cdromD_status)
  28.127 +    BX_GUI_THIS cdromD_hbar_id = headerbar_bitmap(BX_GUI_THIS cdromD_bmap_id,
  28.128 +                          BX_GRAVITY_LEFT, cdromD_handler);
  28.129 +  else
  28.130 +#endif
  28.131 +    BX_GUI_THIS cdromD_hbar_id = headerbar_bitmap(BX_GUI_THIS cdromD_eject_bmap_id,
  28.132 +                          BX_GRAVITY_LEFT, cdromD_handler);
  28.133 +
  28.134 +  // Mouse button
  28.135 +  if (bx_options.Omouse_enabled->get ())
  28.136 +    BX_GUI_THIS mouse_hbar_id = headerbar_bitmap(BX_GUI_THIS mouse_bmap_id,
  28.137 +                          BX_GRAVITY_LEFT, toggle_mouse_enable);
  28.138 +  else
  28.139 +    BX_GUI_THIS mouse_hbar_id = headerbar_bitmap(BX_GUI_THIS nomouse_bmap_id,
  28.140 +                          BX_GRAVITY_LEFT, toggle_mouse_enable);
  28.141 +
  28.142 +  // These are the buttons on the right side.  They are created in order
  28.143 +  // of right to left.
  28.144 +
  28.145 +  // Power button
  28.146 +  BX_GUI_THIS power_hbar_id = headerbar_bitmap(BX_GUI_THIS power_bmap_id,
  28.147 +                          BX_GRAVITY_RIGHT, power_handler);
  28.148 +  // Reset button
  28.149 +  BX_GUI_THIS reset_hbar_id = headerbar_bitmap(BX_GUI_THIS reset_bmap_id,
  28.150 +                          BX_GRAVITY_RIGHT, reset_handler);
  28.151 +  // Configure button
  28.152 +  BX_GUI_THIS config_hbar_id = headerbar_bitmap(BX_GUI_THIS config_bmap_id,
  28.153 +                          BX_GRAVITY_RIGHT, config_handler);
  28.154 +  // Snapshot button
  28.155 +  BX_GUI_THIS snapshot_hbar_id = headerbar_bitmap(BX_GUI_THIS snapshot_bmap_id,
  28.156 +                          BX_GRAVITY_RIGHT, snapshot_handler);
  28.157 +  // Paste button
  28.158 +  BX_GUI_THIS paste_hbar_id = headerbar_bitmap(BX_GUI_THIS paste_bmap_id,
  28.159 +                          BX_GRAVITY_RIGHT, paste_handler);
  28.160 +  // Copy button
  28.161 +  BX_GUI_THIS copy_hbar_id = headerbar_bitmap(BX_GUI_THIS copy_bmap_id,
  28.162 +                          BX_GRAVITY_RIGHT, copy_handler);
  28.163 +  // User button
  28.164 +  BX_GUI_THIS user_hbar_id = headerbar_bitmap(BX_GUI_THIS user_bmap_id,
  28.165 +                          BX_GRAVITY_RIGHT, userbutton_handler);
  28.166 +
  28.167 +  if(bx_options.Otext_snapshot_check->get()) {
  28.168 +    bx_pc_system.register_timer(this, bx_gui_c::snapshot_checker, (unsigned) 1000000, 1, 1, "snap_chk");
  28.169 +  }
  28.170 +
  28.171 +  BX_GUI_THIS charmap_updated = 0;
  28.172 +
  28.173 +  show_headerbar();
  28.174 +}
  28.175 +
  28.176 +void
  28.177 +bx_gui_c::update_drive_status_buttons (void) {
  28.178 +  BX_GUI_THIS floppyA_status = 
  28.179 +    DEV_floppy_get_media_status(0)
  28.180 +    && bx_options.floppya.Ostatus->get ();
  28.181 +  BX_GUI_THIS floppyB_status = 
  28.182 +      DEV_floppy_get_media_status(1)
  28.183 +      && bx_options.floppyb.Ostatus->get ();
  28.184 +  Bit32u handle = DEV_hd_get_first_cd_handle();
  28.185 +  BX_GUI_THIS cdromD_status = DEV_hd_get_cd_media_status(handle);
  28.186 +  if (BX_GUI_THIS floppyA_status)
  28.187 +    replace_bitmap(BX_GUI_THIS floppyA_hbar_id, BX_GUI_THIS floppyA_bmap_id);
  28.188 +  else {
  28.189 +#if BX_WITH_MACOS
  28.190 +    // If we are using the Mac floppy driver, eject the disk
  28.191 +    // from the floppy drive.  This doesn't work in MacOS X.
  28.192 +    if (!strcmp(bx_options.floppya.Opath->getptr (), SuperDrive))
  28.193 +      DiskEject(1);
  28.194 +#endif
  28.195 +    replace_bitmap(BX_GUI_THIS floppyA_hbar_id, BX_GUI_THIS floppyA_eject_bmap_id);
  28.196 +    }
  28.197 +  if (BX_GUI_THIS floppyB_status)
  28.198 +    replace_bitmap(BX_GUI_THIS floppyB_hbar_id, BX_GUI_THIS floppyB_bmap_id);
  28.199 +  else {
  28.200 +#if BX_WITH_MACOS
  28.201 +    // If we are using the Mac floppy driver, eject the disk
  28.202 +    // from the floppy drive.  This doesn't work in MacOS X.
  28.203 +    if (!strcmp(bx_options.floppyb.Opath->getptr (), SuperDrive))
  28.204 +      DiskEject(1);
  28.205 +#endif
  28.206 +    replace_bitmap(BX_GUI_THIS floppyB_hbar_id, BX_GUI_THIS floppyB_eject_bmap_id);
  28.207 +    }
  28.208 +  if (BX_GUI_THIS cdromD_status)
  28.209 +    replace_bitmap(BX_GUI_THIS cdromD_hbar_id, BX_GUI_THIS cdromD_bmap_id);
  28.210 +  else {
  28.211 +    replace_bitmap(BX_GUI_THIS cdromD_hbar_id, BX_GUI_THIS cdromD_eject_bmap_id);
  28.212 +    }
  28.213 +}
  28.214 +
  28.215 +  void
  28.216 +bx_gui_c::floppyA_handler(void)
  28.217 +{
  28.218 +  if (bx_options.floppya.Odevtype->get() == BX_FLOPPY_NONE)
  28.219 +    return; // no primary floppy device present
  28.220 +#ifdef WIN32
  28.221 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  28.222 +              "rfb")) {
  28.223 +    // instead of just toggling the status, call win32dialog to bring up
  28.224 +    // a dialog asking what disk image you want to switch to.
  28.225 +    int ret = SIM->ask_param (BXP_FLOPPYA_PATH);
  28.226 +    if (ret > 0) {
  28.227 +      BX_GUI_THIS update_drive_status_buttons ();
  28.228 +    }
  28.229 +    return;
  28.230 +  }
  28.231 +#endif
  28.232 +  BX_GUI_THIS floppyA_status = !BX_GUI_THIS floppyA_status;
  28.233 +  DEV_floppy_set_media_status(0, BX_GUI_THIS floppyA_status);
  28.234 +  BX_GUI_THIS update_drive_status_buttons ();
  28.235 +}
  28.236 +
  28.237 +  void
  28.238 +bx_gui_c::floppyB_handler(void)
  28.239 +{
  28.240 +  if (bx_options.floppyb.Odevtype->get() == BX_FLOPPY_NONE)
  28.241 +    return; // no secondary floppy device present
  28.242 +#ifdef WIN32
  28.243 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  28.244 +              "rfb")) {
  28.245 +    // instead of just toggling the status, call win32dialog to bring up
  28.246 +    // a dialog asking what disk image you want to switch to.
  28.247 +    int ret = SIM->ask_param (BXP_FLOPPYB_PATH);
  28.248 +    if (ret > 0) {
  28.249 +      BX_GUI_THIS update_drive_status_buttons ();
  28.250 +    }
  28.251 +    return;
  28.252 +  }
  28.253 +#endif
  28.254 +  BX_GUI_THIS floppyB_status = !BX_GUI_THIS floppyB_status;
  28.255 +  DEV_floppy_set_media_status(1, BX_GUI_THIS floppyB_status);
  28.256 +  BX_GUI_THIS update_drive_status_buttons ();
  28.257 +}
  28.258 +
  28.259 +  void
  28.260 +bx_gui_c::cdromD_handler(void)
  28.261 +{
  28.262 +  Bit32u handle = DEV_hd_get_first_cd_handle();
  28.263 +  if (!strcmp(bx_options.Osel_config->get_choice(bx_options.Osel_config->get()),
  28.264 +              "wx")) {
  28.265 +    // instead of just toggling the status, call wxWindows to bring up 
  28.266 +    // a dialog asking what disk image you want to switch to.
  28.267 +    // BBD: for now, find the first cdrom and call ask_param on that.
  28.268 +    // Since we could have multiple cdroms now, maybe we should be adding
  28.269 +    // one cdrom button for each?
  28.270 +    bx_param_c *cdrom = SIM->get_first_cdrom ();
  28.271 +    if (cdrom == NULL)
  28.272 +      return;  // no cdrom found
  28.273 +    int ret = SIM->ask_param (cdrom->get_id ());
  28.274 +    if (ret < 0) return;  // cancelled
  28.275 +    // eject and then insert the disk.  If the new path is invalid,
  28.276 +    // the status will return 0.
  28.277 +    unsigned status = DEV_hd_set_cd_media_status(handle, 0);
  28.278 +    printf ("eject disk, new_status is %d\n", status);
  28.279 +    status = DEV_hd_set_cd_media_status(handle, 1);
  28.280 +    printf ("insert disk, new_status is %d\n", status);
  28.281 +    fflush (stdout);
  28.282 +    BX_GUI_THIS cdromD_status = status;
  28.283 +  } else {
  28.284 +    BX_GUI_THIS cdromD_status =
  28.285 +      DEV_hd_set_cd_media_status(handle, !BX_GUI_THIS cdromD_status);
  28.286 +  }
  28.287 +  BX_GUI_THIS update_drive_status_buttons ();
  28.288 +}
  28.289 +
  28.290 +  void
  28.291 +bx_gui_c::reset_handler(void)
  28.292 +{
  28.293 +  BX_INFO(( "system RESET callback." ));
  28.294 +  bx_pc_system.ResetSignal( PCS_SET ); /* XXX is this right? */
  28.295 +  for (int i=0; i<BX_SMP_PROCESSORS; i++)
  28.296 +      BX_CPU(i)->reset(BX_RESET_HARDWARE);
  28.297 +}
  28.298 +
  28.299 +  void
  28.300 +bx_gui_c::power_handler(void)
  28.301 +{
  28.302 +  // the user pressed power button, so there's no doubt they want bochs
  28.303 +  // to quit.  Change panics to fatal for the GUI and then do a panic.
  28.304 +  bx_user_quit = 1;
  28.305 +  LOG_THIS setonoff(LOGLEV_PANIC, ACT_FATAL);
  28.306 +  BX_PANIC (("POWER button turned off."));
  28.307 +  // shouldn't reach this point, but if you do, QUIT!!!
  28.308 +  fprintf (stderr, "Bochs is exiting because you pressed the power button.\n");
  28.309 +  BX_EXIT (1);
  28.310 +}
  28.311 +
  28.312 +Bit32s
  28.313 +bx_gui_c::make_text_snapshot (char **snapshot, Bit32u *length)
  28.314 +{
  28.315 +  Bit8u* raw_snap = NULL;
  28.316 +  char *clean_snap;
  28.317 +  unsigned line_addr, txt_addr, txHeight, txWidth;
  28.318 +
  28.319 +  DEV_vga_get_text_snapshot(&raw_snap, &txHeight, &txWidth);
  28.320 +  if (txHeight <= 0) return -1;
  28.321 +  clean_snap = (char*) malloc(txHeight*(txWidth+2)+1);
  28.322 +  txt_addr = 0;
  28.323 +  for (unsigned i=0; i<txHeight; i++) {
  28.324 +    line_addr = i * txWidth * 2;
  28.325 +    for (unsigned j=0; j<(txWidth*2); j+=2) {
  28.326 +      clean_snap[txt_addr++] = raw_snap[line_addr+j];
  28.327 +    }
  28.328 +    while ((txt_addr > 0) && (clean_snap[txt_addr-1] == ' ')) txt_addr--;
  28.329 +#ifdef WIN32
  28.330 +    if(!(bx_options.Otext_snapshot_check->get())) {
  28.331 +      clean_snap[txt_addr++] = 13;
  28.332 +    }
  28.333 +#endif
  28.334 +    clean_snap[txt_addr++] = 10;
  28.335 +  }
  28.336 +  clean_snap[txt_addr] = 0;
  28.337 +  *snapshot = clean_snap;
  28.338 +  *length = txt_addr;
  28.339 +  return 0;
  28.340 +}
  28.341 +
  28.342 +// create a text snapshot and copy to the system clipboard.  On guis that
  28.343 +// we haven't figured out how to support yet, dump to a file instead.
  28.344 +  void
  28.345 +bx_gui_c::copy_handler(void)
  28.346 +{
  28.347 +  Bit32u len;
  28.348 +  char *text_snapshot;
  28.349 +  if (make_text_snapshot (&text_snapshot, &len) < 0) {
  28.350 +    BX_INFO(( "copy button failed, mode not implemented"));
  28.351 +    return;
  28.352 +  }
  28.353 +  if (!BX_GUI_THIS set_clipboard_text(text_snapshot, len)) {
  28.354 +    // platform specific code failed, use portable code instead
  28.355 +    FILE *fp = fopen("copy.txt", "w");
  28.356 +    fwrite(text_snapshot, 1, len, fp);
  28.357 +    fclose(fp);
  28.358 +  }
  28.359 +  free(text_snapshot);
  28.360 +}
  28.361 +
  28.362 +// Check the current text snapshot against file snapchk.txt.
  28.363 +  void
  28.364 +bx_gui_c::snapshot_checker(void * this_ptr)
  28.365 +{
  28.366 +  char filename[BX_PATHNAME_LEN];
  28.367 +  strcpy(filename,"snapchk.txt");
  28.368 +  FILE *fp = fopen(filename, "rb");
  28.369 +  if(fp) {
  28.370 +    char *text_snapshot;
  28.371 +    Bit32u len;
  28.372 +    if (make_text_snapshot (&text_snapshot, &len) < 0) {
  28.373 +      return;
  28.374 +    }
  28.375 +    char *compare_snapshot = (char *) malloc((len+1) * sizeof(char));
  28.376 +    fread(compare_snapshot, 1, len, fp);
  28.377 +    fclose(fp);
  28.378 +    strcpy(filename,"snapmask.txt");
  28.379 +    fp=fopen(filename, "rb");
  28.380 +    if(fp) {
  28.381 +      char *mask_snapshot = (char *) malloc((len+1) * sizeof(char));
  28.382 +      unsigned i;
  28.383 +      bx_bool flag = 1;
  28.384 +      fread(mask_snapshot, 1, len, fp);
  28.385 +      fclose(fp);
  28.386 +      for(i=0;i<len;i++) {
  28.387 +	if((text_snapshot[i] != compare_snapshot[i]) &&
  28.388 +	   (compare_snapshot[i] == mask_snapshot[i])) {
  28.389 +	  flag = 0;
  28.390 +	  break;
  28.391 +	}
  28.392 +      }
  28.393 +      if(flag) {
  28.394 +	if(!memcmp(text_snapshot,compare_snapshot,len)) {
  28.395 +	  BX_PASS(("Test Passed."));
  28.396 +	} else {
  28.397 +	  BX_PASS(("Test Passed with Mask."));
  28.398 +	}
  28.399 +      }
  28.400 +    } else {
  28.401 +      if(!memcmp(text_snapshot,compare_snapshot,len)) {
  28.402 +	BX_PASS(("Test Passed."));
  28.403 +      }
  28.404 +    }
  28.405 +    free(compare_snapshot);
  28.406 +    free(text_snapshot);
  28.407 +  }
  28.408 +}
  28.409 +
  28.410 +// create a text snapshot and dump it to a file
  28.411 +  void
  28.412 +bx_gui_c::snapshot_handler(void)
  28.413 +{
  28.414 +  char *text_snapshot;
  28.415 +  Bit32u len;
  28.416 +  if (make_text_snapshot (&text_snapshot, &len) < 0) {
  28.417 +    BX_ERROR(( "snapshot button failed, mode not implemented"));
  28.418 +    return;
  28.419 +  }
  28.420 +  //FIXME
  28.421 +  char filename[BX_PATHNAME_LEN];
  28.422 +#ifdef WIN32
  28.423 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  28.424 +              "rfb")) {
  28.425 +#else
  28.426 +  if (!strcmp(bx_options.Osel_config->get_choice(bx_options.Osel_config->get()),
  28.427 +              "wx")) {
  28.428 +#endif
  28.429 +    int ret = SIM->ask_filename (filename, sizeof(filename),
  28.430 +                                 "Save snapshot as...", "snapshot.txt",
  28.431 +                                 bx_param_string_c::SAVE_FILE_DIALOG);
  28.432 +    if (ret < 0) { // cancelled
  28.433 +      free(text_snapshot);
  28.434 +      return;
  28.435 +    }
  28.436 +  } else {
  28.437 +    strcpy (filename, "snapshot.txt");
  28.438 +  }
  28.439 +  FILE *fp = fopen(filename, "wb");
  28.440 +  fwrite(text_snapshot, 1, len, fp);
  28.441 +  fclose(fp);
  28.442 +  free(text_snapshot);
  28.443 +}
  28.444 +
  28.445 +// Read ASCII chars from the system clipboard and paste them into bochs.
  28.446 +// Note that paste cannot work with the key mapping tables loaded.
  28.447 +  void
  28.448 +bx_gui_c::paste_handler(void)
  28.449 +{
  28.450 +  Bit32s nbytes;
  28.451 +  Bit8u *bytes;
  28.452 +  if (!bx_keymap.isKeymapLoaded ()) {
  28.453 +    BX_ERROR (("keyboard_mapping disabled, so paste cannot work"));
  28.454 +    return;
  28.455 +  }
  28.456 +  if (!BX_GUI_THIS get_clipboard_text(&bytes, &nbytes)) {
  28.457 +    BX_ERROR (("paste not implemented on this platform"));
  28.458 +    return;
  28.459 +  }
  28.460 +  BX_INFO (("pasting %d bytes", nbytes));
  28.461 +  DEV_kbd_paste_bytes (bytes, nbytes);
  28.462 +}
  28.463 +
  28.464 +
  28.465 +  void
  28.466 +bx_gui_c::config_handler(void)
  28.467 +{
  28.468 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  28.469 +              "rfb")) {
  28.470 +    SIM->configuration_interface (NULL, CI_RUNTIME_CONFIG);
  28.471 +  }
  28.472 +}
  28.473 +
  28.474 +  void
  28.475 +bx_gui_c::toggle_mouse_enable(void)
  28.476 +{
  28.477 +  int old = bx_options.Omouse_enabled->get ();
  28.478 +  BX_DEBUG (("toggle mouse_enabled, now %d", !old));
  28.479 +  bx_options.Omouse_enabled->set (!old);
  28.480 +}
  28.481 +
  28.482 +  void
  28.483 +bx_gui_c::userbutton_handler(void)
  28.484 +{
  28.485 +  unsigned shortcut[4];
  28.486 +  unsigned p;
  28.487 +  char *user_shortcut;
  28.488 +  int i, len, ret = 1;
  28.489 +
  28.490 +  len = 0;
  28.491 +#ifdef WIN32
  28.492 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  28.493 +              "rfb")) {
  28.494 +#else
  28.495 +  if (!strcmp(bx_options.Osel_config->get_choice(bx_options.Osel_config->get()),
  28.496 +              "wx")) {
  28.497 +#endif
  28.498 +    ret = SIM->ask_param (BXP_USER_SHORTCUT);
  28.499 +  }
  28.500 +  user_shortcut = bx_options.Ouser_shortcut->getptr();
  28.501 +  if ((ret > 0) && user_shortcut[0] && (strcmp(user_shortcut, "none"))) {
  28.502 +    len = 0;
  28.503 +    p = 0;
  28.504 +    while ((p < strlen(user_shortcut)) && (len < 3)) {
  28.505 +      if (!strncmp(user_shortcut+p, "alt", 3)) {
  28.506 +        shortcut[len++] = BX_KEY_ALT_L;
  28.507 +        p += 3;
  28.508 +      } else if (!strncmp(user_shortcut+p, "ctrl", 4)) {
  28.509 +        shortcut[len++] = BX_KEY_CTRL_L;
  28.510 +        p += 4;
  28.511 +      } else if (!strncmp(user_shortcut+p, "del", 3)) {
  28.512 +        shortcut[len++] = BX_KEY_DELETE;
  28.513 +        p += 3;
  28.514 +      } else if (!strncmp(user_shortcut+p, "esc", 3)) {
  28.515 +        shortcut[len++] = BX_KEY_ESC;
  28.516 +        p += 3;
  28.517 +      } else if (!strncmp(user_shortcut+p, "f1", 2)) {
  28.518 +        shortcut[len++] = BX_KEY_F1;
  28.519 +        p += 2;
  28.520 +      } else if (!strncmp(user_shortcut+p, "f4", 2)) {
  28.521 +        shortcut[len++] = BX_KEY_F4;
  28.522 +        p += 2;
  28.523 +      } else if (!strncmp(user_shortcut+p, "tab", 3)) {
  28.524 +        shortcut[len++] = BX_KEY_TAB;
  28.525 +        p += 3;
  28.526 +      } else if (!strncmp(user_shortcut+p, "win", 3)) {
  28.527 +        shortcut[len++] = BX_KEY_WIN_L;
  28.528 +        p += 3;
  28.529 +      } else if (!strncmp(user_shortcut+p, "bksp", 4)) {
  28.530 +        shortcut[len++] = BX_KEY_BACKSPACE;
  28.531 +        p += 4;
  28.532 +      } else {
  28.533 +        BX_ERROR(("Unknown shortcut %s ignored", user_shortcut));
  28.534 +        return;
  28.535 +      }
  28.536 +    }
  28.537 +    i = 0;
  28.538 +    while (i < len) {
  28.539 +      DEV_kbd_gen_scancode(shortcut[i++]);
  28.540 +    }
  28.541 +    i--;
  28.542 +    while (i >= 0) {
  28.543 +      DEV_kbd_gen_scancode(shortcut[i--] | BX_KEY_RELEASED);
  28.544 +    }
  28.545 +  }
  28.546 +}
  28.547 +
  28.548 +  void
  28.549 +bx_gui_c::mouse_enabled_changed (bx_bool val)
  28.550 +{
  28.551 +  // This is only called when SIM->get_init_done is 1.  Note that VAL
  28.552 +  // is the new value of mouse_enabled, which may not match the old
  28.553 +  // value which is still in bx_options.Omouse_enabled->get ().
  28.554 +  BX_DEBUG (("replacing the mouse bitmaps"));
  28.555 +  if (val)
  28.556 +    BX_GUI_THIS replace_bitmap(BX_GUI_THIS mouse_hbar_id, BX_GUI_THIS mouse_bmap_id);
  28.557 +  else
  28.558 +    BX_GUI_THIS replace_bitmap(BX_GUI_THIS mouse_hbar_id, BX_GUI_THIS nomouse_bmap_id);
  28.559 +  // give the GUI a chance to respond to the event.  Most guis will hide
  28.560 +  // the native mouse cursor and do something to trap the mouse inside the
  28.561 +  // bochs VGA display window.
  28.562 +  BX_GUI_THIS mouse_enabled_changed_specific (val);
  28.563 +}
  28.564 +
  28.565 +void
  28.566 +bx_gui_c::init_signal_handlers ()
  28.567 +{
  28.568 +#if BX_GUI_SIGHANDLER
  28.569 +  if (bx_gui_sighandler) 
  28.570 +  {
  28.571 +    Bit32u mask = bx_gui->get_sighandler_mask ();
  28.572 +    for (Bit32u sig=0; sig<32; sig++)
  28.573 +    {
  28.574 +      if (mask & (1<<sig))
  28.575 +        signal (sig, bx_signal_handler);
  28.576 +    }
  28.577 +  }
  28.578 +#endif
  28.579 +}
  28.580 +
  28.581 +  void
  28.582 +bx_gui_c::set_text_charmap(Bit8u *fbuffer)
  28.583 +{
  28.584 +  memcpy(& BX_GUI_THIS vga_charmap, fbuffer, 0x2000);
  28.585 +  for (unsigned i=0; i<256; i++) BX_GUI_THIS char_changed[i] = 1;
  28.586 +  BX_GUI_THIS charmap_updated = 1;
  28.587 +}
  28.588 +
  28.589 +  void
  28.590 +bx_gui_c::set_text_charbyte(Bit16u address, Bit8u data)
  28.591 +{
  28.592 +  BX_GUI_THIS vga_charmap[address] = data;
  28.593 +  BX_GUI_THIS char_changed[address >> 5] = 1;
  28.594 +  BX_GUI_THIS charmap_updated = 1;
  28.595 +}
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/tools/ioemu/gui/gui.h	Tue Jan 11 09:28:54 2005 +0000
    29.3 @@ -0,0 +1,352 @@
    29.4 +/////////////////////////////////////////////////////////////////////////
    29.5 +// $Id: gui.h,v 1.40 2003/06/28 08:04:31 vruppert Exp $
    29.6 +/////////////////////////////////////////////////////////////////////////
    29.7 +//
    29.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    29.9 +//
   29.10 +//    MandrakeSoft S.A.
   29.11 +//    43, rue d'Aboukir
   29.12 +//    75002 Paris - France
   29.13 +//    http://www.linux-mandrake.com/
   29.14 +//    http://www.mandrakesoft.com/
   29.15 +//
   29.16 +//  This library is free software; you can redistribute it and/or
   29.17 +//  modify it under the terms of the GNU Lesser General Public
   29.18 +//  License as published by the Free Software Foundation; either
   29.19 +//  version 2 of the License, or (at your option) any later version.
   29.20 +//
   29.21 +//  This library is distributed in the hope that it will be useful,
   29.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   29.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   29.24 +//  Lesser General Public License for more details.
   29.25 +//
   29.26 +//  You should have received a copy of the GNU Lesser General Public
   29.27 +//  License along with this library; if not, write to the Free Software
   29.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   29.29 +
   29.30 +typedef struct {
   29.31 +  Bit8u cs_start;
   29.32 +  Bit8u cs_end;
   29.33 +  Bit16u line_offset;
   29.34 +  Bit16u line_compare;
   29.35 +  Bit8u h_panning;
   29.36 +  Bit8u v_panning;
   29.37 +  bx_bool line_graphics;
   29.38 +} bx_vga_tminfo_t;
   29.39 +
   29.40 +
   29.41 +BOCHSAPI extern class bx_gui_c *bx_gui;
   29.42 +
   29.43 +
   29.44 +// The bx_gui_c class provides data and behavior that is common to
   29.45 +// all guis.  Each gui implementation will override the abstract methods.
   29.46 +class BOCHSAPI bx_gui_c : public logfunctions {
   29.47 +public:
   29.48 +  bx_gui_c (void);
   29.49 +  virtual ~bx_gui_c ();
   29.50 +  // Define the following functions in the module for your particular GUI
   29.51 +  // (x.cc, beos.cc, ...)
   29.52 +  virtual void specific_init(int argc, char **argv,
   29.53 +                 unsigned x_tilesize, unsigned y_tilesize, unsigned header_bar_y) = 0;
   29.54 +  virtual void text_update(Bit8u *old_text, Bit8u *new_text,
   29.55 +                          unsigned long cursor_x, unsigned long cursor_y,
   29.56 +                          bx_vga_tminfo_t tm_info, unsigned rows) = 0;
   29.57 +  virtual void graphics_tile_update(Bit8u *snapshot, unsigned x, unsigned y) = 0;
   29.58 +  virtual void handle_events(void) = 0;
   29.59 +  virtual void flush(void) = 0;
   29.60 +  virtual void clear_screen(void) = 0;
   29.61 +  virtual bx_bool palette_change(unsigned index, unsigned red, unsigned green, unsigned blue) = 0;
   29.62 +  virtual void dimension_update(unsigned x, unsigned y, unsigned fheight=0, unsigned fwidth=0, unsigned bpp=8) = 0;
   29.63 +  virtual unsigned create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim) = 0;
   29.64 +  virtual unsigned headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void)) = 0;
   29.65 +  virtual void replace_bitmap(unsigned hbar_id, unsigned bmap_id) = 0;
   29.66 +  virtual void show_headerbar(void) = 0;
   29.67 +  virtual int get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)  = 0;
   29.68 +  virtual int set_clipboard_text(char *snapshot, Bit32u len) = 0;
   29.69 +  virtual void mouse_enabled_changed_specific (bx_bool val) = 0;
   29.70 +  virtual void exit(void) = 0;
   29.71 +  // set_display_mode() changes the mode between the configuration interface
   29.72 +  // and the simulation.  This is primarily intended for display libraries
   29.73 +  // which have a full-screen mode such as SDL, term, and svgalib.  The display
   29.74 +  // mode is set to DISP_MODE_CONFIG before displaying any configuration menus,
   29.75 +  // for panics that requires user input, when entering the debugger, etc.  It
   29.76 +  // is set to DISP_MODE_SIM when the Bochs simulation resumes.  The
   29.77 +  // enum is defined in gui/siminterface.h.
   29.78 +  virtual void set_display_mode (disp_mode_t newmode) { /* default=no action*/ }
   29.79 +  // These are only needed for the term gui. For all other guis they will
   29.80 +  // have no effect.
   29.81 +  // returns 32-bit bitmask in which 1 means the GUI should handle that signal
   29.82 +  virtual Bit32u get_sighandler_mask () {return 0;}
   29.83 +  // called when registered signal arrives
   29.84 +  virtual void sighandler (int sig) {}
   29.85 +#if BX_USE_IDLE_HACK
   29.86 +  // this is called from the CPU model when the HLT instruction is executed.
   29.87 +  virtual void sim_is_idle(void) {}
   29.88 +#endif
   29.89 +
   29.90 +  // The following function(s) are defined already, and your
   29.91 +  // GUI code calls them
   29.92 +  static void key_event(Bit32u key);
   29.93 +  static void set_text_charmap(Bit8u *fbuffer);
   29.94 +  static void set_text_charbyte(Bit16u address, Bit8u data);
   29.95 +
   29.96 +  void init(int argc, char **argv,
   29.97 +                 unsigned x_tilesize, unsigned y_tilesize);
   29.98 +  void update_drive_status_buttons (void);
   29.99 +  static void     mouse_enabled_changed (bx_bool val);
  29.100 +  static void init_signal_handlers ();
  29.101 +
  29.102 +
  29.103 +protected:
  29.104 +  // And these are defined and used privately in gui.cc
  29.105 +  static void floppyA_handler(void);
  29.106 +  static void floppyB_handler(void);
  29.107 +  static void cdromD_handler(void);
  29.108 +  static void reset_handler(void);
  29.109 +  static void power_handler(void);
  29.110 +  static void copy_handler(void);
  29.111 +  static void paste_handler(void);
  29.112 +  static void snapshot_handler(void);
  29.113 +  static void snapshot_checker(void *);
  29.114 +  static void config_handler(void);
  29.115 +  static void toggle_mouse_enable(void);
  29.116 +  static void userbutton_handler(void);
  29.117 +  static Bit32s make_text_snapshot (char **snapshot, Bit32u *length);
  29.118 +
  29.119 +  bx_bool floppyA_status;
  29.120 +  bx_bool floppyB_status;
  29.121 +  bx_bool cdromD_status;
  29.122 +  unsigned floppyA_bmap_id, floppyA_eject_bmap_id, floppyA_hbar_id;
  29.123 +  unsigned floppyB_bmap_id, floppyB_eject_bmap_id, floppyB_hbar_id;
  29.124 +  unsigned cdromD_bmap_id, cdromD_eject_bmap_id, cdromD_hbar_id;
  29.125 +  unsigned power_bmap_id,    power_hbar_id;
  29.126 +  unsigned reset_bmap_id,    reset_hbar_id;
  29.127 +  unsigned copy_bmap_id, copy_hbar_id;
  29.128 +  unsigned paste_bmap_id, paste_hbar_id;
  29.129 +  unsigned snapshot_bmap_id, snapshot_hbar_id;
  29.130 +  unsigned config_bmap_id, config_hbar_id;
  29.131 +  unsigned mouse_bmap_id, nomouse_bmap_id, mouse_hbar_id;
  29.132 +  unsigned user_bmap_id, user_hbar_id;
  29.133 +
  29.134 +  unsigned char vga_charmap[0x2000];
  29.135 +  bx_bool charmap_updated;
  29.136 +  bx_bool char_changed[256];
  29.137 +  disp_mode_t disp_mode;
  29.138 +  };
  29.139 +
  29.140 +
  29.141 +// Add this macro in the class declaration of each GUI, to define all the
  29.142 +// required virtual methods.  Example:
  29.143 +//   
  29.144 +//    class bx_rfb_gui_c : public bx_gui_c {
  29.145 +//    public:
  29.146 +//      bx_rfb_gui_c (void) {}
  29.147 +//      DECLARE_GUI_VIRTUAL_METHODS()
  29.148 +//    };
  29.149 +// Then, each method must be defined later in the file.
  29.150 +#define DECLARE_GUI_VIRTUAL_METHODS()                                         \
  29.151 +  virtual void specific_init(int argc, char **argv,                           \
  29.152 +                 unsigned x_tilesize, unsigned y_tilesize,                    \
  29.153 +		 unsigned header_bar_y);                                      \
  29.154 +  virtual void text_update(Bit8u *old_text, Bit8u *new_text,                  \
  29.155 +                          unsigned long cursor_x, unsigned long cursor_y,     \
  29.156 +                          bx_vga_tminfo_t tm_info, unsigned rows);            \
  29.157 +  virtual void graphics_tile_update(Bit8u *snapshot, unsigned x, unsigned y); \
  29.158 +  virtual void handle_events(void);                                           \
  29.159 +  virtual void flush(void);                                                   \
  29.160 +  virtual void clear_screen(void);                                            \
  29.161 +  virtual bx_bool palette_change(unsigned index,                              \
  29.162 +      unsigned red, unsigned green, unsigned blue);                           \
  29.163 +  virtual void dimension_update(unsigned x, unsigned y, unsigned fheight=0,   \
  29.164 +                                unsigned fwidth=0, unsigned bpp=8);           \
  29.165 +  virtual unsigned create_bitmap(const unsigned char *bmap,                   \
  29.166 +      unsigned xdim, unsigned ydim);                                          \
  29.167 +  virtual unsigned headerbar_bitmap(unsigned bmap_id, unsigned alignment,     \
  29.168 +      void (*f)(void));                                                       \
  29.169 +  virtual void replace_bitmap(unsigned hbar_id, unsigned bmap_id);            \
  29.170 +  virtual void show_headerbar(void);                                          \
  29.171 +  virtual int get_clipboard_text(Bit8u **bytes, Bit32s *nbytes);              \
  29.172 +  virtual int set_clipboard_text(char *snapshot, Bit32u len);                 \
  29.173 +  virtual void mouse_enabled_changed_specific (bx_bool val);                  \
  29.174 +  virtual void exit(void);                                                    \
  29.175 +  /* end of DECLARE_GUI_VIRTUAL_METHODS */
  29.176 +
  29.177 +#define BX_MAX_PIXMAPS 16
  29.178 +#define BX_MAX_HEADERBAR_ENTRIES 11
  29.179 +#define BX_HEADER_BAR_Y 32
  29.180 +
  29.181 +// align pixmaps towards left or right side of header bar
  29.182 +#define BX_GRAVITY_LEFT 10
  29.183 +#define BX_GRAVITY_RIGHT 11
  29.184 +
  29.185 +#define BX_KEY_PRESSED  0x00000000
  29.186 +#define BX_KEY_RELEASED 0x80000000
  29.187 +
  29.188 +#define BX_KEY_UNHANDLED 0x10000000
  29.189 +
  29.190 +#define BX_KEY_CTRL_L   0
  29.191 +#define BX_KEY_SHIFT_L  1
  29.192 +
  29.193 +#define BX_KEY_F1     2
  29.194 +#define BX_KEY_F2     3
  29.195 +#define BX_KEY_F3     4
  29.196 +#define BX_KEY_F4     5
  29.197 +#define BX_KEY_F5     6
  29.198 +#define BX_KEY_F6     7
  29.199 +#define BX_KEY_F7     8
  29.200 +#define BX_KEY_F8     9
  29.201 +#define BX_KEY_F9    10
  29.202 +#define BX_KEY_F10   11
  29.203 +#define BX_KEY_F11   12
  29.204 +#define BX_KEY_F12   13
  29.205 +
  29.206 +#define BX_KEY_CTRL_R    14
  29.207 +#define BX_KEY_SHIFT_R   15
  29.208 +#define BX_KEY_CAPS_LOCK 16
  29.209 +#define BX_KEY_NUM_LOCK  17
  29.210 +#define BX_KEY_ALT_L     18
  29.211 +#define BX_KEY_ALT_R     19
  29.212 +
  29.213 +#define BX_KEY_A     20
  29.214 +#define BX_KEY_B     21
  29.215 +#define BX_KEY_C     22
  29.216 +#define BX_KEY_D     23
  29.217 +#define BX_KEY_E     24
  29.218 +#define BX_KEY_F     25
  29.219 +#define BX_KEY_G     26
  29.220 +#define BX_KEY_H     27
  29.221 +#define BX_KEY_I     28
  29.222 +#define BX_KEY_J     29
  29.223 +#define BX_KEY_K     30
  29.224 +#define BX_KEY_L     31
  29.225 +#define BX_KEY_M     32
  29.226 +#define BX_KEY_N     33
  29.227 +#define BX_KEY_O     34
  29.228 +#define BX_KEY_P     35
  29.229 +#define BX_KEY_Q     36
  29.230 +#define BX_KEY_R     37
  29.231 +#define BX_KEY_S     38
  29.232 +#define BX_KEY_T     39
  29.233 +#define BX_KEY_U     40
  29.234 +#define BX_KEY_V     41
  29.235 +#define BX_KEY_W     42
  29.236 +#define BX_KEY_X     43
  29.237 +#define BX_KEY_Y     44
  29.238 +#define BX_KEY_Z     45
  29.239 +
  29.240 +#define BX_KEY_0     46
  29.241 +#define BX_KEY_1     47
  29.242 +#define BX_KEY_2     48
  29.243 +#define BX_KEY_3     49
  29.244 +#define BX_KEY_4     50
  29.245 +#define BX_KEY_5     51
  29.246 +#define BX_KEY_6     52
  29.247 +#define BX_KEY_7     53
  29.248 +#define BX_KEY_8     54
  29.249 +#define BX_KEY_9     55
  29.250 +
  29.251 +#define BX_KEY_ESC    56
  29.252 +
  29.253 +#define BX_KEY_SPACE         57
  29.254 +#define BX_KEY_SINGLE_QUOTE  58
  29.255 +#define BX_KEY_COMMA         59
  29.256 +#define BX_KEY_PERIOD        60
  29.257 +#define BX_KEY_SLASH         61
  29.258 +
  29.259 +#define BX_KEY_SEMICOLON     62
  29.260 +#define BX_KEY_EQUALS        63
  29.261 +
  29.262 +#define BX_KEY_LEFT_BRACKET  64
  29.263 +#define BX_KEY_BACKSLASH     65
  29.264 +#define BX_KEY_RIGHT_BRACKET 66
  29.265 +#define BX_KEY_MINUS         67
  29.266 +#define BX_KEY_GRAVE         68
  29.267 +
  29.268 +#define BX_KEY_BACKSPACE     69
  29.269 +#define BX_KEY_ENTER         70
  29.270 +#define BX_KEY_TAB           71
  29.271 +
  29.272 +#define BX_KEY_LEFT_BACKSLASH 72
  29.273 +#define BX_KEY_PRINT         73
  29.274 +#define BX_KEY_SCRL_LOCK     74
  29.275 +#define BX_KEY_PAUSE         75
  29.276 +
  29.277 +#define BX_KEY_INSERT        76
  29.278 +#define BX_KEY_DELETE        77
  29.279 +#define BX_KEY_HOME          78
  29.280 +#define BX_KEY_END           79
  29.281 +#define BX_KEY_PAGE_UP       80
  29.282 +#define BX_KEY_PAGE_DOWN     81
  29.283 +
  29.284 +#define BX_KEY_KP_ADD        82
  29.285 +#define BX_KEY_KP_SUBTRACT   83
  29.286 +#define BX_KEY_KP_END        84
  29.287 +#define BX_KEY_KP_DOWN       85
  29.288 +#define BX_KEY_KP_PAGE_DOWN  86
  29.289 +#define BX_KEY_KP_LEFT       87
  29.290 +#define BX_KEY_KP_RIGHT      88
  29.291 +#define BX_KEY_KP_HOME       89
  29.292 +#define BX_KEY_KP_UP         90
  29.293 +#define BX_KEY_KP_PAGE_UP    91
  29.294 +#define BX_KEY_KP_INSERT     92
  29.295 +#define BX_KEY_KP_DELETE     93
  29.296 +#define BX_KEY_KP_5          94
  29.297 +
  29.298 +#define BX_KEY_UP            95
  29.299 +#define BX_KEY_DOWN          96
  29.300 +#define BX_KEY_LEFT          97
  29.301 +#define BX_KEY_RIGHT         98
  29.302 +
  29.303 +#define BX_KEY_KP_ENTER      99
  29.304 +#define BX_KEY_KP_MULTIPLY  100
  29.305 +#define BX_KEY_KP_DIVIDE    101
  29.306 +
  29.307 +#define BX_KEY_WIN_L        102
  29.308 +#define BX_KEY_WIN_R        103
  29.309 +#define BX_KEY_MENU         104
  29.310 +
  29.311 +#define BX_KEY_ALT_SYSREQ   105
  29.312 +#define BX_KEY_CTRL_BREAK   106
  29.313 +
  29.314 +#define BX_KEY_INT_BACK     107
  29.315 +#define BX_KEY_INT_FORWARD  108
  29.316 +#define BX_KEY_INT_STOP     109
  29.317 +#define BX_KEY_INT_MAIL     110
  29.318 +#define BX_KEY_INT_SEARCH   111
  29.319 +#define BX_KEY_INT_FAV      112
  29.320 +#define BX_KEY_INT_HOME     113
  29.321 +
  29.322 +#define BX_KEY_POWER_MYCOMP 114
  29.323 +#define BX_KEY_POWER_CALC   115
  29.324 +#define BX_KEY_POWER_SLEEP  116
  29.325 +#define BX_KEY_POWER_POWER  117
  29.326 +#define BX_KEY_POWER_WAKE   118
  29.327 +
  29.328 +#define BX_KEY_NBKEYS       119
  29.329 +// If you add BX_KEYs Please update 
  29.330 +// - BX_KEY_NBKEYS
  29.331 +// - the scancodes table in the file iodev/scancodes.cc
  29.332 +// - the bx_key_symbol table in the file gui/keymap.cc
  29.333 +
  29.334 +
  29.335 +/////////////// GUI plugin support
  29.336 +
  29.337 +// Define macro to supply gui plugin code.  This macro is called once in GUI to
  29.338 +// supply the plugin initialization methods.  Since it is nearly identical for
  29.339 +// each gui module, the macro is easier to maintain than pasting the same code
  29.340 +// in each one.
  29.341 +//
  29.342 +// Each gui should declare a class pointer called "theGui" which is derived
  29.343 +// from bx_gui_c, before calling this macro.  For example, the SDL port
  29.344 +// says:
  29.345 +//   static bx_sdl_gui_c *theGui;
  29.346 +
  29.347 +#define IMPLEMENT_GUI_PLUGIN_CODE(gui_name)                           \
  29.348 +  int lib##gui_name##_LTX_plugin_init(plugin_t *plugin,               \
  29.349 +          plugintype_t type, int argc, char *argv[]) {                \
  29.350 +    genlog->info("installing %s module as the Bochs GUI", #gui_name); \
  29.351 +    theGui = new bx_##gui_name##_gui_c ();                            \
  29.352 +    bx_gui = theGui;                                                  \
  29.353 +    return(0); /* Success */                                          \
  29.354 +  }                                                                   \
  29.355 +  void lib##gui_name##_LTX_plugin_fini(void) { }
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/tools/ioemu/gui/icon_bochs.h	Tue Jan 11 09:28:54 2005 +0000
    30.3 @@ -0,0 +1,40 @@
    30.4 +/////////////////////////////////////////////////////////////////////////
    30.5 +// $Id: icon_bochs.h,v 1.3 2001/10/03 13:10:37 bdenney Exp $
    30.6 +/////////////////////////////////////////////////////////////////////////
    30.7 +//
    30.8 +//  Copyright (C) 2001  MandrakeSoft S.A.
    30.9 +//
   30.10 +//    MandrakeSoft S.A.
   30.11 +//    43, rue d'Aboukir
   30.12 +//    75002 Paris - France
   30.13 +//    http://www.linux-mandrake.com/
   30.14 +//    http://www.mandrakesoft.com/
   30.15 +//
   30.16 +//  This library is free software; you can redistribute it and/or
   30.17 +//  modify it under the terms of the GNU Lesser General Public
   30.18 +//  License as published by the Free Software Foundation; either
   30.19 +//  version 2 of the License, or (at your option) any later version.
   30.20 +//
   30.21 +//  This library is distributed in the hope that it will be useful,
   30.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   30.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   30.24 +//  Lesser General Public License for more details.
   30.25 +//
   30.26 +//  You should have received a copy of the GNU Lesser General Public
   30.27 +//  License along with this library; if not, write to the Free Software
   30.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   30.29 +
   30.30 +#define bochs_icon_width 32
   30.31 +#define bochs_icon_height 32
   30.32 +static unsigned char bochs_icon_bits[] = {
   30.33 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
   30.34 +  0xe0, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
   30.35 +  0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc3, 0xc3, 0x3f,
   30.36 +  0xfc, 0xc3, 0xc3, 0x3f, 0xf8, 0xc1, 0x83, 0x1f, 0xf0, 0xc0, 0x03, 0x0f,
   30.37 +  0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
   30.38 +  0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
   30.39 +  0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf0, 0xc0, 0x03, 0x0f,
   30.40 +  0xf8, 0xc1, 0x83, 0x1f, 0xfc, 0xc3, 0xc3, 0x3f, 0xfc, 0xc3, 0xc3, 0x3f,
   30.41 +  0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xf8, 0xff, 0xff, 0x1f,
   30.42 +  0xf8, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x00,
   30.43 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/tools/ioemu/gui/icon_bochs.xpm	Tue Jan 11 09:28:54 2005 +0000
    31.3 @@ -0,0 +1,45 @@
    31.4 +/* XPM */
    31.5 +static char *icon_bochs_xpm[] = {
    31.6 +/* columns rows colors chars-per-pixel */
    31.7 +"32 32 7 1",
    31.8 +"  c black",
    31.9 +". c #800000",
   31.10 +"X c #808000",
   31.11 +"o c yellow",
   31.12 +"O c #808080",
   31.13 +"+ c #c0c0c0",
   31.14 +"@ c None",
   31.15 +/* pixels */
   31.16 +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
   31.17 +"@@@@@@@@@@.    +@@@+  +@@@@@@@@@",
   31.18 +"@@@@@@@@    Oo  @+     .@@@@@@@@",
   31.19 +"@@@@@@    ooooo    ooo.  @@@@@@@",
   31.20 +"@@@@   oooooo.    oooooX   @@@@@",
   31.21 +"@+  XoooooO   XX   ooooooo  O@@@",
   31.22 +"+  oooooO   XXXX X  ooooooo   @@",
   31.23 +"@   ooo   XXXXXX XX   ooooooX   ",
   31.24 +"@@.     XXXXXXXX XXX   Xooooo.  ",
   31.25 +"@@@@  OXXXXXXXXX XXXXXO   oO  .@",
   31.26 +"@@@@    .XXXXXXX XXXXXXX.    @@@",
   31.27 +"@+   oo   XXXX    XXXXXXXX   @@@",
   31.28 +"@   ooooo          XXXXXX      O",
   31.29 +"@@O  oooooo  OXXXX.  XX  Oooo   ",
   31.30 +"@@@@  .ooooo.  XXXXX    oooo  O@",
   31.31 +"@@@@    Oooooo   XX.  .ooo   @@@",
   31.32 +"@@@@ XX   oooooo    .oooo.  @@@@",
   31.33 +"@@@@ ooXX   .        ooO  o @@@@",
   31.34 +"@@@@ oooXX.   .Xo XX    XXo @@@@",
   31.35 +"@@@@ ooooXXXXXXXo XXXX.XXoo @@@@",
   31.36 +"@@@+ oooooooooooo XooXXXooo @@@@",
   31.37 +"@@@. oooooooooooo Xooooooo  @@@@",
   31.38 +"@@@+   oooooooooo XoooooX .@@@@@",
   31.39 +"@@@@@O  XoooooooX ooooo  +@@@@@@",
   31.40 +"@@@@@@@   ooooooX oooX  @@@@@@@@",
   31.41 +"@@@@@@@@@   ooooX oo   @@@@@@@@@",
   31.42 +"@@@@@@@@@@.  Ooo.    O@@@@@@@@@@",
   31.43 +"@@@@@@@@@@@@        @@@@@@@@@@@@",
   31.44 +"@@@@@@@@@@@@@@O   O@@@@@@@@@@@@@",
   31.45 +"@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@",
   31.46 +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
   31.47 +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
   31.48 +};
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/tools/ioemu/gui/keymap.cc	Tue Jan 11 09:28:54 2005 +0000
    32.3 @@ -0,0 +1,330 @@
    32.4 +/////////////////////////////////////////////////////////////////////////
    32.5 +// $Id: keymap.cc,v 1.16 2003/10/11 10:43:24 vruppert Exp $
    32.6 +/////////////////////////////////////////////////////////////////////////
    32.7 +//
    32.8 +//  Copyright (C) 2002 MandrakeSoft S.A.
    32.9 +//
   32.10 +//  This library is free software; you can redistribute it and/or
   32.11 +//  modify it under the terms of the GNU Lesser General Public
   32.12 +//  License as published by the Free Software Foundation; either
   32.13 +//  version 2 of the License, or (at your option) any later version.
   32.14 +//
   32.15 +//  This library is distributed in the hope that it will be useful,
   32.16 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   32.17 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   32.18 +//  Lesser General Public License for more details.
   32.19 +//
   32.20 +//  You should have received a copy of the GNU Lesser General Public
   32.21 +//  License along with this library; if not, write to the Free Software
   32.22 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   32.23 +
   32.24 +/////////////////////////////////////////////////////////////////////////
   32.25 +//
   32.26 +// Todo
   32.27 +//  . Currently supported by sdl, wxGTK and x11. Check if other guis need mapping.
   32.28 +//  . Tables look-up should be optimised.
   32.29 +//
   32.30 +
   32.31 +#include "bochs.h"
   32.32 +
   32.33 +// Table of bochs "BX_KEY_*" symbols
   32.34 +// the table must be in BX_KEY_* order
   32.35 +char *bx_key_symbol[BX_KEY_NBKEYS] = {
   32.36 +  "BX_KEY_CTRL_L",         "BX_KEY_SHIFT_L",        "BX_KEY_F1",
   32.37 +  "BX_KEY_F2",             "BX_KEY_F3",             "BX_KEY_F4",
   32.38 +  "BX_KEY_F5",             "BX_KEY_F6",             "BX_KEY_F7",
   32.39 +  "BX_KEY_F8",             "BX_KEY_F9",             "BX_KEY_F10",
   32.40 +  "BX_KEY_F11",            "BX_KEY_F12",            "BX_KEY_CTRL_R",
   32.41 +  "BX_KEY_SHIFT_R",        "BX_KEY_CAPS_LOCK",      "BX_KEY_NUM_LOCK",
   32.42 +  "BX_KEY_ALT_L",          "BX_KEY_ALT_R",          "BX_KEY_A",
   32.43 +  "BX_KEY_B",              "BX_KEY_C",              "BX_KEY_D",
   32.44 +  "BX_KEY_E",              "BX_KEY_F",              "BX_KEY_G",
   32.45 +  "BX_KEY_H",              "BX_KEY_I",              "BX_KEY_J",
   32.46 +  "BX_KEY_K",              "BX_KEY_L",              "BX_KEY_M",
   32.47 +  "BX_KEY_N",              "BX_KEY_O",              "BX_KEY_P",
   32.48 +  "BX_KEY_Q",              "BX_KEY_R",              "BX_KEY_S",
   32.49 +  "BX_KEY_T",              "BX_KEY_U",              "BX_KEY_V",
   32.50 +  "BX_KEY_W",              "BX_KEY_X",              "BX_KEY_Y",
   32.51 +  "BX_KEY_Z",              "BX_KEY_0",              "BX_KEY_1",
   32.52 +  "BX_KEY_2",              "BX_KEY_3",              "BX_KEY_4",
   32.53 +  "BX_KEY_5",              "BX_KEY_6",              "BX_KEY_7",
   32.54 +  "BX_KEY_8",              "BX_KEY_9",              "BX_KEY_ESC",
   32.55 +  "BX_KEY_SPACE",          "BX_KEY_SINGLE_QUOTE",   "BX_KEY_COMMA",
   32.56 +  "BX_KEY_PERIOD",         "BX_KEY_SLASH",          "BX_KEY_SEMICOLON",
   32.57 +  "BX_KEY_EQUALS",         "BX_KEY_LEFT_BRACKET",   "BX_KEY_BACKSLASH",
   32.58 +  "BX_KEY_RIGHT_BRACKET",  "BX_KEY_MINUS",          "BX_KEY_GRAVE",
   32.59 +  "BX_KEY_BACKSPACE",      "BX_KEY_ENTER",          "BX_KEY_TAB",
   32.60 +  "BX_KEY_LEFT_BACKSLASH", "BX_KEY_PRINT",          "BX_KEY_SCRL_LOCK",
   32.61 +  "BX_KEY_PAUSE",          "BX_KEY_INSERT",         "BX_KEY_DELETE",
   32.62 +  "BX_KEY_HOME",           "BX_KEY_END",            "BX_KEY_PAGE_UP",
   32.63 +  "BX_KEY_PAGE_DOWN",      "BX_KEY_KP_ADD",         "BX_KEY_KP_SUBTRACT",
   32.64 +  "BX_KEY_KP_END",         "BX_KEY_KP_DOWN",        "BX_KEY_KP_PAGE_DOWN",
   32.65 +  "BX_KEY_KP_LEFT",        "BX_KEY_KP_RIGHT",       "BX_KEY_KP_HOME",
   32.66 +  "BX_KEY_KP_UP",          "BX_KEY_KP_PAGE_UP",     "BX_KEY_KP_INSERT",
   32.67 +  "BX_KEY_KP_DELETE",      "BX_KEY_KP_5",           "BX_KEY_UP",
   32.68 +  "BX_KEY_DOWN",           "BX_KEY_LEFT",           "BX_KEY_RIGHT",
   32.69 +  "BX_KEY_KP_ENTER",       "BX_KEY_KP_MULTIPLY",    "BX_KEY_KP_DIVIDE",
   32.70 +  "BX_KEY_WIN_L",          "BX_KEY_WIN_R",          "BX_KEY_MENU",           
   32.71 +  "BX_KEY_ALT_SYSREQ",     "BX_KEY_CTRL_BREAK",     "BX_KEY_INT_BACK",       
   32.72 +  "BX_KEY_INT_FORWARD",    "BX_KEY_INT_STOP",       "BX_KEY_INT_MAIL",       
   32.73 +  "BX_KEY_INT_SEARCH",     "BX_KEY_INT_FAV",        "BX_KEY_INT_HOME",       
   32.74 +  "BX_KEY_POWER_MYCOMP",   "BX_KEY_POWER_CALC",     "BX_KEY_POWER_SLEEP",    
   32.75 +  "BX_KEY_POWER_POWER",    "BX_KEY_POWER_WAKE",
   32.76 +  };
   32.77 +
   32.78 +bx_keymap_c bx_keymap;
   32.79 +
   32.80 +#define LOG_THIS bx_keymap.
   32.81 +
   32.82 +bx_keymap_c::bx_keymap_c(void)
   32.83 +{
   32.84 +    put("KMAP");
   32.85 +
   32.86 +    keymapCount = 0;
   32.87 +    keymapTable = (BXKeyEntry *)NULL;
   32.88 +
   32.89 +}
   32.90 +
   32.91 +bx_keymap_c::~bx_keymap_c(void)
   32.92 +{
   32.93 +    if(keymapTable != NULL) {
   32.94 +      free(keymapTable);
   32.95 +      keymapTable = (BXKeyEntry *)NULL;
   32.96 +      }
   32.97 +    keymapCount = 0;
   32.98 +}
   32.99 +
  32.100 +    void
  32.101 +bx_keymap_c::loadKeymap(Bit32u stringToSymbol(const char*))
  32.102 +{
  32.103 +  if(bx_options.keyboard.OuseMapping->get()) {
  32.104 +    loadKeymap(stringToSymbol,bx_options.keyboard.Okeymap->getptr());
  32.105 +    }
  32.106 +}
  32.107 +
  32.108 +
  32.109 +bx_bool 
  32.110 +bx_keymap_c::isKeymapLoaded ()
  32.111 +{
  32.112 +  return (keymapCount > 0);
  32.113 +}
  32.114 +
  32.115 +
  32.116 +///////////////////
  32.117 +// I'll add these to the keymap object in a minute.
  32.118 +static unsigned char *lineptr = NULL;
  32.119 +static int lineCount;
  32.120 +
  32.121 +static void
  32.122 +init_parse ()
  32.123 +{
  32.124 +  lineCount = 0;
  32.125 +}
  32.126 +
  32.127 +static void
  32.128 +init_parse_line (char *line_to_parse)
  32.129 +{
  32.130 +  // chop off newline
  32.131 +  lineptr = (unsigned char *)line_to_parse;
  32.132 +  char *nl;
  32.133 +  if( (nl = strchr(line_to_parse,'\n')) != NULL) {
  32.134 +    *nl = 0;
  32.135 +  }
  32.136 +}
  32.137 +
  32.138 +static Bit32s
  32.139 +get_next_word (char *output)
  32.140 +{
  32.141 +  char *copyp = output;
  32.142 +  // find first nonspace
  32.143 +  while (*lineptr && isspace (*lineptr))
  32.144 +    lineptr++;
  32.145 +  if (!*lineptr) 
  32.146 +    return -1;  // nothing but spaces until end of line
  32.147 +  if (*lineptr == '#')
  32.148 +    return -1;  // nothing but a comment
  32.149 +  // copy nonspaces into the output
  32.150 +  while (*lineptr && !isspace (*lineptr))
  32.151 +    *copyp++ = *lineptr++;
  32.152 +  *copyp=0;  // null terminate the copy
  32.153 +  // there must be at least one nonspace, since that's why we stopped the
  32.154 +  // first loop!
  32.155 +  BX_ASSERT (copyp != output);
  32.156 +  return 0;
  32.157 +}
  32.158 +
  32.159 +static Bit32s
  32.160 +get_next_keymap_line (FILE *fp, char *bxsym, char *modsym, Bit32s *ascii, char *hostsym)
  32.161 +{
  32.162 +  char line[256];
  32.163 +  char buf[256];
  32.164 +  line[0] = 0;
  32.165 +  while (1) {
  32.166 +    lineCount++;
  32.167 +    if (!fgets(line, sizeof(line)-1, fp)) return -1;  // EOF
  32.168 +    init_parse_line (line);
  32.169 +    if (get_next_word (bxsym) >= 0) {
  32.170 +      modsym[0] = 0;
  32.171 +      char *p;
  32.172 +      if ((p = strchr (bxsym, '+')) != NULL) {
  32.173 +	*p = 0;  // truncate bxsym.
  32.174 +	p++;  // move one char beyond the +
  32.175 +	strcpy (modsym, p);  // copy the rest to modsym
  32.176 +      }
  32.177 +      if (get_next_word (buf) < 0) {
  32.178 +	BX_PANIC (("keymap line %d: expected 3 columns", lineCount));
  32.179 +	return -1;
  32.180 +      }
  32.181 +      if (buf[0] == '\'' && buf[2] == '\'' && buf[3]==0) {
  32.182 +	*ascii = (Bit8u) buf[1];
  32.183 +      } else if (!strcmp(buf, "space")) {
  32.184 +	*ascii = ' ';
  32.185 +      } else if (!strcmp(buf, "return")) {
  32.186 +	*ascii = '\n';
  32.187 +      } else if (!strcmp(buf, "tab")) {
  32.188 +	*ascii = '\t';
  32.189 +      } else if (!strcmp(buf, "backslash")) {
  32.190 +	*ascii = '\\';
  32.191 +      } else if (!strcmp(buf, "apostrophe")) {
  32.192 +	*ascii = '\'';
  32.193 +      } else if (!strcmp(buf, "none")) {
  32.194 +	*ascii = -1;
  32.195 +      } else {
  32.196 +	BX_PANIC (("keymap line %d: ascii equivalent is \"%s\" but it must be char constant like 'x', or one of space,tab,return,none", lineCount, buf));
  32.197 +      }
  32.198 +      if (get_next_word (hostsym) < 0) {
  32.199 +        BX_PANIC (("keymap line %d: expected 3 columns", lineCount));
  32.200 +	return -1;
  32.201 +      }
  32.202 +      return 0;
  32.203 +    }
  32.204 +    // no words on this line, keep reading.
  32.205 +  }
  32.206 +}
  32.207 +
  32.208 +    void
  32.209 +bx_keymap_c::loadKeymap(Bit32u stringToSymbol(const char*), const char* filename)
  32.210 +{
  32.211 +    FILE   *keymapFile;
  32.212 +    char baseSym[256], modSym[256], hostSym[256]; 
  32.213 +    Bit32s ascii;
  32.214 +    Bit32u baseKey, modKey, hostKey;
  32.215 +    struct stat status;
  32.216 +
  32.217 +    if (stat(filename, &status)) {
  32.218 +      BX_PANIC(("Can not stat keymap file '%s'.",filename));
  32.219 +      }
  32.220 +
  32.221 +    if (!(S_ISREG(status.st_mode))) {
  32.222 +      BX_PANIC(("Keymap file '%s' is not a file",filename));
  32.223 +      }
  32.224 +
  32.225 +    if((keymapFile = fopen(filename,"r"))==NULL) {
  32.226 +      BX_PANIC(("Can not open keymap file '%s'.",filename));
  32.227 +      }
  32.228 +    
  32.229 +    BX_INFO(("Loading keymap from '%s'",filename));
  32.230 +    init_parse ();
  32.231 +
  32.232 +    // Read keymap file one line at a time
  32.233 +    while(1) {
  32.234 +      if (get_next_keymap_line (keymapFile, 
  32.235 +            baseSym, modSym, &ascii, hostSym) < 0) { break; }
  32.236 +
  32.237 +
  32.238 +      // convert X_KEY_* symbols to values
  32.239 +      baseKey = convertStringToBXKey(baseSym);
  32.240 +      modKey = convertStringToBXKey(modSym);
  32.241 +      hostKey = 0;
  32.242 +      if (stringToSymbol != NULL)
  32.243 +        hostKey = stringToSymbol(hostSym);
  32.244 +
  32.245 +      BX_DEBUG (("baseKey='%s' (%d), modSym='%s' (%d), ascii=%d, guisym='%s' (%d)", baseSym, baseKey, modSym, modKey, ascii, hostSym, hostKey));
  32.246 +       
  32.247 +      // Check if data is valid
  32.248 +      if( baseKey==BX_KEYMAP_UNKNOWN ) {
  32.249 +        BX_PANIC (("line %d: unknown BX_KEY constant '%s'",lineCount,baseSym));
  32.250 +        continue;
  32.251 +        }
  32.252 +
  32.253 +      if( hostKey==BX_KEYMAP_UNKNOWN ) {
  32.254 +        BX_PANIC (("line %d: unknown host key name '%s'",lineCount,hostSym));
  32.255 +        continue;
  32.256 +        }
  32.257 +
  32.258 +      keymapTable=(BXKeyEntry*)realloc(keymapTable,(keymapCount+1) * sizeof(BXKeyEntry));
  32.259 +      
  32.260 +      if(keymapTable==NULL) 
  32.261 +        BX_PANIC(("Can not allocate memory for keymap table."));
  32.262 +
  32.263 +      keymapTable[keymapCount].baseKey=baseKey;
  32.264 +      keymapTable[keymapCount].modKey=modKey;
  32.265 +      keymapTable[keymapCount].ascii=ascii;
  32.266 +      keymapTable[keymapCount].hostKey=hostKey;
  32.267 +      
  32.268 +      keymapCount++;
  32.269 +      }
  32.270 +
  32.271 +    BX_INFO(("Loaded %d symbols",keymapCount));
  32.272 +
  32.273 +    fclose(keymapFile);
  32.274 +}
  32.275 +
  32.276 +    Bit32u
  32.277 +bx_keymap_c::convertStringToBXKey(const char* string)
  32.278 +{
  32.279 +    Bit16u i;
  32.280 +
  32.281 +    // We look through the bx_key_symbol table to find the searched string
  32.282 +    for (i=0; i<BX_KEY_NBKEYS; i++) {
  32.283 +      if (strcmp(string,bx_key_symbol[i])==0) {
  32.284 +        return i;
  32.285 +        }
  32.286 +      }
  32.287 +  
  32.288 +    // Key is not known
  32.289 +    return BX_KEYMAP_UNKNOWN;
  32.290 +}
  32.291 +
  32.292 +    BXKeyEntry *
  32.293 +bx_keymap_c::findHostKey(Bit32u key)
  32.294 +{
  32.295 +    Bit16u i;
  32.296 +
  32.297 +    // We look through the keymap table to find the searched key
  32.298 +    for (i=0; i<keymapCount; i++) {
  32.299 +      if (keymapTable[i].hostKey == key) {
  32.300 +	BX_DEBUG (("key 0x%02x matches hostKey for entry #%d", key, i));
  32.301 +        return &keymapTable[i];
  32.302 +        }
  32.303 +      }
  32.304 +    BX_DEBUG (("key %02x matches no entries", key));
  32.305 +
  32.306 +    // Return default
  32.307 +    return NULL;
  32.308 +}
  32.309 +
  32.310 +    BXKeyEntry *
  32.311 +bx_keymap_c::findAsciiChar(Bit8u ch)
  32.312 +{
  32.313 +    Bit16u i;
  32.314 +    BX_DEBUG (("findAsciiChar (0x%02x)", ch));
  32.315 +
  32.316 +    // We look through the keymap table to find the searched key
  32.317 +    for (i=0; i<keymapCount; i++) {
  32.318 +      if (keymapTable[i].ascii == ch) {
  32.319 +	BX_DEBUG (("key %02x matches ascii for entry #%d", ch, i));
  32.320 +        return &keymapTable[i];
  32.321 +        }
  32.322 +      }
  32.323 +    BX_DEBUG (("key 0x%02x matches no entries", ch));
  32.324 +
  32.325 +    // Return default
  32.326 +    return NULL;
  32.327 +}
  32.328 +
  32.329 +    char *
  32.330 +bx_keymap_c::getBXKeyName(Bit32u key)
  32.331 +{
  32.332 +    return bx_key_symbol[key & 0x7fffffff];
  32.333 +}
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/tools/ioemu/gui/keymap.h	Tue Jan 11 09:28:54 2005 +0000
    33.3 @@ -0,0 +1,77 @@
    33.4 +/////////////////////////////////////////////////////////////////////////
    33.5 +// $Id: keymap.h,v 1.9 2003/07/12 08:17:10 vruppert Exp $
    33.6 +/////////////////////////////////////////////////////////////////////////
    33.7 +//
    33.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    33.9 +//
   33.10 +//  This library is free software; you can redistribute it and/or
   33.11 +//  modify it under the terms of the GNU Lesser General Public
   33.12 +//  License as published by the Free Software Foundation; either
   33.13 +//  version 2 of the License, or (at your option) any later version.
   33.14 +//
   33.15 +//  This library is distributed in the hope that it will be useful,
   33.16 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   33.17 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   33.18 +//  Lesser General Public License for more details.
   33.19 +//
   33.20 +//  You should have received a copy of the GNU Lesser General Public
   33.21 +//  License along with this library; if not, write to the Free Software
   33.22 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   33.23 +
   33.24 +/////////////////////////////////////////////////////////////////////////
   33.25 +//
   33.26 +// Methods of bx_keymap_c :
   33.27 +//
   33.28 +// - loadKeymap(Bit32u convertStringToSymbol(const char*));
   33.29 +//   loads the configuration specified keymap file if keymapping is enabled
   33.30 +//   using convertStringToSymbol to convert strings to client constants
   33.31 +//
   33.32 +// - loadKeymap(Bit32u convertStringToSymbol(const char*), const char* filename);
   33.33 +//   loads the specified keymap file 
   33.34 +//   using convertStringToSymbol to convert strings to client constants
   33.35 +//
   33.36 +// - isKeymapLoaded () returns true if the keymap contains any valid key
   33.37 +//   entries.
   33.38 +//
   33.39 +// - convertStringToBXKey
   33.40 +//   convert a null-terminate string to a BX_KEY code
   33.41 +//
   33.42 +// - findHostKey(Bit32u key)
   33.43 +// - findAsciiChar(Bit8u ch)
   33.44 +//   Each of these methods returns a pointer to a BXKeyEntry structure
   33.45 +//   corresponding to a key.  findHostKey() finds an entry whose hostKey
   33.46 +//   value matches the target value, and findAsciiChar() finds an entry
   33.47 +//   whose ASCII code matches the search value.
   33.48 +
   33.49 +// In case of unknown symbol
   33.50 +#define BX_KEYMAP_UNKNOWN   0xFFFFFFFF
   33.51 +
   33.52 +// Structure of an element of the keymap table
   33.53 +typedef struct BOCHSAPI { 
   33.54 +  Bit32u baseKey;   // base key
   33.55 +  Bit32u modKey;   // modifier key that must be held down
   33.56 +  Bit32s ascii;    // ascii equivalent, if any
   33.57 +  Bit32u hostKey;  // value that the host's OS or library recognizes
   33.58 +  } BXKeyEntry;
   33.59 +
   33.60 +class BOCHSAPI bx_keymap_c : public logfunctions {
   33.61 +public:
   33.62 +  bx_keymap_c(void);
   33.63 +  ~bx_keymap_c(void);
   33.64 +
   33.65 +  void   loadKeymap(Bit32u(*)(const char*));
   33.66 +  void   loadKeymap(Bit32u(*)(const char*),const char *filename);
   33.67 +  bx_bool isKeymapLoaded ();
   33.68 +
   33.69 +  BXKeyEntry *findHostKey(Bit32u hostkeynum);
   33.70 +  BXKeyEntry *findAsciiChar(Bit8u ascii);
   33.71 +  char *getBXKeyName(Bit32u key);
   33.72 +
   33.73 +private:
   33.74 +  Bit32u convertStringToBXKey(const char *);
   33.75 + 
   33.76 +  BXKeyEntry *keymapTable;
   33.77 +  Bit16u   keymapCount;
   33.78 +  };
   33.79 +
   33.80 +BOCHSAPI extern bx_keymap_c bx_keymap;
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/tools/ioemu/gui/keymaps/convertmap.pl	Tue Jan 11 09:28:54 2005 +0000
    34.3 @@ -0,0 +1,14 @@
    34.4 +#!/usr/bin/perl
    34.5 +# little utility script that I used to convert key map files from
    34.6 +# the pre-March 11 format to the post-March 11 format.  It doesn't
    34.7 +# do anything smart with the ascii equivalents and modifiers, so ATM those must
    34.8 +# be added by hand.
    34.9 +
   34.10 +while (<STDIN>)
   34.11 +{
   34.12 +  chop;
   34.13 +  s/^ *//;
   34.14 +  if (/^#/ || /^ *$/) { print "$_\n"; next;}
   34.15 +  ($key, $equals, $xksym) = split (/ +/);
   34.16 +  printf ("%-45s %-10s %s\n", $key, 'none', "XK_$xksym");
   34.17 +}
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/tools/ioemu/gui/keymaps/sdl-pc-de.map	Tue Jan 11 09:28:54 2005 +0000
    35.3 @@ -0,0 +1,222 @@
    35.4 +# Bochs Keymap file
    35.5 +# $Id: sdl-pc-de.map,v 1.2 2002/10/24 21:06:55 bdenney Exp $
    35.6 +# Target: PC(x86) keyboard, DE keymap, SDL gui on X11
    35.7 +# Author: Volker Ruppert
    35.8 +#
    35.9 +# The keymap file describes the layout of a keyboard, and how it translates
   35.10 +# into Bochs key codes.
   35.11 +#
   35.12 +# Format:
   35.13 +#  BX_Keysym                ASCII_equivalent      Host_key_name
   35.14 +#
   35.15 +# Or, for keys that require modifiers:
   35.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent      Host_key_name
   35.17 +#
   35.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   35.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   35.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   35.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   35.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   35.23 +# modifier).
   35.24 +#
   35.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   35.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   35.27 +# This format is designed to look like a char constant in C, but it's a very
   35.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   35.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   35.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   35.31 +# ugly.
   35.32 +#
   35.33 +# Host_key_name is the name of the key combination according to the gui library
   35.34 +# (X windows, SDL, etc).  Each GUI module must provide a function that converts
   35.35 +# these host key names into numbers.  A pointer to the conversion function is
   35.36 +# passed to loadKeymap(), and it is used when parsing the keymap file.  As the
   35.37 +# keymap file is parsed, the conversion function is called for each host key
   35.38 +# name, to convert it into a number.  Only the number is stored.  If the host
   35.39 +# key name is not found, the conversion function returns BX_KEYMAP_UNKNOWN, and
   35.40 +# the keymap code will panic, like this: 
   35.41 +#
   35.42 +#    [KMAP ] line 51: unknown host key name 'SDLK_PAREN_RIGHT' 
   35.43 +#
   35.44 +# If this happens, you must edit the keymap file, and either correct the host
   35.45 +# key name or comment out that line.
   35.46 +#
   35.47 +
   35.48 +BX_KEY_0                                      '0'        SDLK_0
   35.49 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        SDLK_EQUALS
   35.50 +BX_KEY_1                                      '1'        SDLK_1
   35.51 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        SDLK_EXCLAIM
   35.52 +BX_KEY_2                                      '2'        SDLK_2
   35.53 +BX_KEY_2+BX_KEY_ALT_R                         ''        SDLK_2
   35.54 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        SDLK_QUOTEDBL
   35.55 +BX_KEY_3                                      '3'        SDLK_3
   35.56 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        SDLK_3
   35.57 +BX_KEY_4                                      '4'        SDLK_4
   35.58 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        SDLK_DOLLAR
   35.59 +BX_KEY_4+BX_KEY_ALT_R                         ''        SDLK_4
   35.60 +BX_KEY_5                                      '5'        SDLK_5
   35.61 +BX_KEY_5+BX_KEY_ALT_R                         ''        SDLK_5
   35.62 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        SDLK_5
   35.63 +BX_KEY_6                                      '6'        SDLK_6
   35.64 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        SDLK_AMPERSAND
   35.65 +BX_KEY_7                                      '7'        SDLK_7
   35.66 +BX_KEY_7+BX_KEY_ALT_R                         '{'        SDLK_7
   35.67 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        SDLK_SLASH
   35.68 +BX_KEY_8                                      '8'        SDLK_8
   35.69 +BX_KEY_8+BX_KEY_ALT_R                         '['        SDLK_LEFTBRACKET
   35.70 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        SDLK_LEFTPAREN
   35.71 +BX_KEY_9                                      '9'        SDLK_9
   35.72 +BX_KEY_9+BX_KEY_ALT_R                         ']'        SDLK_RIGHTBRACKET
   35.73 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        SDLK_RIGHTPAREN
   35.74 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        SDLK_a
   35.75 +BX_KEY_A                                      'a'        SDLK_a
   35.76 +BX_KEY_A+BX_KEY_ALT_R                         ''        SDLK_a
   35.77 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        SDLK_b
   35.78 +BX_KEY_B                                      'b'        SDLK_b
   35.79 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        SDLK_c
   35.80 +BX_KEY_C                                      'c'        SDLK_c
   35.81 +BX_KEY_C+BX_KEY_ALT_R                         ''        SDLK_c
   35.82 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        SDLK_d
   35.83 +BX_KEY_D                                      'd'        SDLK_d
   35.84 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        SDLK_e
   35.85 +BX_KEY_E+BX_KEY_ALT_R                         none       SDLK_EURO
   35.86 +BX_KEY_E                                      'e'        SDLK_e
   35.87 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        SDLK_f
   35.88 +BX_KEY_F                                      'f'        SDLK_f
   35.89 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        SDLK_g
   35.90 +BX_KEY_G                                      'g'        SDLK_g
   35.91 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        SDLK_h
   35.92 +BX_KEY_H                                      'h'        SDLK_h
   35.93 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        SDLK_i
   35.94 +BX_KEY_I                                      'i'        SDLK_i
   35.95 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        SDLK_j
   35.96 +BX_KEY_J                                      'j'        SDLK_j
   35.97 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        SDLK_k
   35.98 +BX_KEY_K                                      'k'        SDLK_k
   35.99 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        SDLK_l
  35.100 +BX_KEY_L                                      'l'        SDLK_l
  35.101 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        SDLK_m
  35.102 +BX_KEY_M                                      'm'        SDLK_m
  35.103 +BX_KEY_M+BX_KEY_ALT_R                         ''        SDLK_m
  35.104 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        SDLK_n
  35.105 +BX_KEY_N                                      'n'        SDLK_n
  35.106 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        SDLK_o
  35.107 +BX_KEY_O                                      'o'        SDLK_o
  35.108 +BX_KEY_O+BX_KEY_ALT_R                         ''        SDLK_o
  35.109 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        SDLK_p
  35.110 +BX_KEY_P                                      'p'        SDLK_p
  35.111 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        SDLK_q
  35.112 +BX_KEY_Q+BX_KEY_ALT_R                         '@'        SDLK_AT
  35.113 +BX_KEY_Q                                      'q'        SDLK_q
  35.114 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        SDLK_r
  35.115 +BX_KEY_R+BX_KEY_ALT_R                         ''        SDLK_r
  35.116 +BX_KEY_R                                      'r'        SDLK_r
  35.117 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        SDLK_s
  35.118 +BX_KEY_S                                      's'        SDLK_s
  35.119 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        SDLK_t
  35.120 +BX_KEY_T                                      't'        SDLK_t
  35.121 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        SDLK_u
  35.122 +BX_KEY_U                                      'u'        SDLK_u
  35.123 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        SDLK_v
  35.124 +BX_KEY_V                                      'v'        SDLK_v
  35.125 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        SDLK_w
  35.126 +BX_KEY_W                                      'w'        SDLK_w
  35.127 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        SDLK_x
  35.128 +BX_KEY_X+BX_KEY_ALT_R                         ''        SDLK_x
  35.129 +BX_KEY_X                                      'x'        SDLK_x
  35.130 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Z'        SDLK_z
  35.131 +BX_KEY_Y                                      'z'        SDLK_z
  35.132 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Y'        SDLK_y
  35.133 +BX_KEY_Z+BX_KEY_ALT_R                         ''        SDLK_y
  35.134 +BX_KEY_Z                                      'y'        SDLK_y
  35.135 +BX_KEY_F1                                     none       SDLK_F1
  35.136 +BX_KEY_F2                                     none       SDLK_F2
  35.137 +BX_KEY_F3                                     none       SDLK_F3
  35.138 +BX_KEY_F4                                     none       SDLK_F4
  35.139 +BX_KEY_F5                                     none       SDLK_F5
  35.140 +BX_KEY_F6                                     none       SDLK_F6
  35.141 +BX_KEY_F7                                     none       SDLK_F7
  35.142 +BX_KEY_F8                                     none       SDLK_F8
  35.143 +BX_KEY_F9                                     none       SDLK_F9
  35.144 +BX_KEY_F10                                    none       SDLK_F10
  35.145 +BX_KEY_F11                                    none       SDLK_F11
  35.146 +BX_KEY_F12                                    none       SDLK_F12
  35.147 +BX_KEY_ALT_L                                  none       SDLK_LALT
  35.148 +BX_KEY_ALT_L                                  none       SDLK_LMETA
  35.149 +BX_KEY_ALT_R                                  none       SDLK_RALT
  35.150 +BX_KEY_ALT_R                                  none       SDLK_MODE
  35.151 +BX_KEY_BACKSLASH                              apostrophe SDLK_QUOTE
  35.152 +BX_KEY_BACKSLASH                              '#'        SDLK_HASH
  35.153 +BX_KEY_BACKSPACE                              none       SDLK_BACKSPACE
  35.154 +BX_KEY_CAPS_LOCK                              none       SDLK_CAPSLOCK
  35.155 +BX_KEY_COMMA                                  ','        SDLK_COMMA
  35.156 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        SDLK_SEMICOLON
  35.157 +BX_KEY_CTRL_L                                 none       SDLK_LCTRL
  35.158 +BX_KEY_CTRL_R                                 none       SDLK_RCTRL
  35.159 +BX_KEY_DELETE                                 none       SDLK_DELETE
  35.160 +BX_KEY_DOWN                                   none       SDLK_DOWN
  35.161 +BX_KEY_END                                    none       SDLK_END
  35.162 +BX_KEY_ENTER                                  return     SDLK_RETURN
  35.163 +BX_KEY_EQUALS                                 none       SDLK_WORLD_20
  35.164 +BX_KEY_EQUALS+BX_KEY_ALT_R                    ''        SDLK_WORLD_20
  35.165 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '`'        SDLK_WORLD_20
  35.166 +BX_KEY_ESC                                    none       SDLK_ESCAPE
  35.167 +BX_KEY_GRAVE                                  '^'        SDLK_CARET
  35.168 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        SDLK_CARET
  35.169 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        SDLK_CARET
  35.170 +BX_KEY_HOME                                   none       SDLK_HOME
  35.171 +BX_KEY_INSERT                                 none       SDLK_INSERT
  35.172 +BX_KEY_KP_5                                   none       SDLK_KP5
  35.173 +BX_KEY_KP_ADD                                 none       SDLK_KP_PLUS
  35.174 +BX_KEY_KP_DELETE                              none       SDLK_KP_PERIOD
  35.175 +BX_KEY_KP_DIVIDE                              none       SDLK_KP_DIVIDE
  35.176 +BX_KEY_KP_DOWN                                none       SDLK_KP2
  35.177 +BX_KEY_KP_END                                 none       SDLK_KP1
  35.178 +BX_KEY_KP_ENTER                               none       SDLK_KP_ENTER
  35.179 +BX_KEY_KP_HOME                                none       SDLK_KP7
  35.180 +BX_KEY_KP_INSERT                              none       SDLK_KP0
  35.181 +BX_KEY_KP_LEFT                                none       SDLK_KP4
  35.182 +BX_KEY_KP_MULTIPLY                            none       SDLK_KP_MULTIPLY
  35.183 +BX_KEY_KP_PAGE_DOWN                           none       SDLK_KP3
  35.184 +BX_KEY_KP_PAGE_UP                             none       SDLK_KP9
  35.185 +BX_KEY_KP_RIGHT                               none       SDLK_KP6
  35.186 +BX_KEY_KP_SUBTRACT                            none       SDLK_KP_MINUS
  35.187 +BX_KEY_KP_UP                                  none       SDLK_KP8
  35.188 +BX_KEY_LEFT                                   none       SDLK_LEFT
  35.189 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            '|'        SDLK_LESS
  35.190 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        SDLK_GREATER
  35.191 +BX_KEY_LEFT_BACKSLASH                         '<'        SDLK_LESS
  35.192 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        SDLK_WORLD_92
  35.193 +BX_KEY_LEFT_BRACKET                           ''        SDLK_WORLD_92
  35.194 +BX_KEY_MENU                                   none       SDLK_MENU
  35.195 +BX_KEY_MINUS+BX_KEY_ALT_L                     backslash  SDLK_BACKSLASH
  35.196 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        SDLK_QUESTION
  35.197 +BX_KEY_MINUS                                  ''        SDLK_WORLD_63
  35.198 +BX_KEY_NUM_LOCK                               none       SDLK_NUMLOCK
  35.199 +BX_KEY_PAGE_DOWN                              none       SDLK_PAGEDOWN
  35.200 +BX_KEY_PAGE_UP                                none       SDLK_PAGEUP
  35.201 +BX_KEY_PAUSE                                  none       SDLK_BREAK
  35.202 +BX_KEY_PAUSE                                  none       SDLK_PAUSE
  35.203 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        SDLK_COLON
  35.204 +BX_KEY_PERIOD                                 '.'        SDLK_PERIOD
  35.205 +BX_KEY_PERIOD+BX_KEY_ALT_L                    ''        SDLK_PERIOD
  35.206 +BX_KEY_PRINT                                  none       SDLK_PRINT
  35.207 +BX_KEY_PRINT                                  none       SDLK_SYSREQ
  35.208 +BX_KEY_RIGHT                                  none       SDLK_RIGHT
  35.209 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             '~'        SDLK_PLUS
  35.210 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        SDLK_PLUS
  35.211 +BX_KEY_RIGHT_BRACKET                          '+'        SDLK_PLUS
  35.212 +BX_KEY_SCRL_LOCK                              none       SDLK_SCROLLOCK
  35.213 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        SDLK_WORLD_86
  35.214 +BX_KEY_SEMICOLON                              ''        SDLK_WORLD_86
  35.215 +BX_KEY_SHIFT_L                                none       SDLK_LSHIFT
  35.216 +BX_KEY_SHIFT_R                                none       SDLK_RSHIFT
  35.217 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        SDLK_WORLD_68
  35.218 +BX_KEY_SINGLE_QUOTE                           ''        SDLK_WORLD_68
  35.219 +BX_KEY_SLASH                                  '-'        SDLK_MINUS
  35.220 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        SDLK_UNDERSCORE
  35.221 +BX_KEY_SPACE                                  space      SDLK_SPACE
  35.222 +BX_KEY_TAB                                    tab        SDLK_TAB
  35.223 +BX_KEY_UP                                     none       SDLK_UP
  35.224 +BX_KEY_WIN_L                                  none       SDLK_LSUPER
  35.225 +BX_KEY_WIN_R                                  none       SDLK_RSUPER
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/tools/ioemu/gui/keymaps/sdl-pc-us.map	Tue Jan 11 09:28:54 2005 +0000
    36.3 @@ -0,0 +1,211 @@
    36.4 +# Bochs Keymap file
    36.5 +# $Id: sdl-pc-us.map,v 1.2 2002/10/24 21:06:55 bdenney Exp $
    36.6 +# Target: PC(x86) keyboard, US keymap, SDL gui
    36.7 +# Author: Bryce Denney
    36.8 +#
    36.9 +# The keymap file describes the layout of a keyboard, and how it translates
   36.10 +# into Bochs key codes.
   36.11 +#
   36.12 +# Format:
   36.13 +#  BX_Keysym                ASCII_equivalent      Host_key_name
   36.14 +#
   36.15 +# Or, for keys that require modifiers:
   36.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent      Host_key_name
   36.17 +#
   36.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   36.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   36.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   36.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   36.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   36.23 +# modifier).
   36.24 +#
   36.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   36.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   36.27 +# This format is designed to look like a char constant in C, but it's a very
   36.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   36.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   36.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   36.31 +# ugly.
   36.32 +#
   36.33 +# Host_key_name is the name of the key combination according to the gui library
   36.34 +# (X windows, SDL, etc).  Each GUI module must provide a function that converts
   36.35 +# these host key names into numbers.  A pointer to the conversion function is
   36.36 +# passed to loadKeymap(), and it is used when parsing the keymap file.  As the
   36.37 +# keymap file is parsed, the conversion function is called for each host key
   36.38 +# name, to convert it into a number.  Only the number is stored.  If the host
   36.39 +# key name is not found, the conversion function returns BX_KEYMAP_UNKNOWN, and
   36.40 +# the keymap code will panic, like this: 
   36.41 +#
   36.42 +#    [KMAP ] line 51: unknown host key name 'SDLK_PAREN_RIGHT' 
   36.43 +#
   36.44 +# If this happens, you must edit the keymap file, and either correct the host
   36.45 +# key name or comment out that line.
   36.46 +#
   36.47 +
   36.48 +BX_KEY_0                                      '0'        SDLK_0
   36.49 +BX_KEY_0+BX_KEY_SHIFT_L                       ')'        SDLK_RIGHTPAREN
   36.50 +BX_KEY_1                                      '1'        SDLK_1
   36.51 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        SDLK_EXCLAIM
   36.52 +BX_KEY_2                                      '2'        SDLK_2
   36.53 +BX_KEY_2+BX_KEY_SHIFT_L                       '@'        SDLK_AT
   36.54 +BX_KEY_3                                      '3'        SDLK_3
   36.55 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        SDLK_HASH
   36.56 +BX_KEY_4                                      '4'        SDLK_4
   36.57 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        SDLK_DOLLAR
   36.58 +BX_KEY_5                                      '5'        SDLK_5
   36.59 +#BX_KEY_5+BX_KEY_SHIFT_L                       '%'        SDLK_PERCENT
   36.60 +BX_KEY_6                                      '6'        SDLK_6
   36.61 +BX_KEY_6+BX_KEY_SHIFT_L                       '^'        SDLK_CARET
   36.62 +BX_KEY_7                                      '7'        SDLK_7
   36.63 +BX_KEY_7+BX_KEY_SHIFT_L                       '&'        SDLK_AMPERSAND
   36.64 +BX_KEY_8                                      '8'        SDLK_8
   36.65 +BX_KEY_8+BX_KEY_SHIFT_L                       '*'        SDLK_ASTERISK
   36.66 +BX_KEY_9                                      '9'        SDLK_9
   36.67 +BX_KEY_9+BX_KEY_SHIFT_L                       '('        SDLK_LEFTPAREN
   36.68 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        SDLK_a
   36.69 +BX_KEY_A                                      'a'        SDLK_a
   36.70 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        SDLK_b
   36.71 +BX_KEY_B                                      'b'        SDLK_b
   36.72 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        SDLK_c
   36.73 +BX_KEY_C                                      'c'        SDLK_c
   36.74 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        SDLK_d
   36.75 +BX_KEY_D                                      'd'        SDLK_d
   36.76 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        SDLK_e
   36.77 +BX_KEY_E                                      'e'        SDLK_e
   36.78 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        SDLK_f
   36.79 +BX_KEY_F                                      'f'        SDLK_f
   36.80 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        SDLK_g
   36.81 +BX_KEY_G                                      'g'        SDLK_g
   36.82 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        SDLK_h
   36.83 +BX_KEY_H                                      'h'        SDLK_h
   36.84 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        SDLK_i
   36.85 +BX_KEY_I                                      'i'        SDLK_i
   36.86 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        SDLK_j
   36.87 +BX_KEY_J                                      'j'        SDLK_j
   36.88 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        SDLK_k
   36.89 +BX_KEY_K                                      'k'        SDLK_k
   36.90 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        SDLK_l
   36.91 +BX_KEY_L                                      'l'        SDLK_l
   36.92 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        SDLK_m
   36.93 +BX_KEY_M                                      'm'        SDLK_m
   36.94 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        SDLK_n
   36.95 +BX_KEY_N                                      'n'        SDLK_n
   36.96 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        SDLK_o
   36.97 +BX_KEY_O                                      'o'        SDLK_o
   36.98 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        SDLK_p
   36.99 +BX_KEY_P                                      'p'        SDLK_p
  36.100 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        SDLK_q
  36.101 +BX_KEY_Q                                      'q'        SDLK_q
  36.102 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        SDLK_r
  36.103 +BX_KEY_R                                      'r'        SDLK_r
  36.104 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        SDLK_s
  36.105 +BX_KEY_S                                      's'        SDLK_s
  36.106 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        SDLK_t
  36.107 +BX_KEY_T                                      't'        SDLK_t
  36.108 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        SDLK_u
  36.109 +BX_KEY_U                                      'u'        SDLK_u
  36.110 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        SDLK_v
  36.111 +BX_KEY_V                                      'v'        SDLK_v
  36.112 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        SDLK_w
  36.113 +BX_KEY_W                                      'w'        SDLK_w
  36.114 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        SDLK_x
  36.115 +BX_KEY_X                                      'x'        SDLK_x
  36.116 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        SDLK_y
  36.117 +BX_KEY_Y                                      'y'        SDLK_y
  36.118 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        SDLK_z
  36.119 +BX_KEY_Z                                      'z'        SDLK_z
  36.120 +BX_KEY_F1                                     none       SDLK_F1
  36.121 +BX_KEY_F2                                     none       SDLK_F2
  36.122 +BX_KEY_F3                                     none       SDLK_F3
  36.123 +BX_KEY_F4                                     none       SDLK_F4
  36.124 +BX_KEY_F5                                     none       SDLK_F5
  36.125 +BX_KEY_F6                                     none       SDLK_F6
  36.126 +BX_KEY_F7                                     none       SDLK_F7
  36.127 +BX_KEY_F8                                     none       SDLK_F8
  36.128 +BX_KEY_F9                                     none       SDLK_F9
  36.129 +BX_KEY_F10                                    none       SDLK_F10
  36.130 +BX_KEY_F11                                    none       SDLK_F11
  36.131 +BX_KEY_F12                                    none       SDLK_F12
  36.132 +BX_KEY_ALT_L                                  none       SDLK_LALT
  36.133 +BX_KEY_ALT_L                                  none       SDLK_LMETA
  36.134 +BX_KEY_ALT_R                                  none       SDLK_MODE
  36.135 +#BX_KEY_ALT_R                                  none       SDLK_Multi_key
  36.136 +BX_KEY_BACKSLASH                              backslash  SDLK_BACKSLASH
  36.137 +#BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '|'        SDLK_bar
  36.138 +BX_KEY_BACKSPACE                              none       SDLK_BACKSPACE
  36.139 +BX_KEY_CAPS_LOCK                              none       SDLK_CAPSLOCK
  36.140 +BX_KEY_COMMA                                  ','        SDLK_COMMA
  36.141 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        SDLK_LESS
  36.142 +BX_KEY_CTRL_L                                 none       SDLK_LCTRL
  36.143 +BX_KEY_CTRL_R                                 none       SDLK_RCTRL
  36.144 +BX_KEY_DELETE                                 none       SDLK_DELETE
  36.145 +BX_KEY_DOWN                                   none       SDLK_DOWN
  36.146 +BX_KEY_END                                    none       SDLK_END
  36.147 +BX_KEY_ENTER                                  return     SDLK_RETURN
  36.148 +BX_KEY_EQUALS                                 '='        SDLK_EQUALS
  36.149 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        SDLK_PLUS
  36.150 +BX_KEY_ESC                                    none       SDLK_ESCAPE
  36.151 +#BX_KEY_GRAVE+BX_KEY_SHIFT_L                   '~'        SDLK_asciitilde
  36.152 +BX_KEY_GRAVE                                  '`'        SDLK_BACKQUOTE
  36.153 +BX_KEY_HOME                                   none       SDLK_HOME
  36.154 +BX_KEY_INSERT                                 none       SDLK_INSERT
  36.155 +BX_KEY_KP_5                                   none       SDLK_KP5
  36.156 +#BX_KEY_KP_5                                   none       SDLK_KP_BEGIN
  36.157 +BX_KEY_KP_ADD                                 none       SDLK_KP_PLUS
  36.158 +BX_KEY_KP_DELETE                              none       SDLK_KP_PERIOD
  36.159 +#BX_KEY_KP_DELETE                              none       SDLK_KP_DELETE
  36.160 +BX_KEY_KP_DIVIDE                              none       SDLK_KP_DIVIDE
  36.161 +BX_KEY_KP_DOWN                                none       SDLK_KP2
  36.162 +#BX_KEY_KP_DOWN                                none       SDLK_KP_DOWN
  36.163 +BX_KEY_KP_END                                 none       SDLK_KP1
  36.164 +#BX_KEY_KP_END                                 none       SDLK_KP_END
  36.165 +BX_KEY_KP_ENTER                               none       SDLK_KP_ENTER
  36.166 +BX_KEY_KP_HOME                                none       SDLK_KP7
  36.167 +#BX_KEY_KP_HOME                                none       SDLK_KP_HOME
  36.168 +BX_KEY_KP_INSERT                              none       SDLK_KP0
  36.169 +#BX_KEY_KP_INSERT                              none       SDLK_KP_INSERT
  36.170 +BX_KEY_KP_LEFT                                none       SDLK_KP4
  36.171 +#BX_KEY_KP_LEFT                                none       SDLK_KP_LEFT
  36.172 +BX_KEY_KP_MULTIPLY                            none       SDLK_KP_MULTIPLY
  36.173 +BX_KEY_KP_PAGE_DOWN                           none       SDLK_KP3
  36.174 +#BX_KEY_KP_PAGE_DOWN                           none       SDLK_KP_PAGE_DOWN
  36.175 +BX_KEY_KP_PAGE_UP                             none       SDLK_KP9
  36.176 +#BX_KEY_KP_PAGE_UP                             none       SDLK_KP_PAGE_UP
  36.177 +BX_KEY_KP_RIGHT                               none       SDLK_KP6
  36.178 +#BX_KEY_KP_RIGHT                               none       SDLK_KP_Right
  36.179 +BX_KEY_KP_SUBTRACT                            none       SDLK_KP_MINUS
  36.180 +BX_KEY_KP_UP                                  none       SDLK_KP8
  36.181 +#BX_KEY_KP_UP                                  none       SDLK_KP_Up
  36.182 +BX_KEY_LEFT                                   none       SDLK_LEFT
  36.183 +#BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '{'        SDLK_BRACELEFT
  36.184 +BX_KEY_LEFT_BRACKET                           '['        SDLK_LEFTBRACKET
  36.185 +BX_KEY_MENU                                   none       SDLK_MENU
  36.186 +BX_KEY_MINUS                                  '-'        SDLK_MINUS
  36.187 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '_'        SDLK_UNDERSCORE
  36.188 +BX_KEY_NUM_LOCK                               none       SDLK_NUMLOCK
  36.189 +BX_KEY_PAGE_DOWN                              none       SDLK_PAGEDOWN
  36.190 +BX_KEY_PAGE_UP                                none       SDLK_PAGEUP
  36.191 +BX_KEY_PAUSE                                  none       SDLK_BREAK
  36.192 +BX_KEY_PAUSE                                  none       SDLK_PAUSE
  36.193 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        SDLK_GREATER
  36.194 +BX_KEY_PERIOD                                 '.'        SDLK_PERIOD
  36.195 +BX_KEY_PRINT                                  none       SDLK_PRINT
  36.196 +BX_KEY_PRINT                                  none       SDLK_SYSREQ
  36.197 +BX_KEY_RIGHT                                  none       SDLK_RIGHT
  36.198 +#BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '}'        SDLK_BRACERIGHT
  36.199 +BX_KEY_RIGHT_BRACKET                          ']'        SDLK_RIGHTBRACKET
  36.200 +BX_KEY_SCRL_LOCK                              none       SDLK_SCROLLOCK
  36.201 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ':'        SDLK_COLON
  36.202 +BX_KEY_SEMICOLON                              ';'        SDLK_SEMICOLON
  36.203 +BX_KEY_SHIFT_L                                none       SDLK_LSHIFT
  36.204 +BX_KEY_SHIFT_R                                none       SDLK_RSHIFT
  36.205 +BX_KEY_SINGLE_QUOTE                           apostrophe SDLK_QUOTE
  36.206 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '"'        SDLK_QUOTEDBL
  36.207 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        SDLK_QUESTION
  36.208 +BX_KEY_SLASH                                  '/'        SDLK_SLASH
  36.209 +BX_KEY_SPACE                                  space      SDLK_SPACE
  36.210 +#BX_KEY_TAB                                    none       SDLK_ISO_LEFT_TAB
  36.211 +BX_KEY_TAB                                    tab        SDLK_TAB
  36.212 +BX_KEY_UP                                     none       SDLK_UP
  36.213 +BX_KEY_WIN_L                                  none       SDLK_LSUPER
  36.214 +BX_KEY_WIN_R                                  none       SDLK_LSUPER
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-be.map	Tue Jan 11 09:28:54 2005 +0000
    37.3 @@ -0,0 +1,220 @@
    37.4 +# Bochs Keymap file
    37.5 +# $Id: x11-pc-be.map,v 1.2 2003/07/29 13:31:11 bdenney Exp $
    37.6 +# Target: PC(x86) keyboard, BE keymap
    37.7 +# Author: Wouter Verhelst,
    37.8 +# based on FR keymap by Christophe Bothamy, Bryce Denney
    37.9 +#
   37.10 +# The keymap file describes the layout of a keyboard, and how it translates
   37.11 +# into Bochs key codes.
   37.12 +#
   37.13 +# Format:
   37.14 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   37.15 +#
   37.16 +# Or, for keys that require modifiers:
   37.17 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   37.18 +#
   37.19 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   37.20 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   37.21 +# could be any key.  Presently a maximum of one modifier is supported, but this
   37.22 +# could be changed in keymap.h (structure def has only one slot for modifier),
   37.23 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   37.24 +# modifier).
   37.25 +#
   37.26 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   37.27 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   37.28 +# This format is designed to look like a char constant in C, but it's a very
   37.29 +# simple parser.  There's no concept of backslash being an escape char.  The
   37.30 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   37.31 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   37.32 +# ugly.
   37.33 +#
   37.34 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   37.35 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   37.36 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   37.37 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   37.38 +# numerical codes.  If this lookup fails, you will get a panic and you need
   37.39 +# to edit the keymap file.
   37.40 +
   37.41 +BX_KEY_0+BX_KEY_SHIFT_L                       '0'        XK_0
   37.42 +BX_KEY_0                                      ''        XK_agrave
   37.43 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
   37.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '1'        XK_1
   37.45 +BX_KEY_1                                      '&'        XK_ampersand
   37.46 +BX_KEY_1+BX_KEY_ALT_R                         '|'        XK_bar
   37.47 +BX_KEY_2+BX_KEY_SHIFT_L                       '2'        XK_2
   37.48 +BX_KEY_2+BX_KEY_ALT_R                         '@'        XK_at
   37.49 +BX_KEY_2                                      ''        XK_eacute
   37.50 +BX_KEY_3+BX_KEY_SHIFT_L                       '3'        XK_3
   37.51 +BX_KEY_3+BX_KEY_ALT_R                         '#'        XK_numbersign
   37.52 +BX_KEY_3                                      '"'        XK_quotedbl
   37.53 +BX_KEY_4+BX_KEY_SHIFT_L                       '4'        XK_4
   37.54 +BX_KEY_4                                      apostrophe XK_apostrophe
   37.55 +BX_KEY_5+BX_KEY_SHIFT_L                       '5'        XK_5
   37.56 +BX_KEY_5                                      '('        XK_parenleft
   37.57 +BX_KEY_6+BX_KEY_SHIFT_L                       '6'        XK_6
   37.58 +BX_KEY_6+BX_KEY_ALT_R                         '^'        XK_asciicircum
   37.59 +BX_KEY_6                                      ''        XK_section
   37.60 +BX_KEY_7+BX_KEY_SHIFT_L                       '7'        XK_7
   37.61 +BX_KEY_7                                      ''        XK_egrave
   37.62 +BX_KEY_8+BX_KEY_SHIFT_L                       '8'        XK_8
   37.63 +BX_KEY_8                                      '!'        XK_exclam
   37.64 +BX_KEY_9+BX_KEY_SHIFT_L                       '9'        XK_9
   37.65 +BX_KEY_9+BX_KEY_ALT_R                         '{'        XK_braceleft
   37.66 +BX_KEY_9                                      ''        XK_ccedilla
   37.67 +BX_KEY_A+BX_KEY_SHIFT_L                       'Q'        XK_Q
   37.68 +BX_KEY_A                                      'q'        XK_q
   37.69 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   37.70 +BX_KEY_B                                      'b'        XK_b
   37.71 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   37.72 +BX_KEY_C                                      'c'        XK_c
   37.73 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   37.74 +BX_KEY_D                                      'd'        XK_d
   37.75 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   37.76 +BX_KEY_E                                      'e'        XK_e
   37.77 +BX_KEY_E+BX_KEY_ALT_R                         none       XK_EuroSign
   37.78 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   37.79 +BX_KEY_F                                      'f'        XK_f
   37.80 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   37.81 +BX_KEY_G                                      'g'        XK_g
   37.82 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   37.83 +BX_KEY_H                                      'h'        XK_h
   37.84 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   37.85 +BX_KEY_I                                      'i'        XK_i
   37.86 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   37.87 +BX_KEY_J                                      'j'        XK_j
   37.88 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   37.89 +BX_KEY_K                                      'k'        XK_k
   37.90 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   37.91 +BX_KEY_L                                      'l'        XK_l
   37.92 +BX_KEY_M+BX_KEY_SHIFT_L                       '?'        XK_question
   37.93 +BX_KEY_M                                      ','        XK_comma
   37.94 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   37.95 +BX_KEY_N                                      'n'        XK_n
   37.96 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   37.97 +BX_KEY_O                                      'o'        XK_o
   37.98 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   37.99 +BX_KEY_P                                      'p'        XK_p
  37.100 +BX_KEY_Q+BX_KEY_SHIFT_L                       'A'        XK_A
  37.101 +BX_KEY_Q                                      'a'        XK_a
  37.102 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  37.103 +BX_KEY_R                                      'r'        XK_r
  37.104 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  37.105 +BX_KEY_S                                      's'        XK_s
  37.106 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  37.107 +BX_KEY_T                                      't'        XK_t
  37.108 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  37.109 +BX_KEY_U                                      'u'        XK_u
  37.110 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  37.111 +BX_KEY_V                                      'v'        XK_v
  37.112 +BX_KEY_W+BX_KEY_SHIFT_L                       'Z'        XK_Z
  37.113 +BX_KEY_W                                      'z'        XK_z
  37.114 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  37.115 +BX_KEY_X                                      'x'        XK_x
  37.116 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  37.117 +BX_KEY_Y                                      'y'        XK_y
  37.118 +BX_KEY_Z+BX_KEY_SHIFT_L                       'W'        XK_W
  37.119 +BX_KEY_Z                                      'w'        XK_w
  37.120 +BX_KEY_F1                                     none       XK_F1
  37.121 +BX_KEY_F2                                     none       XK_F2
  37.122 +BX_KEY_F3                                     none       XK_F3
  37.123 +BX_KEY_F4                                     none       XK_F4
  37.124 +BX_KEY_F5                                     none       XK_F5
  37.125 +BX_KEY_F6                                     none       XK_F6
  37.126 +BX_KEY_F7                                     none       XK_F7
  37.127 +BX_KEY_F8                                     none       XK_F8
  37.128 +BX_KEY_F9                                     none       XK_F9
  37.129 +BX_KEY_F10                                    none       XK_F10
  37.130 +BX_KEY_F11                                    none       XK_F11
  37.131 +BX_KEY_F12                                    none       XK_F12
  37.132 +BX_KEY_ALT_L                                  none       XK_Alt_L
  37.133 +BX_KEY_ALT_L                                  none       XK_Meta_L
  37.134 +BX_KEY_ALT_R                                  none       XK_Alt_R
  37.135 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  37.136 +BX_KEY_ALT_R                                  none       XK_Multi_key
  37.137 +BX_KEY_BACKSLASH                              ''        XK_mu
  37.138 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               ''        XK_sterling
  37.139 +BX_KEY_BACKSLASH+BX_KEY_ALT_R                 '`'        XK_dead_grave
  37.140 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  37.141 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  37.142 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '.'        XK_period
  37.143 +BX_KEY_COMMA                                  ';'        XK_semicolon
  37.144 +BX_KEY_CTRL_L                                 none       XK_Control_L
  37.145 +BX_KEY_CTRL_R                                 none       XK_Control_R
  37.146 +BX_KEY_DELETE                                 none       XK_Delete
  37.147 +BX_KEY_DOWN                                   none       XK_Down
  37.148 +BX_KEY_END                                    none       XK_End
  37.149 +BX_KEY_ENTER                                  return     XK_Return
  37.150 +BX_KEY_EQUALS                                 '-'        XK_minus
  37.151 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '_'        XK_underscore
  37.152 +BX_KEY_ESC                                    none       XK_Escape
  37.153 +BX_KEY_GRAVE                                  ''        XK_twosuperior
  37.154 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_threesuperior
  37.155 +BX_KEY_HOME                                   none       XK_Home
  37.156 +BX_KEY_INSERT                                 none       XK_Insert
  37.157 +BX_KEY_KP_5                                   none       XK_KP_5
  37.158 +BX_KEY_KP_5                                   none       XK_KP_Begin
  37.159 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  37.160 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  37.161 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  37.162 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  37.163 +BX_KEY_KP_DOWN                                none       XK_KP_2
  37.164 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  37.165 +BX_KEY_KP_END                                 none       XK_KP_1
  37.166 +BX_KEY_KP_END                                 none       XK_KP_End
  37.167 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  37.168 +BX_KEY_KP_HOME                                none       XK_KP_7
  37.169 +BX_KEY_KP_HOME                                none       XK_KP_Home
  37.170 +BX_KEY_KP_INSERT                              none       XK_KP_0
  37.171 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  37.172 +BX_KEY_KP_LEFT                                none       XK_KP_4
  37.173 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  37.174 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  37.175 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  37.176 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  37.177 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  37.178 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  37.179 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  37.180 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  37.181 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  37.182 +BX_KEY_KP_UP                                  none       XK_KP_8
  37.183 +BX_KEY_KP_UP                                  none       XK_KP_Up
  37.184 +BX_KEY_LEFT                                   none       XK_Left
  37.185 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  37.186 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  37.187 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            backslash  XK_backslash
  37.188 +BX_KEY_LEFT_BRACKET                           none       XK_dead_circumflex
  37.189 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            none       XK_dead_diaeresis
  37.190 +BX_KEY_LEFT_BRACKET+BX_KEY_ALT_R              '['        XK_bracketleft
  37.191 +BX_KEY_MENU                                   none       XK_Menu
  37.192 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   ''        XK_degree
  37.193 +BX_KEY_MINUS                                  ')'        XK_parenright
  37.194 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  37.195 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  37.196 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  37.197 +BX_KEY_PAUSE                                  none       XK_Break
  37.198 +BX_KEY_PAUSE                                  none       XK_Pause
  37.199 +BX_KEY_PERIOD                                 ':'        XK_colon
  37.200 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '/'        XK_slash
  37.201 +BX_KEY_PRINT                                  none       XK_Print
  37.202 +BX_KEY_PRINT                                  none       XK_Sys_Req
  37.203 +BX_KEY_RIGHT                                  none       XK_Right
  37.204 +BX_KEY_RIGHT_BRACKET                          '$'        XK_dollar
  37.205 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        XK_asterisk
  37.206 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             ']'        XK_bracketright
  37.207 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  37.208 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               'M'        XK_M
  37.209 +BX_KEY_SEMICOLON                              'm'        XK_m
  37.210 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  37.211 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  37.212 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '%'        XK_percent
  37.213 +BX_KEY_SINGLE_QUOTE+BX_KEY_ALT_R              none       XK_dead_acute
  37.214 +BX_KEY_SINGLE_QUOTE                           ''        XK_ugrave
  37.215 +BX_KEY_SLASH                                  '='        XK_equal
  37.216 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '+'        XK_plus
  37.217 +BX_KEY_SLASH+BX_KEY_ALT_R                     none       XK_dead_tilde
  37.218 +BX_KEY_SPACE                                  space      XK_space
  37.219 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  37.220 +BX_KEY_TAB                                    tab        XK_Tab
  37.221 +BX_KEY_UP                                     none       XK_Up
  37.222 +BX_KEY_WIN_L                                  none       XK_Super_L
  37.223 +BX_KEY_WIN_R                                  none       XK_Super_R
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-da.map	Tue Jan 11 09:28:54 2005 +0000
    38.3 @@ -0,0 +1,247 @@
    38.4 +# Bochs Keymap file
    38.5 +# $Id: x11-pc-da.map,v 0.9 2002/09/02
    38.6 +# Target: PC(x86) keyboard, DA keymap
    38.7 +# Author: Andreas Ott
    38.8 +#
    38.9 +# The keymap file describes the layout of a keyboard, and how it translates
   38.10 +# into Bochs key codes.
   38.11 +#
   38.12 +# Format:
   38.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   38.14 +#
   38.15 +# Or, for keys that require modifiers:
   38.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   38.17 +#
   38.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   38.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   38.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   38.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   38.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   38.23 +# modifier).
   38.24 +#
   38.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   38.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   38.27 +# This format is designed to look like a char constant in C, but it's a very
   38.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   38.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   38.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   38.31 +# ugly.
   38.32 +#
   38.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   38.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   38.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   38.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   38.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   38.38 +# to edit the keymap file.
   38.39 +
   38.40 +BX_KEY_0                                      '0'        XK_0
   38.41 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
   38.42 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
   38.43 +BX_KEY_1                                      '1'        XK_1
   38.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   38.45 +BX_KEY_1+BX_KEY_ALT_R                         ''        XK_exclamdown
   38.46 +BX_KEY_2                                      '2'        XK_2
   38.47 +BX_KEY_2+BX_KEY_SHIFT_L                       '='        XK_quotedbl
   38.48 +BX_KEY_2+BX_KEY_ALT_R                         '@'        XK_at # XK_twosuperior
   38.49 +BX_KEY_3                                      '3'        XK_3
   38.50 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        XK_numbersign
   38.51 +BX_KEY_3+BX_KEY_ALT_R                         ''        XK_sterling
   38.52 +BX_KEY_4                                      '4'        XK_4
   38.53 +BX_KEY_4+BX_KEY_SHIFT_L                       ''        XK_currency
   38.54 +BX_KEY_4+BX_KEY_ALT_R                         '$'        XK_dollar
   38.55 +BX_KEY_5                                      '5'        XK_5
   38.56 +BX_KEY_5+BX_KEY_ALT_R                         ''        XK_onehalf
   38.57 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   38.58 +BX_KEY_6                                      '6'        XK_6
   38.59 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   38.60 +BX_KEY_6+BX_KEY_ALT_R                         ''        XK_yen
   38.61 +BX_KEY_7                                      '7'        XK_7
   38.62 +BX_KEY_7+BX_KEY_ALT_R                         '{'        XK_braceleft
   38.63 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   38.64 +BX_KEY_8                                      '8'        XK_8
   38.65 +BX_KEY_8+BX_KEY_ALT_R                         '['        XK_bracketleft
   38.66 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   38.67 +BX_KEY_9                                      '9'        XK_9
   38.68 +BX_KEY_9+BX_KEY_ALT_R                         ']'        XK_bracketright
   38.69 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
   38.70 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   38.71 +BX_KEY_A                                      'a'        XK_a
   38.72 +BX_KEY_A+BX_KEY_ALT_R                         ''        XK_ordfeminine
   38.73 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   38.74 +BX_KEY_B                                      'b'        XK_b
   38.75 +BX_KEY_B+BX_KEY_ALT_R                         none       XK_rightdoublequotemark
   38.76 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   38.77 +BX_KEY_C                                      'c'        XK_c
   38.78 +BX_KEY_C+BX_KEY_ALT_R                         ''        XK_copyright
   38.79 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   38.80 +BX_KEY_D                                      'd'        XK_d
   38.81 +BX_KEY_D+BX_KEY_ALT_R                         ''        XK_eth
   38.82 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   38.83 +BX_KEY_E+BX_KEY_ALT_R                         '?'        XK_EuroSign
   38.84 +BX_KEY_E                                      'e'        XK_e
   38.85 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   38.86 +BX_KEY_F+BX_KEY_ALT_R                         '?'        XK_dstroke
   38.87 +BX_KEY_F                                      'f'        XK_f
   38.88 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   38.89 +BX_KEY_G+BX_KEY_ALT_R                         '?'        XK_eng
   38.90 +BX_KEY_G                                      'g'        XK_g
   38.91 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   38.92 +BX_KEY_H                                      'h'        XK_h
   38.93 +BX_KEY_H+BX_KEY_ALT_R                         '?'        XK_hstroke
   38.94 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   38.95 +BX_KEY_I                                      'i'        XK_i
   38.96 +BX_KEY_I+BX_KEY_ALT_R                         none       XK_rightarrow
   38.97 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   38.98 +BX_KEY_J                                      'j'        XK_j
   38.99 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
  38.100 +BX_KEY_K                                      'k'        XK_k
  38.101 +BX_KEY_K+BX_KEY_ALT_R                         none       XK_kra
  38.102 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
  38.103 +BX_KEY_L                                      'l'        XK_l
  38.104 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
  38.105 +BX_KEY_M                                      'm'        XK_m
  38.106 +BX_KEY_M+BX_KEY_ALT_R                         ''        XK_mu
  38.107 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
  38.108 +BX_KEY_N                                      'n'        XK_n
  38.109 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
  38.110 +BX_KEY_O                                      'o'        XK_o
  38.111 +BX_KEY_O+BX_KEY_ALT_R                         none       XK_oslash
  38.112 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  38.113 +BX_KEY_P                                      'p'        XK_p
  38.114 +BX_KEY_P+BX_KEY_ALT_R                         ''        XK_thorn
  38.115 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
  38.116 +BX_KEY_Q+BX_KEY_ALT_R                         '@'        XK_at
  38.117 +BX_KEY_Q                                      'q'        XK_q
  38.118 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  38.119 +BX_KEY_R+BX_KEY_ALT_R                         ''        XK_registered
  38.120 +BX_KEY_R                                      'r'        XK_r
  38.121 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  38.122 +BX_KEY_S                                      's'        XK_s
  38.123 +BX_KEY_S+BX_KEY_ALT_R                         ''        XK_ssharp
  38.124 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  38.125 +BX_KEY_T                                      't'        XK_t
  38.126 +BX_KEY_T+BX_KEY_ALT_R                         ''        XK_thorn
  38.127 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  38.128 +BX_KEY_U+BX_KEY_ALT_R                         none       XK_downarrow
  38.129 +BX_KEY_U                                      'u'        XK_u
  38.130 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  38.131 +BX_KEY_V+BX_KEY_ALT_R                         none       XK_leftdoublequotemark
  38.132 +BX_KEY_V                                      'v'        XK_v
  38.133 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  38.134 +BX_KEY_W+BX_KEY_ALT_R                         '?'        XK_lstroke
  38.135 +BX_KEY_W                                      'w'        XK_w
  38.136 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  38.137 +BX_KEY_X+BX_KEY_ALT_R                         ''        XK_guillemotright
  38.138 +BX_KEY_X                                      'x'        XK_x
  38.139 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  38.140 +BX_KEY_Y+BX_KEY_ALT_R                         none       XK_leftarrow
  38.141 +BX_KEY_Y                                      'y'        XK_y
  38.142 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  38.143 +BX_KEY_Z+BX_KEY_ALT_R                         ''        XK_guillemotleft
  38.144 +BX_KEY_Z                                      'z'        XK_z
  38.145 +BX_KEY_F1                                     none       XK_F1
  38.146 +BX_KEY_F2                                     none       XK_F2
  38.147 +BX_KEY_F3                                     none       XK_F3
  38.148 +BX_KEY_F4                                     none       XK_F4
  38.149 +BX_KEY_F5                                     none       XK_F5
  38.150 +BX_KEY_F6                                     none       XK_F6
  38.151 +BX_KEY_F7                                     none       XK_F7
  38.152 +BX_KEY_F8                                     none       XK_F8
  38.153 +BX_KEY_F9                                     none       XK_F9
  38.154 +BX_KEY_F10                                    none       XK_F10
  38.155 +BX_KEY_F11                                    none       XK_F11
  38.156 +BX_KEY_F12                                    none       XK_F12
  38.157 +BX_KEY_ALT_L                                  none       XK_Alt_L
  38.158 +BX_KEY_ALT_L                                  none       XK_Meta_L
  38.159 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  38.160 +BX_KEY_ALT_R                                  none       XK_Multi_key
  38.161 +BX_KEY_BACKSLASH                              apostrophe XK_apostrophe
  38.162 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '*'        XK_asterisk
  38.163 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  38.164 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  38.165 +BX_KEY_COMMA                                  ','        XK_comma
  38.166 +BX_KEY_COMMA+BX_KEY_ALT_R                     none       XK_horizconnector
  38.167 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  38.168 +BX_KEY_CTRL_L                                 none       XK_Control_L
  38.169 +BX_KEY_CTRL_R                                 none       XK_Control_R
  38.170 +BX_KEY_DELETE                                 none       XK_Delete
  38.171 +BX_KEY_DOWN                                   none       XK_Down
  38.172 +BX_KEY_END                                    none       XK_End
  38.173 +BX_KEY_ENTER                                  return     XK_Return
  38.174 +BX_KEY_EQUALS                                 none       XK_acute
  38.175 +BX_KEY_EQUALS+BX_KEY_ALT_R                    '|'        XK_bar
  38.176 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '`'        XK_grave
  38.177 +BX_KEY_ESC                                    none       XK_Escape
  38.178 +BX_KEY_GRAVE                                  ''        XK_onehalf
  38.179 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_section
  38.180 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        XK_threequarters
  38.181 +BX_KEY_HOME                                   none       XK_Home
  38.182 +BX_KEY_INSERT                                 none       XK_Insert
  38.183 +BX_KEY_KP_5                                   none       XK_KP_5
  38.184 +BX_KEY_KP_5                                   none       XK_KP_Begin
  38.185 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  38.186 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  38.187 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  38.188 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  38.189 +BX_KEY_KP_DOWN                                none       XK_KP_2
  38.190 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  38.191 +BX_KEY_KP_END                                 none       XK_KP_1
  38.192 +BX_KEY_KP_END                                 none       XK_KP_End
  38.193 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  38.194 +BX_KEY_KP_HOME                                none       XK_KP_7
  38.195 +BX_KEY_KP_HOME                                none       XK_KP_Home
  38.196 +BX_KEY_KP_INSERT                              none       XK_KP_0
  38.197 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  38.198 +BX_KEY_KP_LEFT                                none       XK_KP_4
  38.199 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  38.200 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  38.201 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  38.202 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  38.203 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  38.204 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  38.205 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  38.206 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  38.207 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  38.208 +BX_KEY_KP_UP                                  none       XK_KP_8
  38.209 +BX_KEY_KP_UP                                  none       XK_KP_Up
  38.210 +BX_KEY_LEFT                                   none       XK_Left
  38.211 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            backslash  XK_backslash
  38.212 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  38.213 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  38.214 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_Aring
  38.215 +BX_KEY_LEFT_BRACKET+BX_KEY_ALT_L              none       XK_diaeresis
  38.216 +BX_KEY_LEFT_BRACKET                           ''        XK_aring
  38.217 +BX_KEY_MENU                                   none       XK_Menu
  38.218 +BX_KEY_MINUS+BX_KEY_ALT_R                     ''        XK_plusminus
  38.219 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  38.220 +BX_KEY_MINUS                                  '+'        XK_plus
  38.221 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  38.222 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  38.223 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  38.224 +BX_KEY_PAUSE                                  none       XK_Break
  38.225 +BX_KEY_PAUSE                                  none       XK_Pause
  38.226 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  38.227 +BX_KEY_PERIOD                                 '.'        XK_period
  38.228 +BX_KEY_PERIOD+BX_KEY_ALT_R                    ''        XK_periodcentered
  38.229 +BX_KEY_PRINT                                  none       XK_Print
  38.230 +BX_KEY_PRINT                                  none       XK_Sys_Req
  38.231 +BX_KEY_RIGHT                                  none       XK_Right
  38.232 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             '~'        XK_asciitilde
  38.233 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '^'        XK_asciicircum
  38.234 +BX_KEY_RIGHT_BRACKET                          '"'        XK_diaeresis
  38.235 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  38.236 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_AE
  38.237 +BX_KEY_SEMICOLON                              ''        XK_ae
  38.238 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  38.239 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  38.240 +BX_KEY_SINGLE_QUOTE                           ''        XK_oslash
  38.241 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_Ooblique
  38.242 +BX_KEY_SLASH+BX_KEY_ALT_R                     ''        XK_hyphen
  38.243 +BX_KEY_SLASH                                  '-'        XK_minus
  38.244 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        XK_underscore
  38.245 +BX_KEY_SPACE                                  space      XK_space
  38.246 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  38.247 +BX_KEY_TAB                                    tab        XK_Tab
  38.248 +BX_KEY_UP                                     none       XK_Up
  38.249 +BX_KEY_WIN_L                                  none       XK_Super_L
  38.250 +BX_KEY_WIN_R                                  none       XK_Super_R
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-de.map	Tue Jan 11 09:28:54 2005 +0000
    39.3 @@ -0,0 +1,247 @@
    39.4 +# Bochs Keymap file
    39.5 +# $Id: x11-pc-de.map,v 1.7 2002/10/24 21:06:56 bdenney Exp $
    39.6 +# Target: PC(x86) keyboard, DE keymap
    39.7 +# Author: Volker Ruppert
    39.8 +#
    39.9 +# The keymap file describes the layout of a keyboard, and how it translates
   39.10 +# into Bochs key codes.
   39.11 +#
   39.12 +# Format:
   39.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   39.14 +#
   39.15 +# Or, for keys that require modifiers:
   39.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   39.17 +#
   39.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   39.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   39.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   39.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   39.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   39.23 +# modifier).
   39.24 +#
   39.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   39.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   39.27 +# This format is designed to look like a char constant in C, but it's a very
   39.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   39.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   39.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   39.31 +# ugly.
   39.32 +#
   39.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   39.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   39.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   39.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   39.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   39.38 +# to edit the keymap file.
   39.39 +
   39.40 +BX_KEY_0                                      '0'        XK_0
   39.41 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
   39.42 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
   39.43 +BX_KEY_1                                      '1'        XK_1
   39.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   39.45 +BX_KEY_1+BX_KEY_ALT_R                         ''        XK_onesuperior
   39.46 +BX_KEY_2                                      '2'        XK_2
   39.47 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   39.48 +BX_KEY_2+BX_KEY_ALT_R                         ''        XK_twosuperior
   39.49 +BX_KEY_3                                      '3'        XK_3
   39.50 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        XK_section
   39.51 +BX_KEY_3+BX_KEY_ALT_R                         ''        XK_threesuperior
   39.52 +BX_KEY_4                                      '4'        XK_4
   39.53 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   39.54 +BX_KEY_4+BX_KEY_ALT_R                         ''        XK_onequarter
   39.55 +BX_KEY_5                                      '5'        XK_5
   39.56 +BX_KEY_5+BX_KEY_ALT_R                         ''        XK_onehalf
   39.57 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   39.58 +BX_KEY_6                                      '6'        XK_6
   39.59 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   39.60 +BX_KEY_6+BX_KEY_ALT_R                         ''        XK_threequarters
   39.61 +BX_KEY_7                                      '7'        XK_7
   39.62 +BX_KEY_7+BX_KEY_ALT_R                         '{'        XK_braceleft
   39.63 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   39.64 +BX_KEY_8                                      '8'        XK_8
   39.65 +BX_KEY_8+BX_KEY_ALT_R                         '['        XK_bracketleft
   39.66 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   39.67 +BX_KEY_9                                      '9'        XK_9
   39.68 +BX_KEY_9+BX_KEY_ALT_R                         ']'        XK_bracketright
   39.69 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
   39.70 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   39.71 +BX_KEY_A                                      'a'        XK_a
   39.72 +BX_KEY_A+BX_KEY_ALT_R                         ''        XK_ae
   39.73 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   39.74 +BX_KEY_B                                      'b'        XK_b
   39.75 +BX_KEY_B+BX_KEY_ALT_R                         none       XK_rightdoublequotemark
   39.76 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   39.77 +BX_KEY_C                                      'c'        XK_c
   39.78 +BX_KEY_C+BX_KEY_ALT_R                         ''        XK_cent
   39.79 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   39.80 +BX_KEY_D                                      'd'        XK_d
   39.81 +BX_KEY_D+BX_KEY_ALT_R                         ''        XK_eth
   39.82 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   39.83 +BX_KEY_E+BX_KEY_ALT_R                         none       XK_EuroSign
   39.84 +BX_KEY_E                                      'e'        XK_e
   39.85 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   39.86 +BX_KEY_F+BX_KEY_ALT_R                         none       XK_dstroke
   39.87 +BX_KEY_F                                      'f'        XK_f
   39.88 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   39.89 +BX_KEY_G+BX_KEY_ALT_R                         none       XK_eng
   39.90 +BX_KEY_G                                      'g'        XK_g
   39.91 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   39.92 +BX_KEY_H                                      'h'        XK_h
   39.93 +BX_KEY_H+BX_KEY_ALT_R                         none       XK_hstroke
   39.94 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   39.95 +BX_KEY_I                                      'i'        XK_i
   39.96 +BX_KEY_I+BX_KEY_ALT_R                         none       XK_rightarrow
   39.97 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   39.98 +BX_KEY_J                                      'j'        XK_j
   39.99 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
  39.100 +BX_KEY_K                                      'k'        XK_k
  39.101 +BX_KEY_K+BX_KEY_ALT_R                         none       XK_kra
  39.102 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
  39.103 +BX_KEY_L                                      'l'        XK_l
  39.104 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
  39.105 +BX_KEY_M                                      'm'        XK_m
  39.106 +BX_KEY_M+BX_KEY_ALT_R                         ''        XK_mu
  39.107 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
  39.108 +BX_KEY_N                                      'n'        XK_n
  39.109 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
  39.110 +BX_KEY_O                                      'o'        XK_o
  39.111 +BX_KEY_O+BX_KEY_ALT_R                         ''        XK_oslash
  39.112 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  39.113 +BX_KEY_P                                      'p'        XK_p
  39.114 +BX_KEY_P+BX_KEY_ALT_R                         ''        XK_thorn
  39.115 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
  39.116 +BX_KEY_Q+BX_KEY_ALT_R                         '@'        XK_at
  39.117 +BX_KEY_Q                                      'q'        XK_q
  39.118 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  39.119 +BX_KEY_R+BX_KEY_ALT_R                         ''        XK_paragraph
  39.120 +BX_KEY_R                                      'r'        XK_r
  39.121 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  39.122 +BX_KEY_S                                      's'        XK_s
  39.123 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  39.124 +BX_KEY_T                                      't'        XK_t
  39.125 +BX_KEY_T+BX_KEY_ALT_R                         none       XK_tslash
  39.126 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  39.127 +BX_KEY_U+BX_KEY_ALT_R                         none       XK_downarrow
  39.128 +BX_KEY_U                                      'u'        XK_u
  39.129 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  39.130 +BX_KEY_V+BX_KEY_ALT_R                         none       XK_leftdoublequotemark
  39.131 +BX_KEY_V                                      'v'        XK_v
  39.132 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  39.133 +BX_KEY_W+BX_KEY_ALT_R                         none       XK_lstroke
  39.134 +BX_KEY_W                                      'w'        XK_w
  39.135 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  39.136 +BX_KEY_X+BX_KEY_ALT_R                         ''        XK_guillemotright
  39.137 +BX_KEY_X                                      'x'        XK_x
  39.138 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Z'        XK_Z
  39.139 +BX_KEY_Y+BX_KEY_ALT_R                         none       XK_leftarrow
  39.140 +BX_KEY_Y                                      'z'        XK_z
  39.141 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Y'        XK_Y
  39.142 +BX_KEY_Z+BX_KEY_ALT_R                         ''        XK_guillemotleft
  39.143 +BX_KEY_Z                                      'y'        XK_y
  39.144 +BX_KEY_F1                                     none       XK_F1
  39.145 +BX_KEY_F2                                     none       XK_F2
  39.146 +BX_KEY_F3                                     none       XK_F3
  39.147 +BX_KEY_F4                                     none       XK_F4
  39.148 +BX_KEY_F5                                     none       XK_F5
  39.149 +BX_KEY_F6                                     none       XK_F6
  39.150 +BX_KEY_F7                                     none       XK_F7
  39.151 +BX_KEY_F8                                     none       XK_F8
  39.152 +BX_KEY_F9                                     none       XK_F9
  39.153 +BX_KEY_F10                                    none       XK_F10
  39.154 +BX_KEY_F11                                    none       XK_F11
  39.155 +BX_KEY_F12                                    none       XK_F12
  39.156 +BX_KEY_ALT_L                                  none       XK_Alt_L
  39.157 +BX_KEY_ALT_L                                  none       XK_Meta_L
  39.158 +BX_KEY_ALT_R                                  none       XK_Alt_R
  39.159 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  39.160 +BX_KEY_ALT_R                                  none       XK_Multi_key
  39.161 +BX_KEY_BACKSLASH                              apostrophe XK_apostrophe
  39.162 +BX_KEY_BACKSLASH                              '#'        XK_numbersign
  39.163 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  39.164 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  39.165 +BX_KEY_COMMA                                  ','        XK_comma
  39.166 +BX_KEY_COMMA+BX_KEY_ALT_R                     none       XK_horizconnector
  39.167 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  39.168 +BX_KEY_CTRL_L                                 none       XK_Control_L
  39.169 +BX_KEY_CTRL_R                                 none       XK_Control_R
  39.170 +BX_KEY_DELETE                                 none       XK_Delete
  39.171 +BX_KEY_DOWN                                   none       XK_Down
  39.172 +BX_KEY_END                                    none       XK_End
  39.173 +BX_KEY_ENTER                                  return     XK_Return
  39.174 +BX_KEY_EQUALS                                 none       XK_acute
  39.175 +BX_KEY_EQUALS+BX_KEY_ALT_R                    ''        XK_cedilla
  39.176 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '`'        XK_grave
  39.177 +BX_KEY_ESC                                    none       XK_Escape
  39.178 +BX_KEY_GRAVE                                  '^'        XK_asciicircum
  39.179 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_degree
  39.180 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        XK_notsign
  39.181 +BX_KEY_HOME                                   none       XK_Home
  39.182 +BX_KEY_INSERT                                 none       XK_Insert
  39.183 +BX_KEY_KP_5                                   none       XK_KP_5
  39.184 +BX_KEY_KP_5                                   none       XK_KP_Begin
  39.185 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  39.186 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  39.187 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  39.188 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  39.189 +BX_KEY_KP_DOWN                                none       XK_KP_2
  39.190 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  39.191 +BX_KEY_KP_END                                 none       XK_KP_1
  39.192 +BX_KEY_KP_END                                 none       XK_KP_End
  39.193 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  39.194 +BX_KEY_KP_HOME                                none       XK_KP_7
  39.195 +BX_KEY_KP_HOME                                none       XK_KP_Home
  39.196 +BX_KEY_KP_INSERT                              none       XK_KP_0
  39.197 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  39.198 +BX_KEY_KP_LEFT                                none       XK_KP_4
  39.199 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  39.200 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  39.201 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  39.202 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  39.203 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  39.204 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  39.205 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  39.206 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  39.207 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  39.208 +BX_KEY_KP_UP                                  none       XK_KP_8
  39.209 +BX_KEY_KP_UP                                  none       XK_KP_Up
  39.210 +BX_KEY_LEFT                                   none       XK_Left
  39.211 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            '|'        XK_bar
  39.212 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  39.213 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  39.214 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_Udiaeresis
  39.215 +BX_KEY_LEFT_BRACKET+BX_KEY_ALT_L              none       XK_diaeresis
  39.216 +BX_KEY_LEFT_BRACKET                           ''        XK_udiaeresis
  39.217 +BX_KEY_MENU                                   none       XK_Menu
  39.218 +BX_KEY_MINUS+BX_KEY_ALT_L                     backslash  XK_backslash
  39.219 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  39.220 +BX_KEY_MINUS                                  ''        XK_ssharp
  39.221 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  39.222 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  39.223 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  39.224 +BX_KEY_PAUSE                                  none       XK_Break
  39.225 +BX_KEY_PAUSE                                  none       XK_Pause
  39.226 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  39.227 +BX_KEY_PERIOD                                 '.'        XK_period
  39.228 +BX_KEY_PERIOD+BX_KEY_ALT_L                    ''        XK_periodcentered
  39.229 +BX_KEY_PRINT                                  none       XK_Print
  39.230 +BX_KEY_PRINT                                  none       XK_Sys_Req
  39.231 +BX_KEY_RIGHT                                  none       XK_Right
  39.232 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             '~'        XK_asciitilde
  39.233 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        XK_asterisk
  39.234 +BX_KEY_RIGHT_BRACKET                          '+'        XK_plus
  39.235 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  39.236 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_Odiaeresis
  39.237 +BX_KEY_SEMICOLON                              ''        XK_odiaeresis
  39.238 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  39.239 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  39.240 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_Adiaeresis
  39.241 +BX_KEY_SINGLE_QUOTE                           ''        XK_adiaeresis
  39.242 +BX_KEY_SLASH                                  none       XK_dead_belowdot
  39.243 +BX_KEY_SLASH                                  '-'        XK_minus
  39.244 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        XK_underscore
  39.245 +BX_KEY_SPACE                                  space      XK_space
  39.246 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  39.247 +BX_KEY_TAB                                    tab        XK_Tab
  39.248 +BX_KEY_UP                                     none       XK_Up
  39.249 +BX_KEY_WIN_L                                  none       XK_Super_L
  39.250 +BX_KEY_WIN_R                                  none       XK_Super_R
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-es.map	Tue Jan 11 09:28:54 2005 +0000
    40.3 @@ -0,0 +1,217 @@
    40.4 +# Bochs Keymap file
    40.5 +# $Id: x11-pc-es.map,v 1.4 2002/09/25 08:00:24 bdenney Exp $
    40.6 +# Target: PC(x86) keyboard, ES keymap
    40.7 +# Author: Vicente Hernando Ara 
    40.8 +#
    40.9 +# The keymap file describes the layout of a keyboard, and how it translates
   40.10 +# into Bochs key codes.
   40.11 +#
   40.12 +# Format:
   40.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   40.14 +#
   40.15 +# Or, for keys that require modifiers:
   40.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   40.17 +#
   40.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   40.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   40.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   40.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   40.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   40.23 +# modifier).
   40.24 +#
   40.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   40.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   40.27 +# This format is designed to look like a char constant in C, but it's a very
   40.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   40.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   40.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   40.31 +# ugly.
   40.32 +#
   40.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   40.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   40.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   40.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   40.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   40.38 +# to edit the keymap file.
   40.39 +#
   40.40 +BX_KEY_0                                      none       XK_0
   40.41 +BX_KEY_0                                      none       XK_equal
   40.42 +BX_KEY_1                                      none       XK_1
   40.43 +BX_KEY_1                                      none       XK_bar
   40.44 +BX_KEY_1                                      none       XK_exclam
   40.45 +BX_KEY_2                                      none       XK_2
   40.46 +BX_KEY_2                                      none       XK_at
   40.47 +BX_KEY_2                                      none       XK_quotedbl
   40.48 +BX_KEY_3                                      none       XK_3
   40.49 +BX_KEY_3                                      none       XK_numbersign
   40.50 +BX_KEY_3                                      none       XK_periodcentered
   40.51 +BX_KEY_4                                      none       XK_4
   40.52 +BX_KEY_4                                      none       XK_dollar
   40.53 +BX_KEY_5                                      none       XK_5
   40.54 +BX_KEY_5                                      none       XK_percent
   40.55 +BX_KEY_6                                      none       XK_6
   40.56 +BX_KEY_6                                      none       XK_ampersand
   40.57 +BX_KEY_7                                      none       XK_7
   40.58 +BX_KEY_7                                      none       XK_slash
   40.59 +BX_KEY_8                                      none       XK_8
   40.60 +BX_KEY_8                                      none       XK_parenleft
   40.61 +BX_KEY_9                                      none       XK_9
   40.62 +BX_KEY_9                                      none       XK_parenright
   40.63 +BX_KEY_A                                      none       XK_A
   40.64 +BX_KEY_A                                      none       XK_a
   40.65 +BX_KEY_B                                      none       XK_B
   40.66 +BX_KEY_B                                      none       XK_b
   40.67 +BX_KEY_C                                      none       XK_C
   40.68 +BX_KEY_C                                      none       XK_c
   40.69 +BX_KEY_D                                      none       XK_D
   40.70 +BX_KEY_D                                      none       XK_d
   40.71 +BX_KEY_E                                      none       XK_E
   40.72 +BX_KEY_E                                      none       XK_EuroSign
   40.73 +BX_KEY_E                                      none       XK_e
   40.74 +BX_KEY_F                                      none       XK_F
   40.75 +BX_KEY_F                                      none       XK_f
   40.76 +BX_KEY_G                                      none       XK_G
   40.77 +BX_KEY_G                                      none       XK_g
   40.78 +BX_KEY_H                                      none       XK_H
   40.79 +BX_KEY_H                                      none       XK_h
   40.80 +BX_KEY_I                                      none       XK_I
   40.81 +BX_KEY_I                                      none       XK_i
   40.82 +BX_KEY_J                                      none       XK_J
   40.83 +BX_KEY_J                                      none       XK_j
   40.84 +BX_KEY_K                                      none       XK_K
   40.85 +BX_KEY_K                                      none       XK_k
   40.86 +BX_KEY_L                                      none       XK_L
   40.87 +BX_KEY_L                                      none       XK_l
   40.88 +BX_KEY_M                                      none       XK_M
   40.89 +BX_KEY_M                                      none       XK_m
   40.90 +BX_KEY_N                                      none       XK_N
   40.91 +BX_KEY_N                                      none       XK_n
   40.92 +BX_KEY_O                                      none       XK_O
   40.93 +BX_KEY_O                                      none       XK_o
   40.94 +BX_KEY_P                                      none       XK_P
   40.95 +BX_KEY_P                                      none       XK_p
   40.96 +BX_KEY_Q                                      none       XK_Q
   40.97 +BX_KEY_Q                                      none       XK_q
   40.98 +BX_KEY_R                                      none       XK_R
   40.99 +BX_KEY_R                                      none       XK_r
  40.100 +BX_KEY_S                                      none       XK_S
  40.101 +BX_KEY_S                                      none       XK_s
  40.102 +BX_KEY_T                                      none       XK_T
  40.103 +BX_KEY_T                                      none       XK_t
  40.104 +BX_KEY_U                                      none       XK_U
  40.105 +BX_KEY_U                                      none       XK_u
  40.106 +BX_KEY_V                                      none       XK_V
  40.107 +BX_KEY_V                                      none       XK_v
  40.108 +BX_KEY_W                                      none       XK_W
  40.109 +BX_KEY_W                                      none       XK_w
  40.110 +BX_KEY_X                                      none       XK_X
  40.111 +BX_KEY_X                                      none       XK_x
  40.112 +BX_KEY_Y                                      none       XK_Y
  40.113 +BX_KEY_Y                                      none       XK_y
  40.114 +BX_KEY_Z                                      none       XK_Z
  40.115 +BX_KEY_Z                                      none       XK_z
  40.116 +BX_KEY_F1                                     none       XK_F1
  40.117 +BX_KEY_F2                                     none       XK_F2
  40.118 +BX_KEY_F3                                     none       XK_F3
  40.119 +BX_KEY_F4                                     none       XK_F4
  40.120 +BX_KEY_F5                                     none       XK_F5
  40.121 +BX_KEY_F6                                     none       XK_F6
  40.122 +BX_KEY_F7                                     none       XK_F7
  40.123 +BX_KEY_F8                                     none       XK_F8
  40.124 +BX_KEY_F9                                     none       XK_F9
  40.125 +BX_KEY_F10                                    none       XK_F10
  40.126 +BX_KEY_F11                                    none       XK_F11
  40.127 +BX_KEY_F12                                    none       XK_F12
  40.128 +BX_KEY_ALT_L                                  none       XK_Alt_L
  40.129 +BX_KEY_ALT_L                                  none       XK_Meta_L
  40.130 +BX_KEY_ALT_R                                  none       XK_Alt_R
  40.131 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  40.132 +BX_KEY_ALT_R                                  none       XK_Multi_key
  40.133 +BX_KEY_BACKSLASH                              none       XK_Ccedilla
  40.134 +BX_KEY_BACKSLASH                              none       XK_ccedilla
  40.135 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  40.136 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  40.137 +BX_KEY_COMMA                                  none       XK_comma
  40.138 +BX_KEY_COMMA                                  none       XK_semicolon
  40.139 +BX_KEY_CTRL_L                                 none       XK_Control_L
  40.140 +BX_KEY_CTRL_R                                 none       XK_Control_R
  40.141 +BX_KEY_DELETE                                 none       XK_Delete
  40.142 +BX_KEY_DOWN                                   none       XK_Down
  40.143 +BX_KEY_END                                    none       XK_End
  40.144 +BX_KEY_ENTER                                  none       XK_Return
  40.145 +BX_KEY_EQUALS                                 none       XK_exclamdown
  40.146 +BX_KEY_EQUALS                                 none       XK_questiondown
  40.147 +BX_KEY_ESC                                    none       XK_Escape
  40.148 +BX_KEY_GRAVE                                  none       XK_asciitilde
  40.149 +BX_KEY_GRAVE                                  none       XK_backslash
  40.150 +BX_KEY_GRAVE                                  none       XK_grave
  40.151 +BX_KEY_GRAVE                                  none       XK_masculine
  40.152 +BX_KEY_GRAVE                                  none       XK_ordfeminine
  40.153 +BX_KEY_HOME                                   none       XK_Home
  40.154 +BX_KEY_INSERT                                 none       XK_Insert
  40.155 +BX_KEY_KP_5                                   none       XK_KP_5
  40.156 +BX_KEY_KP_5                                   none       XK_KP_Begin
  40.157 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  40.158 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  40.159 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  40.160 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  40.161 +BX_KEY_KP_DOWN                                none       XK_KP_2
  40.162 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  40.163 +BX_KEY_KP_END                                 none       XK_KP_1
  40.164 +BX_KEY_KP_END                                 none       XK_KP_End
  40.165 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  40.166 +BX_KEY_KP_HOME                                none       XK_KP_7
  40.167 +BX_KEY_KP_HOME                                none       XK_KP_Home
  40.168 +BX_KEY_KP_INSERT                              none       XK_KP_0
  40.169 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  40.170 +BX_KEY_KP_LEFT                                none       XK_KP_4
  40.171 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  40.172 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  40.173 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  40.174 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  40.175 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  40.176 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  40.177 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  40.178 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  40.179 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  40.180 +BX_KEY_KP_UP                                  none       XK_KP_8
  40.181 +BX_KEY_KP_UP                                  none       XK_KP_Up
  40.182 +BX_KEY_LEFT                                   none       XK_Left
  40.183 +BX_KEY_LEFT_BACKSLASH                         none       XK_greater
  40.184 +BX_KEY_LEFT_BACKSLASH                         none       XK_less
  40.185 +BX_KEY_LEFT_BRACKET                           none       XK_braceleft
  40.186 +BX_KEY_LEFT_BRACKET                           none       XK_bracketleft
  40.187 +BX_KEY_LEFT_BRACKET                           none       XK_dead_circumflex
  40.188 +BX_KEY_LEFT_BRACKET                           none       XK_dead_grave
  40.189 +BX_KEY_MENU                                   none       XK_Menu
  40.190 +BX_KEY_MINUS                                  none       XK_apostrophe
  40.191 +BX_KEY_MINUS                                  none       XK_question
  40.192 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  40.193 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  40.194 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  40.195 +BX_KEY_PAUSE                                  none       XK_Break
  40.196 +BX_KEY_PAUSE                                  none       XK_Pause
  40.197 +BX_KEY_PERIOD                                 none       XK_colon
  40.198 +BX_KEY_PERIOD                                 none       XK_period
  40.199 +BX_KEY_PRINT                                  none       XK_Print
  40.200 +BX_KEY_PRINT                                  none       XK_Sys_Req
  40.201 +BX_KEY_RIGHT                                  none       XK_Right
  40.202 +BX_KEY_RIGHT_BRACKET                          none       XK_asterisk
  40.203 +BX_KEY_RIGHT_BRACKET                          none       XK_braceright
  40.204 +BX_KEY_RIGHT_BRACKET                          none       XK_bracketright
  40.205 +BX_KEY_RIGHT_BRACKET                          none       XK_plus
  40.206 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  40.207 +BX_KEY_SEMICOLON                              none       XK_Ntilde
  40.208 +BX_KEY_SEMICOLON                              none       XK_ntilde
  40.209 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  40.210 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  40.211 +BX_KEY_SINGLE_QUOTE                           none       XK_dead_acute
  40.212 +BX_KEY_SINGLE_QUOTE                           none       XK_dead_diaeresis
  40.213 +BX_KEY_SLASH                                  none       XK_minus
  40.214 +BX_KEY_SLASH                                  none       XK_underscore
  40.215 +BX_KEY_SPACE                                  none       XK_space
  40.216 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  40.217 +BX_KEY_TAB                                    none       XK_Tab
  40.218 +BX_KEY_UP                                     none       XK_Up
  40.219 +BX_KEY_WIN_L                                  none       XK_Super_L
  40.220 +BX_KEY_WIN_R                                  none       XK_Super_R
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-fr.map	Tue Jan 11 09:28:54 2005 +0000
    41.3 @@ -0,0 +1,218 @@
    41.4 +# Bochs Keymap file
    41.5 +# $Id: x11-pc-fr.map,v 1.5 2002/09/25 08:00:24 bdenney Exp $
    41.6 +# Target: PC(x86) keyboard, FR keymap
    41.7 +# Author: Christophe Bothamy, Bryce Denney
    41.8 +#
    41.9 +# The keymap file describes the layout of a keyboard, and how it translates
   41.10 +# into Bochs key codes.
   41.11 +#
   41.12 +# Format:
   41.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   41.14 +#
   41.15 +# Or, for keys that require modifiers:
   41.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   41.17 +#
   41.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   41.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   41.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   41.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   41.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   41.23 +# modifier).
   41.24 +#
   41.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   41.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   41.27 +# This format is designed to look like a char constant in C, but it's a very
   41.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   41.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   41.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   41.31 +# ugly.
   41.32 +#
   41.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   41.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   41.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   41.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   41.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   41.38 +# to edit the keymap file.
   41.39 +
   41.40 +BX_KEY_0+BX_KEY_SHIFT_L                       '0'        XK_0
   41.41 +BX_KEY_0                                      ''        XK_agrave
   41.42 +BX_KEY_0+BX_KEY_ALT_R                         '@'        XK_at
   41.43 +BX_KEY_1+BX_KEY_SHIFT_L                       '1'        XK_1
   41.44 +BX_KEY_1                                      '&'        XK_ampersand
   41.45 +BX_KEY_2+BX_KEY_SHIFT_L                       '2'        XK_2
   41.46 +BX_KEY_2+BX_KEY_ALT_R                         '~'        XK_asciitilde
   41.47 +BX_KEY_2                                      ''        XK_eacute
   41.48 +BX_KEY_3+BX_KEY_SHIFT_L                       '3'        XK_3
   41.49 +BX_KEY_3+BX_KEY_ALT_R                         '#'        XK_numbersign
   41.50 +BX_KEY_3                                      '"'        XK_quotedbl
   41.51 +BX_KEY_4+BX_KEY_SHIFT_L                       '4'        XK_4
   41.52 +BX_KEY_4                                      apostrophe XK_apostrophe
   41.53 +BX_KEY_4+BX_KEY_ALT_R                         '{'        XK_braceleft
   41.54 +BX_KEY_5+BX_KEY_SHIFT_L                       '5'        XK_5
   41.55 +BX_KEY_5+BX_KEY_ALT_R                         '['        XK_bracketleft
   41.56 +BX_KEY_5                                      '('        XK_parenleft
   41.57 +BX_KEY_6+BX_KEY_SHIFT_L                       '6'        XK_6
   41.58 +BX_KEY_6+BX_KEY_ALT_R                         '|'        XK_bar
   41.59 +BX_KEY_6                                      '-'        XK_minus
   41.60 +BX_KEY_7+BX_KEY_SHIFT_L                       '7'        XK_7
   41.61 +BX_KEY_7                                      ''        XK_egrave
   41.62 +BX_KEY_7+BX_KEY_ALT_R                         '`'        XK_grave
   41.63 +BX_KEY_8+BX_KEY_SHIFT_L                       '8'        XK_8
   41.64 +BX_KEY_8+BX_KEY_ALT_R                         backslash  XK_backslash
   41.65 +BX_KEY_8                                      '_'        XK_underscore
   41.66 +BX_KEY_9+BX_KEY_SHIFT_L                       '9'        XK_9
   41.67 +BX_KEY_9+BX_KEY_ALT_R                         '^'        XK_asciicircum
   41.68 +BX_KEY_9                                      ''       XK_ccedilla
   41.69 +BX_KEY_A+BX_KEY_SHIFT_L                       'Q'        XK_Q
   41.70 +BX_KEY_A                                      'q'        XK_q
   41.71 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   41.72 +BX_KEY_B                                      'b'        XK_b
   41.73 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   41.74 +BX_KEY_C                                      'c'        XK_c
   41.75 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   41.76 +BX_KEY_D                                      'd'        XK_d
   41.77 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   41.78 +BX_KEY_E                                      'e'        XK_e
   41.79 +BX_KEY_E+BX_KEY_ALT_R                         none       XK_EuroSign
   41.80 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   41.81 +BX_KEY_F                                      'f'        XK_f
   41.82 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   41.83 +BX_KEY_G                                      'g'        XK_g
   41.84 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   41.85 +BX_KEY_H                                      'h'        XK_h
   41.86 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   41.87 +BX_KEY_I                                      'i'        XK_i
   41.88 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   41.89 +BX_KEY_J                                      'j'        XK_j
   41.90 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   41.91 +BX_KEY_K                                      'k'        XK_k
   41.92 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   41.93 +BX_KEY_L                                      'l'        XK_l
   41.94 +BX_KEY_M+BX_KEY_SHIFT_L                       '?'        XK_question
   41.95 +BX_KEY_M                                      ','        XK_comma
   41.96 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   41.97 +BX_KEY_N                                      'n'        XK_n
   41.98 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   41.99 +BX_KEY_O                                      'o'        XK_o
  41.100 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  41.101 +BX_KEY_P                                      'p'        XK_p
  41.102 +BX_KEY_Q+BX_KEY_SHIFT_L                       'A'        XK_A
  41.103 +BX_KEY_Q                                      'a'        XK_a
  41.104 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  41.105 +BX_KEY_R                                      'r'        XK_r
  41.106 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  41.107 +BX_KEY_S                                      's'        XK_s
  41.108 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  41.109 +BX_KEY_T                                      't'        XK_t
  41.110 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  41.111 +BX_KEY_U                                      'u'        XK_u
  41.112 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  41.113 +BX_KEY_V                                      'v'        XK_v
  41.114 +BX_KEY_W+BX_KEY_SHIFT_L                       'Z'        XK_Z
  41.115 +BX_KEY_W                                      'z'        XK_z
  41.116 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  41.117 +BX_KEY_X                                      'x'        XK_x
  41.118 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  41.119 +BX_KEY_Y                                      'y'        XK_y
  41.120 +BX_KEY_Z+BX_KEY_SHIFT_L                       'W'        XK_W
  41.121 +BX_KEY_Z                                      'w'        XK_w
  41.122 +BX_KEY_F1                                     none       XK_F1
  41.123 +BX_KEY_F2                                     none       XK_F2
  41.124 +BX_KEY_F3                                     none       XK_F3
  41.125 +BX_KEY_F4                                     none       XK_F4
  41.126 +BX_KEY_F5                                     none       XK_F5
  41.127 +BX_KEY_F6                                     none       XK_F6
  41.128 +BX_KEY_F7                                     none       XK_F7
  41.129 +BX_KEY_F8                                     none       XK_F8
  41.130 +BX_KEY_F9                                     none       XK_F9
  41.131 +BX_KEY_F10                                    none       XK_F10
  41.132 +BX_KEY_F11                                    none       XK_F11
  41.133 +BX_KEY_F12                                    none       XK_F12
  41.134 +BX_KEY_ALT_L                                  none       XK_Alt_L
  41.135 +BX_KEY_ALT_L                                  none       XK_Meta_L
  41.136 +BX_KEY_ALT_R                                  none       XK_Alt_R
  41.137 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  41.138 +BX_KEY_ALT_R                                  none       XK_Multi_key
  41.139 +BX_KEY_BACKSLASH                              '*'        XK_asterisk
  41.140 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               ''        XK_mu
  41.141 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  41.142 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  41.143 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '.'        XK_period
  41.144 +BX_KEY_COMMA                                  ';'        XK_semicolon
  41.145 +BX_KEY_CTRL_L                                 none       XK_Control_L
  41.146 +BX_KEY_CTRL_R                                 none       XK_Control_R
  41.147 +BX_KEY_DELETE                                 none       XK_Delete
  41.148 +BX_KEY_DOWN                                   none       XK_Down
  41.149 +BX_KEY_END                                    none       XK_End
  41.150 +BX_KEY_ENTER                                  return     XK_Return
  41.151 +BX_KEY_EQUALS+BX_KEY_ALT_R                    '}'        XK_braceright
  41.152 +BX_KEY_EQUALS                                 '='        XK_equal
  41.153 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        XK_plus
  41.154 +BX_KEY_ESC                                    none       XK_Escape
  41.155 +BX_KEY_GRAVE                                  ''        XK_twosuperior
  41.156 +BX_KEY_HOME                                   none       XK_Home
  41.157 +BX_KEY_INSERT                                 none       XK_Insert
  41.158 +BX_KEY_KP_5                                   none       XK_KP_5
  41.159 +BX_KEY_KP_5                                   none       XK_KP_Begin
  41.160 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  41.161 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  41.162 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  41.163 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  41.164 +BX_KEY_KP_DOWN                                none       XK_KP_2
  41.165 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  41.166 +BX_KEY_KP_END                                 none       XK_KP_1
  41.167 +BX_KEY_KP_END                                 none       XK_KP_End
  41.168 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  41.169 +BX_KEY_KP_HOME                                none       XK_KP_7
  41.170 +BX_KEY_KP_HOME                                none       XK_KP_Home
  41.171 +BX_KEY_KP_INSERT                              none       XK_KP_0
  41.172 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  41.173 +BX_KEY_KP_LEFT                                none       XK_KP_4
  41.174 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  41.175 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  41.176 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  41.177 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  41.178 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  41.179 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  41.180 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  41.181 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  41.182 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  41.183 +BX_KEY_KP_UP                                  none       XK_KP_8
  41.184 +BX_KEY_KP_UP                                  none       XK_KP_Up
  41.185 +BX_KEY_LEFT                                   none       XK_Left
  41.186 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  41.187 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  41.188 +BX_KEY_LEFT_BRACKET                           '^'        XK_dead_circumflex
  41.189 +BX_KEY_LEFT_BRACKET                           none       XK_dead_diaeresis
  41.190 +BX_KEY_MENU                                   none       XK_Menu
  41.191 +BX_KEY_MINUS+BX_KEY_ALT_R                     ']'        XK_bracketright
  41.192 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   ''        XK_degree
  41.193 +BX_KEY_MINUS                                  ')'        XK_parenright
  41.194 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  41.195 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  41.196 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  41.197 +BX_KEY_PAUSE                                  none       XK_Break
  41.198 +BX_KEY_PAUSE                                  none       XK_Pause
  41.199 +BX_KEY_PERIOD                                 ':'        XK_colon
  41.200 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '/'        XK_slash
  41.201 +BX_KEY_PRINT                                  none       XK_Print
  41.202 +BX_KEY_PRINT                                  none       XK_Sys_Req
  41.203 +BX_KEY_RIGHT                                  none       XK_Right
  41.204 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             ''        XK_currency
  41.205 +BX_KEY_RIGHT_BRACKET                          '$'        XK_dollar
  41.206 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           ''        XK_sterling
  41.207 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  41.208 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               'M'        XK_M
  41.209 +BX_KEY_SEMICOLON                              'm'        XK_m
  41.210 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  41.211 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  41.212 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '%'        XK_percent
  41.213 +BX_KEY_SINGLE_QUOTE                           ''        XK_ugrave
  41.214 +BX_KEY_SLASH                                  '!'        XK_exclam
  41.215 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   ''        XK_section
  41.216 +BX_KEY_SPACE                                  space      XK_space
  41.217 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  41.218 +BX_KEY_TAB                                    tab        XK_Tab
  41.219 +BX_KEY_UP                                     none       XK_Up
  41.220 +BX_KEY_WIN_L                                  none       XK_Super_L
  41.221 +BX_KEY_WIN_R                                  none       XK_Super_R
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-it.map	Tue Jan 11 09:28:54 2005 +0000
    42.3 @@ -0,0 +1,207 @@
    42.4 +# Bochs Keymap file
    42.5 +# $Id: x11-pc-it.map,v 1.2 2002/09/25 08:00:25 bdenney Exp $
    42.6 +# Target: PC(x86) keyboard, IT keymap
    42.7 +# Author: Emanuele Goldoni
    42.8 +#
    42.9 +# The keymap file describes the layout of a keyboard, and how it translates
   42.10 +# into Bochs key codes.
   42.11 +#
   42.12 +# Format:
   42.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   42.14 +#
   42.15 +# Or, for keys that require modifiers:
   42.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   42.17 +#
   42.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   42.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   42.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   42.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   42.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   42.23 +# modifier).
   42.24 +#
   42.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   42.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   42.27 +# This format is designed to look like a char constant in C, but it's a very
   42.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   42.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   42.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   42.31 +# ugly.
   42.32 +#
   42.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   42.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   42.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   42.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   42.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   42.38 +# to edit the keymap file.
   42.39 +#
   42.40 +
   42.41 +BX_KEY_0                                      '0'        XK_0
   42.42 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
   42.43 +BX_KEY_1                                      '1'        XK_1
   42.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   42.45 +BX_KEY_2                                      '2'        XK_2
   42.46 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   42.47 +BX_KEY_3                                      '3'        XK_3
   42.48 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        XK_sterling
   42.49 +BX_KEY_4                                      '4'        XK_4
   42.50 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   42.51 +BX_KEY_5                                      '5'        XK_5
   42.52 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   42.53 +BX_KEY_6                                      '6'        XK_6
   42.54 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   42.55 +BX_KEY_7                                      '7'        XK_7
   42.56 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   42.57 +BX_KEY_8                                      '8'        XK_8
   42.58 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   42.59 +BX_KEY_9                                      '9'        XK_9
   42.60 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
   42.61 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   42.62 +BX_KEY_A                                      'a'        XK_a
   42.63 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   42.64 +BX_KEY_B                                      'b'        XK_b
   42.65 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   42.66 +BX_KEY_C                                      'c'        XK_c
   42.67 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   42.68 +BX_KEY_D                                      'd'        XK_d
   42.69 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   42.70 +BX_KEY_E                                      'e'        XK_e
   42.71 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   42.72 +BX_KEY_F                                      'f'        XK_f
   42.73 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   42.74 +BX_KEY_G                                      'g'        XK_g
   42.75 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   42.76 +BX_KEY_H                                      'h'        XK_h
   42.77 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   42.78 +BX_KEY_I                                      'i'        XK_i
   42.79 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   42.80 +BX_KEY_J                                      'j'        XK_j
   42.81 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   42.82 +BX_KEY_K                                      'k'        XK_k
   42.83 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   42.84 +BX_KEY_L                                      'l'        XK_l
   42.85 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
   42.86 +BX_KEY_M                                      'm'        XK_m
   42.87 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   42.88 +BX_KEY_N                                      'n'        XK_n
   42.89 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   42.90 +BX_KEY_O                                      'o'        XK_o
   42.91 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   42.92 +BX_KEY_P                                      'p'        XK_p
   42.93 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
   42.94 +BX_KEY_Q                                      'q'        XK_q
   42.95 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
   42.96 +BX_KEY_R                                      'r'        XK_r
   42.97 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
   42.98 +BX_KEY_S                                      's'        XK_s
   42.99 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  42.100 +BX_KEY_T                                      't'        XK_t
  42.101 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  42.102 +BX_KEY_U                                      'u'        XK_u
  42.103 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  42.104 +BX_KEY_V                                      'v'        XK_v
  42.105 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  42.106 +BX_KEY_W                                      'w'        XK_w
  42.107 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  42.108 +BX_KEY_X                                      'x'        XK_x
  42.109 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  42.110 +BX_KEY_Y                                      'y'        XK_y
  42.111 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  42.112 +BX_KEY_Z                                      'z'        XK_z
  42.113 +BX_KEY_F1                                     none       XK_F1
  42.114 +BX_KEY_F2                                     none       XK_F2
  42.115 +BX_KEY_F3                                     none       XK_F3
  42.116 +BX_KEY_F4                                     none       XK_F4
  42.117 +BX_KEY_F5                                     none       XK_F5
  42.118 +BX_KEY_F6                                     none       XK_F6
  42.119 +BX_KEY_F7                                     none       XK_F7
  42.120 +BX_KEY_F8                                     none       XK_F8
  42.121 +BX_KEY_F9                                     none       XK_F9
  42.122 +BX_KEY_F10                                    none       XK_F10
  42.123 +BX_KEY_F11                                    none       XK_F11
  42.124 +BX_KEY_F12                                    none       XK_F12
  42.125 +BX_KEY_ALT_L                                  none       XK_Alt_L
  42.126 +BX_KEY_ALT_L                                  none       XK_Meta_L
  42.127 +BX_KEY_ALT_R                                  none       XK_Alt_R
  42.128 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  42.129 +BX_KEY_ALT_R                                  none       XK_Multi_key
  42.130 +BX_KEY_BACKSLASH                              ''	 XK_ugrave
  42.131 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               ''        XK_section
  42.132 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  42.133 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  42.134 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  42.135 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  42.136 +BX_KEY_COMMA                                  ','        XK_comma
  42.137 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  42.138 +BX_KEY_CTRL_L                                 none       XK_Control_L
  42.139 +BX_KEY_CTRL_R                                 none       XK_Control_R
  42.140 +BX_KEY_DELETE                                 none       XK_Delete
  42.141 +BX_KEY_DOWN                                   none       XK_Down
  42.142 +BX_KEY_END                                    none       XK_End
  42.143 +BX_KEY_ENTER                                  return     XK_Return
  42.144 +BX_KEY_EQUALS                                 ''  	 XK_igrave
  42.145 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '^'        XK_asciicircum
  42.146 +BX_KEY_ESC                                    none       XK_Escape
  42.147 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   '|'        XK_bar
  42.148 +BX_KEY_GRAVE                                  backslash  XK_backslash
  42.149 +BX_KEY_HOME                                   none       XK_Home
  42.150 +BX_KEY_INSERT                                 none       XK_Insert
  42.151 +BX_KEY_KP_5                                   none       XK_KP_5
  42.152 +BX_KEY_KP_5                                   none       XK_KP_Begin
  42.153 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  42.154 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  42.155 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  42.156 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  42.157 +BX_KEY_KP_DOWN                                none       XK_KP_2
  42.158 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  42.159 +BX_KEY_KP_END                                 none       XK_KP_1
  42.160 +BX_KEY_KP_END                                 none       XK_KP_End
  42.161 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  42.162 +BX_KEY_KP_HOME                                none       XK_KP_7
  42.163 +BX_KEY_KP_HOME                                none       XK_KP_Home
  42.164 +BX_KEY_KP_INSERT                              none       XK_KP_0
  42.165 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  42.166 +BX_KEY_KP_LEFT                                none       XK_KP_4
  42.167 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  42.168 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  42.169 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  42.170 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  42.171 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  42.172 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  42.173 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  42.174 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  42.175 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  42.176 +BX_KEY_KP_UP                                  none       XK_KP_8
  42.177 +BX_KEY_KP_UP                                  none       XK_KP_Up
  42.178 +BX_KEY_LEFT                                   none       XK_Left
  42.179 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_eacute
  42.180 +BX_KEY_LEFT_BRACKET                           ''        XK_egrave
  42.181 +BX_KEY_MENU                                   none       XK_Menu
  42.182 +BX_KEY_MINUS                                  apostrophe XK_apostrophe
  42.183 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  42.184 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  42.185 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  42.186 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  42.187 +BX_KEY_PAUSE                                  none       XK_Break
  42.188 +BX_KEY_PAUSE                                  none       XK_Pause
  42.189 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  42.190 +BX_KEY_PERIOD                                 '.'        XK_period
  42.191 +BX_KEY_PRINT                                  none       XK_Print
  42.192 +BX_KEY_PRINT                                  none       XK_Sys_Req
  42.193 +BX_KEY_RIGHT                                  none       XK_Right
  42.194 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        XK_asterisk
  42.195 +BX_KEY_RIGHT_BRACKET                          '+'        XK_plus
  42.196 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  42.197 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_ccedilla
  42.198 +BX_KEY_SEMICOLON                              ''        XK_ograve
  42.199 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  42.200 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  42.201 +BX_KEY_SINGLE_QUOTE                           ''	   XK_agrave 
  42.202 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_degree 
  42.203 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        XK_underscore
  42.204 +BX_KEY_SLASH                                  '-'        XK_minus
  42.205 +BX_KEY_SPACE                                  space      XK_space
  42.206 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  42.207 +BX_KEY_TAB                                    tab        XK_Tab
  42.208 +BX_KEY_UP                                     none       XK_Up
  42.209 +BX_KEY_WIN_L                                  none       XK_Super_L
  42.210 +BX_KEY_WIN_R                                  none       XK_Super_R
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-se.map	Tue Jan 11 09:28:54 2005 +0000
    43.3 @@ -0,0 +1,278 @@
    43.4 +# Bochs Keymap file
    43.5 +# $Id: x11-pc-se.map,v 1.2 2002/09/25 08:00:25 bdenney Exp $
    43.6 +# Target: PC(x86) keyboard, SE keymap
    43.7 +# Author: Magnus 'Moggen' berg
    43.8 +#
    43.9 +# The keymap file describes the layout of a keyboard, and how it translates
   43.10 +# into Bochs key codes.
   43.11 +#
   43.12 +# Format:
   43.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   43.14 +#
   43.15 +# Or, for keys that require modifiers:
   43.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   43.17 +#
   43.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   43.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   43.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   43.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   43.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   43.23 +# modifier).
   43.24 +#
   43.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   43.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   43.27 +# This format is designed to look like a char constant in C, but it's a very
   43.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   43.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   43.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   43.31 +# ugly.
   43.32 +#
   43.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   43.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   43.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   43.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   43.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   43.38 +# to edit the keymap file.
   43.39 +#
   43.40 +
   43.41 +# Upper key groups
   43.42 +BX_KEY_ESC                                    none       XK_Escape
   43.43 +
   43.44 +BX_KEY_F1                                     none       XK_F1
   43.45 +BX_KEY_F2                                     none       XK_F2
   43.46 +BX_KEY_F3                                     none       XK_F3
   43.47 +BX_KEY_F4                                     none       XK_F4
   43.48 +
   43.49 +BX_KEY_F5                                     none       XK_F5
   43.50 +BX_KEY_F6                                     none       XK_F6
   43.51 +BX_KEY_F7                                     none       XK_F7
   43.52 +BX_KEY_F8                                     none       XK_F8
   43.53 +
   43.54 +BX_KEY_F9                                     none       XK_F9
   43.55 +BX_KEY_F10                                    none       XK_F10
   43.56 +BX_KEY_F11                                    none       XK_F11
   43.57 +BX_KEY_F12                                    none       XK_F12
   43.58 +
   43.59 +BX_KEY_PRINT                                  none       XK_Print
   43.60 +BX_KEY_PRINT                                  none       XK_Sys_Req
   43.61 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
   43.62 +BX_KEY_PAUSE                                  none       XK_Break
   43.63 +BX_KEY_PAUSE                                  none       XK_Pause
   43.64 +
   43.65 +# Main key group
   43.66 +#  Row 1
   43.67 +BX_KEY_GRAVE                                  ''        XK_section
   43.68 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_onehalf
   43.69 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        XK_paragraph
   43.70 +BX_KEY_GRAVE+BX_KEY_SHIFT_L+BX_KEY_ALT_R      ''        XK_threequarters
   43.71 +BX_KEY_1                                      '1'        XK_1
   43.72 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   43.73 +BX_KEY_1+BX_KEY_ALT_R                         ''        XK_exclamdown
   43.74 +BX_KEY_1+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_onesuperior
   43.75 +BX_KEY_2                                      '2'        XK_2
   43.76 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   43.77 +BX_KEY_2+BX_KEY_ALT_R                         '@'        XK_at
   43.78 +BX_KEY_2+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_twosuperior
   43.79 +BX_KEY_3                                      '3'        XK_3
   43.80 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        XK_numbersign
   43.81 +BX_KEY_3+BX_KEY_ALT_R                         ''        XK_sterling
   43.82 +BX_KEY_3+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_threesuperior
   43.83 +BX_KEY_4                                      '4'        XK_4
   43.84 +BX_KEY_4+BX_KEY_SHIFT_L                       ''        XK_currency
   43.85 +BX_KEY_4+BX_KEY_ALT_R                         '$'        XK_dollar
   43.86 +BX_KEY_4+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_onequarter
   43.87 +BX_KEY_5                                      '5'        XK_5
   43.88 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   43.89 +BX_KEY_5+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_cent
   43.90 +BX_KEY_6                                      '6'        XK_6
   43.91 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   43.92 +BX_KEY_6+BX_KEY_ALT_R                         ''        XK_yen
   43.93 +BX_KEY_7                                      '7'        XK_7
   43.94 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   43.95 +BX_KEY_7+BX_KEY_ALT_R                         '{'        XK_braceleft
   43.96 +BX_KEY_7+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_division
   43.97 +BX_KEY_8                                      '8'        XK_8
   43.98 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   43.99 +BX_KEY_8+BX_KEY_ALT_R                         '['        XK_bracketleft
  43.100 +BX_KEY_9                                      '9'        XK_9
  43.101 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
  43.102 +BX_KEY_9+BX_KEY_ALT_R                         ']'        XK_bracketright
  43.103 +BX_KEY_0                                      '0'        XK_0
  43.104 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
  43.105 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
  43.106 +BX_KEY_0+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_degree
  43.107 +BX_KEY_MINUS                                  '+'        XK_plus
  43.108 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  43.109 +BX_KEY_MINUS+BX_KEY_ALT_L                     backslash  XK_backslash
  43.110 +BX_KEY_MINUS+BX_KEY_SHIFT_L+BX_KEY_ALT_R      ''        XK_questiondown
  43.111 +BX_KEY_EQUALS                                 none       XK_dead_acute
  43.112 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  none       XK_dead_grave
  43.113 +BX_KEY_EQUALS+BX_KEY_ALT_L                    ''        XK_plusminus
  43.114 +BX_KEY_EQUALS+BX_KEY_ALT_L+BX_KEY_ALT_R       ''        XK_notsign
  43.115 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  43.116 +
  43.117 +#  Row 2
  43.118 +BX_KEY_TAB                                    tab        XK_Tab
  43.119 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  43.120 +BX_KEY_Q                                      'q'        XK_q
  43.121 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
  43.122 +BX_KEY_W                                      'w'        XK_w
  43.123 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  43.124 +BX_KEY_E                                      'e'        XK_e
  43.125 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
  43.126 +BX_KEY_E+BX_KEY_SHIFT_L+BX_KEY_ALT_R          none       XK_EuroSign
  43.127 +BX_KEY_R                                      'r'        XK_r
  43.128 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  43.129 +BX_KEY_R+BX_KEY_ALT_R                         ''        XK_registered
  43.130 +BX_KEY_T                                      't'        XK_t
  43.131 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  43.132 +BX_KEY_T+BX_KEY_ALT_R                         ''        XK_thorn
  43.133 +BX_KEY_T+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_THORN
  43.134 +BX_KEY_Y                                      'y'        XK_y
  43.135 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  43.136 +BX_KEY_U                                      'u'        XK_u
  43.137 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  43.138 +BX_KEY_I                                      'i'        XK_i
  43.139 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
  43.140 +BX_KEY_O                                      'o'        XK_o
  43.141 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
  43.142 +BX_KEY_P                                      'p'        XK_p
  43.143 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  43.144 +BX_KEY_LEFT_BRACKET                           ''        XK_aring
  43.145 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_Aring
  43.146 +BX_KEY_RIGHT_BRACKET                          none       XK_dead_diaeresis
  43.147 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           none       XK_dead_circumflex
  43.148 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             none       XK_dead_tilde
  43.149 +BX_KEY_ENTER                                  return     XK_Return
  43.150 +
  43.151 +#  Row 3
  43.152 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  43.153 +BX_KEY_A                                      'a'        XK_a
  43.154 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
  43.155 +BX_KEY_A+BX_KEY_ALT_R                         ''        XK_ordfeminine
  43.156 +BX_KEY_A+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_masculine
  43.157 +BX_KEY_S                                      's'        XK_s
  43.158 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  43.159 +BX_KEY_S+BX_KEY_ALT_R                         ''        XK_ssharp
  43.160 +BX_KEY_D                                      'd'        XK_d
  43.161 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
  43.162 +BX_KEY_D+BX_KEY_ALT_R                         ''        XK_eth
  43.163 +BX_KEY_D+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_ETH
  43.164 +BX_KEY_F                                      'f'        XK_f
  43.165 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
  43.166 +BX_KEY_G                                      'g'        XK_g
  43.167 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
  43.168 +BX_KEY_H                                      'h'        XK_h
  43.169 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
  43.170 +BX_KEY_J                                      'j'        XK_j
  43.171 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
  43.172 +BX_KEY_K                                      'k'        XK_k
  43.173 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
  43.174 +BX_KEY_L                                      'l'        XK_l
  43.175 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
  43.176 +BX_KEY_SEMICOLON                              ''        XK_odiaeresis
  43.177 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_Odiaeresis
  43.178 +BX_KEY_SEMICOLON+BX_KEY_ALT_R                 ''        XK_oslash
  43.179 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L+BX_KEY_ALT_R  ''        XK_Ooblique
  43.180 +BX_KEY_SINGLE_QUOTE                           ''        XK_adiaeresis
  43.181 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_Adiaeresis
  43.182 +BX_KEY_SINGLE_QUOTE+BX_KEY_ALT_R              ''        XK_ae
  43.183 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L+BX_KEY_ALT_R ''      XK_AE
  43.184 +BX_KEY_BACKSLASH                              apostrophe XK_apostrophe
  43.185 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '*'        XK_asterisk
  43.186 +BX_KEY_BACKSLASH+BX_KEY_ALT_R                 ''        XK_acute
  43.187 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L+BX_KEY_ALT_R  ''        XK_multiply
  43.188 +
  43.189 +#  Row 4
  43.190 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  43.191 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  43.192 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  43.193 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            '|'        XK_bar
  43.194 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L+BX_KEY_ALT_R ''    XK_brokenbar
  43.195 +BX_KEY_Z                                      'z'        XK_z
  43.196 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  43.197 +BX_KEY_Z+BX_KEY_ALT_R                         ''        XK_guillemotleft
  43.198 +BX_KEY_X                                      'x'        XK_x
  43.199 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  43.200 +BX_KEY_X+BX_KEY_ALT_R                         ''        XK_guillemotright
  43.201 +BX_KEY_C                                      'c'        XK_c
  43.202 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
  43.203 +BX_KEY_C+BX_KEY_ALT_R                         ''        XK_copyright
  43.204 +BX_KEY_V                                      'v'        XK_v
  43.205 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  43.206 +BX_KEY_V+BX_KEY_SHIFT_L+BX_KEY_ALT_R          '`'        XK_grave
  43.207 +BX_KEY_B                                      'b'        XK_b
  43.208 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
  43.209 +BX_KEY_N                                      'n'        XK_n
  43.210 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
  43.211 +BX_KEY_M                                      'm'        XK_m
  43.212 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
  43.213 +BX_KEY_M+BX_KEY_ALT_R                         ''        XK_mu
  43.214 +BX_KEY_COMMA                                  ','        XK_comma
  43.215 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  43.216 +BX_KEY_PERIOD                                 '.'        XK_period
  43.217 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  43.218 +BX_KEY_PERIOD+BX_KEY_ALT_R                    ''        XK_periodcentered
  43.219 +BX_KEY_SLASH                                  '-'        XK_minus
  43.220 +BX_KEY_SLASH+BX_KEY_SHIFT                     '_'        XK_underscore
  43.221 +BX_KEY_SLASH+BX_KEY_ALT_R                     ''        XK_hyphen
  43.222 +BX_KEY_SLASH+BX_KEY_SHIFT+BX_KEY_ALT_R        ''        XK_macron
  43.223 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  43.224 +
  43.225 +#  Row 5
  43.226 +BX_KEY_CTRL_L                                 none       XK_Control_L
  43.227 +BX_KEY_WIN_L                                  none       XK_Super_L
  43.228 +BX_KEY_ALT_L                                  none       XK_Alt_L
  43.229 +BX_KEY_ALT_L                                  none       XK_Meta_L
  43.230 +BX_KEY_SPACE                                  space      XK_space
  43.231 +BX_KEY_SPACE+BX_KEY_ALT_R                     none       XK_nobreakspace
  43.232 +BX_KEY_ALT_R                                  none       XK_Alt_R
  43.233 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  43.234 +BX_KEY_ALT_R                                  none       XK_Multi_key
  43.235 +BX_KEY_WIN_R                                  none       XK_Super_R
  43.236 +BX_KEY_MENU                                   none       XK_Menu
  43.237 +BX_KEY_CTRL_R                                 none       XK_Control_R
  43.238 +
  43.239 +# Ins/Del/Home/End/PgUp/PgDn
  43.240 +BX_KEY_INSERT                                 none       XK_Insert
  43.241 +BX_KEY_DELETE                                 none       XK_Delete
  43.242 +BX_KEY_HOME                                   none       XK_Home
  43.243 +BX_KEY_END                                    none       XK_End
  43.244 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  43.245 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  43.246 +
  43.247 +# Arrow keys
  43.248 +BX_KEY_LEFT                                   none       XK_Left
  43.249 +BX_KEY_RIGHT                                  none       XK_Right
  43.250 +BX_KEY_UP                                     none       XK_Up
  43.251 +BX_KEY_DOWN                                   none       XK_Down
  43.252 +
  43.253 +# Numerical keypad
  43.254 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  43.255 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  43.256 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  43.257 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  43.258 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  43.259 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  43.260 +BX_KEY_KP_HOME                                none       XK_KP_7
  43.261 +BX_KEY_KP_HOME                                none       XK_KP_Home
  43.262 +BX_KEY_KP_UP                                  none       XK_KP_8
  43.263 +BX_KEY_KP_UP                                  none       XK_KP_Up
  43.264 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  43.265 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  43.266 +BX_KEY_KP_LEFT                                none       XK_KP_4
  43.267 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  43.268 +BX_KEY_KP_5                                   none       XK_KP_5
  43.269 +BX_KEY_KP_5                                   none       XK_KP_Begin
  43.270 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  43.271 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  43.272 +BX_KEY_KP_END                                 none       XK_KP_1
  43.273 +BX_KEY_KP_END                                 none       XK_KP_End
  43.274 +BX_KEY_KP_DOWN                                none       XK_KP_2
  43.275 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  43.276 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  43.277 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  43.278 +BX_KEY_KP_INSERT                              none       XK_KP_0
  43.279 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  43.280 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  43.281 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-uk.map	Tue Jan 11 09:28:54 2005 +0000
    44.3 @@ -0,0 +1,209 @@
    44.4 +# Bochs Keymap file
    44.5 +# $Id: x11-pc-uk.map,v 1.1 2002/12/11 21:35:50 bdenney Exp $
    44.6 +# Target: PC(x86) keyboard, UK keymap
    44.7 +# Author: Denis Lenihan
    44.8 +#
    44.9 +# The keymap file describes the layout of a keyboard, and how it translates
   44.10 +# into Bochs key codes.
   44.11 +#
   44.12 +# Format:
   44.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   44.14 +#
   44.15 +# Or, for keys that require modifiers:
   44.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   44.17 +#
   44.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   44.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   44.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   44.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   44.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   44.23 +# modifier).
   44.24 +#
   44.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   44.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   44.27 +# This format is designed to look like a char constant in C, but it's a very
   44.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   44.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   44.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   44.31 +# ugly.
   44.32 +#
   44.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   44.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   44.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   44.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   44.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   44.38 +# to edit the keymap file.
   44.39 +#
   44.40 +
   44.41 +BX_KEY_0                                      '0'        XK_0
   44.42 +BX_KEY_0+BX_KEY_SHIFT_L                       ')'        XK_parenright
   44.43 +BX_KEY_1                                      '1'        XK_1
   44.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   44.45 +BX_KEY_2                                      '2'        XK_2
   44.46 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   44.47 +BX_KEY_3                                      '3'        XK_3
   44.48 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        XK_sterling
   44.49 +BX_KEY_3+BX_KEY_ALT_R   	              '|'        XK_EuroSign
   44.50 +BX_KEY_4                                      '4'        XK_4
   44.51 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   44.52 +BX_KEY_5                                      '5'        XK_5
   44.53 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   44.54 +BX_KEY_6                                      '6'        XK_6
   44.55 +BX_KEY_6+BX_KEY_SHIFT_L                       '^'        XK_asciicircum
   44.56 +BX_KEY_7                                      '7'        XK_7
   44.57 +BX_KEY_7+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   44.58 +BX_KEY_8                                      '8'        XK_8
   44.59 +BX_KEY_8+BX_KEY_SHIFT_L                       '*'        XK_asterisk
   44.60 +BX_KEY_9                                      '9'        XK_9
   44.61 +BX_KEY_9+BX_KEY_SHIFT_L                       '('        XK_parenleft
   44.62 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   44.63 +BX_KEY_A                                      'a'        XK_a
   44.64 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   44.65 +BX_KEY_B                                      'b'        XK_b
   44.66 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   44.67 +BX_KEY_C                                      'c'        XK_c
   44.68 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   44.69 +BX_KEY_D                                      'd'        XK_d
   44.70 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   44.71 +BX_KEY_E                                      'e'        XK_e
   44.72 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   44.73 +BX_KEY_F                                      'f'        XK_f
   44.74 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   44.75 +BX_KEY_G                                      'g'        XK_g
   44.76 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   44.77 +BX_KEY_H                                      'h'        XK_h
   44.78 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   44.79 +BX_KEY_I                                      'i'        XK_i
   44.80 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   44.81 +BX_KEY_J                                      'j'        XK_j
   44.82 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   44.83 +BX_KEY_K                                      'k'        XK_k
   44.84 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   44.85 +BX_KEY_L                                      'l'        XK_l
   44.86 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
   44.87 +BX_KEY_M                                      'm'        XK_m
   44.88 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   44.89 +BX_KEY_N                                      'n'        XK_n
   44.90 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   44.91 +BX_KEY_O                                      'o'        XK_o
   44.92 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   44.93 +BX_KEY_P                                      'p'        XK_p
   44.94 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
   44.95 +BX_KEY_Q                                      'q'        XK_q
   44.96 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
   44.97 +BX_KEY_R                                      'r'        XK_r
   44.98 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
   44.99 +BX_KEY_S                                      's'        XK_s
  44.100 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  44.101 +BX_KEY_T                                      't'        XK_t
  44.102 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  44.103 +BX_KEY_U                                      'u'        XK_u
  44.104 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  44.105 +BX_KEY_V                                      'v'        XK_v
  44.106 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  44.107 +BX_KEY_W                                      'w'        XK_w
  44.108 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  44.109 +BX_KEY_X                                      'x'        XK_x
  44.110 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  44.111 +BX_KEY_Y                                      'y'        XK_y
  44.112 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  44.113 +BX_KEY_Z                                      'z'        XK_z
  44.114 +BX_KEY_F1                                     none       XK_F1
  44.115 +BX_KEY_F2                                     none       XK_F2
  44.116 +BX_KEY_F3                                     none       XK_F3
  44.117 +BX_KEY_F4                                     none       XK_F4
  44.118 +BX_KEY_F5                                     none       XK_F5
  44.119 +BX_KEY_F6                                     none       XK_F6
  44.120 +BX_KEY_F7                                     none       XK_F7
  44.121 +BX_KEY_F8                                     none       XK_F8
  44.122 +BX_KEY_F9                                     none       XK_F9
  44.123 +BX_KEY_F10                                    none       XK_F10
  44.124 +BX_KEY_F11                                    none       XK_F11
  44.125 +BX_KEY_F12                                    none       XK_F12
  44.126 +BX_KEY_ALT_L                                  none       XK_Alt_L
  44.127 +BX_KEY_ALT_L                                  none       XK_Meta_L
  44.128 +BX_KEY_ALT_R                                  none       XK_Alt_R
  44.129 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  44.130 +BX_KEY_ALT_R                                  none       XK_Multi_key
  44.131 +BX_KEY_LEFT_BACKSLASH                         '\'	 XK_backslash
  44.132 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '|'        XK_bar
  44.133 +BX_KEY_BACKSLASH                	      '~'	 XK_asciitilde
  44.134 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L    	      '#'        XK_numbersign
  44.135 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  44.136 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  44.137 +BX_KEY_COMMA                                  ','        XK_comma
  44.138 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        XK_less
  44.139 +BX_KEY_CTRL_L                                 none       XK_Control_L
  44.140 +BX_KEY_CTRL_R                                 none       XK_Control_R
  44.141 +BX_KEY_DELETE                                 none       XK_Delete
  44.142 +BX_KEY_DOWN                                   none       XK_Down
  44.143 +BX_KEY_END                                    none       XK_End
  44.144 +BX_KEY_ENTER                                  return     XK_Return
  44.145 +BX_KEY_EQUALS                                 '='        XK_equal
  44.146 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        XK_plus
  44.147 +BX_KEY_ESC                                    none       XK_Escape
  44.148 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_notsign
  44.149 +BX_KEY_GRAVE                                  '`'        XK_grave
  44.150 +BX_KEY_GRAVE+BX_KEY_ALT_R                     '|'        XK_bar
  44.151 +BX_KEY_HOME                                   none       XK_Home
  44.152 +BX_KEY_INSERT                                 none       XK_Insert
  44.153 +BX_KEY_KP_5                                   none       XK_KP_5
  44.154 +BX_KEY_KP_5                                   none       XK_KP_Begin
  44.155 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  44.156 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  44.157 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  44.158 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  44.159 +BX_KEY_KP_DOWN                                none       XK_KP_2
  44.160 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  44.161 +BX_KEY_KP_END                                 none       XK_KP_1
  44.162 +BX_KEY_KP_END                                 none       XK_KP_End
  44.163 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  44.164 +BX_KEY_KP_HOME                                none       XK_KP_7
  44.165 +BX_KEY_KP_HOME                                none       XK_KP_Home
  44.166 +BX_KEY_KP_INSERT                              none       XK_KP_0
  44.167 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  44.168 +BX_KEY_KP_LEFT                                none       XK_KP_4
  44.169 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  44.170 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  44.171 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  44.172 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  44.173 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  44.174 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  44.175 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  44.176 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  44.177 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  44.178 +BX_KEY_KP_UP                                  none       XK_KP_8
  44.179 +BX_KEY_KP_UP                                  none       XK_KP_Up
  44.180 +BX_KEY_LEFT                                   none       XK_Left
  44.181 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '{'        XK_braceleft
  44.182 +BX_KEY_LEFT_BRACKET                           '['        XK_bracketleft
  44.183 +BX_KEY_MENU                                   none       XK_Menu
  44.184 +BX_KEY_MINUS                                  '-'        XK_minus
  44.185 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '_'        XK_underscore
  44.186 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  44.187 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  44.188 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  44.189 +BX_KEY_PAUSE                                  none       XK_Break
  44.190 +BX_KEY_PAUSE                                  none       XK_Pause
  44.191 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        XK_greater
  44.192 +BX_KEY_PERIOD                                 '.'        XK_period
  44.193 +BX_KEY_PRINT                                  none       XK_Print
  44.194 +BX_KEY_PRINT                                  none       XK_Sys_Req
  44.195 +BX_KEY_RIGHT                                  none       XK_Right
  44.196 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '}'        XK_braceright
  44.197 +BX_KEY_RIGHT_BRACKET                          ']'        XK_bracketright
  44.198 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  44.199 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ':'        XK_colon
  44.200 +BX_KEY_SEMICOLON                              ';'        XK_semicolon
  44.201 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  44.202 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  44.203 +BX_KEY_SINGLE_QUOTE                           apostrophe XK_apostrophe
  44.204 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '@'        XK_at
  44.205 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        XK_question
  44.206 +BX_KEY_SLASH                                  '/'        XK_slash
  44.207 +BX_KEY_SPACE                                  space      XK_space
  44.208 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  44.209 +BX_KEY_TAB                                    tab        XK_Tab
  44.210 +BX_KEY_UP                                     none       XK_Up
  44.211 +BX_KEY_WIN_L                                  none       XK_Super_L
  44.212 +BX_KEY_WIN_R                                  none       XK_Super_R
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-us.map	Tue Jan 11 09:28:54 2005 +0000
    45.3 @@ -0,0 +1,205 @@
    45.4 +# Bochs Keymap file
    45.5 +# $Id: x11-pc-us.map,v 1.3 2002/09/25 08:00:25 bdenney Exp $
    45.6 +# Target: PC(x86) keyboard, US keymap
    45.7 +# Author: Christophe Bothamy, Bryce Denney
    45.8 +#
    45.9 +# The keymap file describes the layout of a keyboard, and how it translates
   45.10 +# into Bochs key codes.
   45.11 +#
   45.12 +# Format:
   45.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   45.14 +#
   45.15 +# Or, for keys that require modifiers:
   45.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   45.17 +#
   45.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   45.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   45.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   45.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   45.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   45.23 +# modifier).
   45.24 +#
   45.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   45.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   45.27 +# This format is designed to look like a char constant in C, but it's a very
   45.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   45.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   45.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   45.31 +# ugly.
   45.32 +#
   45.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   45.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   45.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   45.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   45.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   45.38 +# to edit the keymap file.
   45.39 +#
   45.40 +
   45.41 +BX_KEY_0                                      '0'        XK_0
   45.42 +BX_KEY_0+BX_KEY_SHIFT_L                       ')'        XK_parenright
   45.43 +BX_KEY_1                                      '1'        XK_1
   45.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   45.45 +BX_KEY_2                                      '2'        XK_2
   45.46 +BX_KEY_2+BX_KEY_SHIFT_L                       '@'        XK_at
   45.47 +BX_KEY_3                                      '3'        XK_3
   45.48 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        XK_numbersign
   45.49 +BX_KEY_4                                      '4'        XK_4
   45.50 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   45.51 +BX_KEY_5                                      '5'        XK_5
   45.52 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   45.53 +BX_KEY_6                                      '6'        XK_6
   45.54 +BX_KEY_6+BX_KEY_SHIFT_L                       '^'        XK_asciicircum
   45.55 +BX_KEY_7                                      '7'        XK_7
   45.56 +BX_KEY_7+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   45.57 +BX_KEY_8                                      '8'        XK_8
   45.58 +BX_KEY_8+BX_KEY_SHIFT_L                       '*'        XK_asterisk
   45.59 +BX_KEY_9                                      '9'        XK_9
   45.60 +BX_KEY_9+BX_KEY_SHIFT_L                       '('        XK_parenleft
   45.61 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   45.62 +BX_KEY_A                                      'a'        XK_a
   45.63 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   45.64 +BX_KEY_B                                      'b'        XK_b
   45.65 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   45.66 +BX_KEY_C                                      'c'        XK_c
   45.67 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   45.68 +BX_KEY_D                                      'd'        XK_d
   45.69 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   45.70 +BX_KEY_E                                      'e'        XK_e
   45.71 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   45.72 +BX_KEY_F                                      'f'        XK_f
   45.73 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   45.74 +BX_KEY_G                                      'g'        XK_g
   45.75 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   45.76 +BX_KEY_H                                      'h'        XK_h
   45.77 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   45.78 +BX_KEY_I                                      'i'        XK_i
   45.79 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   45.80 +BX_KEY_J                                      'j'        XK_j
   45.81 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   45.82 +BX_KEY_K                                      'k'        XK_k
   45.83 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   45.84 +BX_KEY_L                                      'l'        XK_l
   45.85 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
   45.86 +BX_KEY_M                                      'm'        XK_m
   45.87 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   45.88 +BX_KEY_N                                      'n'        XK_n
   45.89 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   45.90 +BX_KEY_O                                      'o'        XK_o
   45.91 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   45.92 +BX_KEY_P                                      'p'        XK_p
   45.93 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
   45.94 +BX_KEY_Q                                      'q'        XK_q
   45.95 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
   45.96 +BX_KEY_R                                      'r'        XK_r
   45.97 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
   45.98 +BX_KEY_S                                      's'        XK_s
   45.99 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  45.100 +BX_KEY_T                                      't'        XK_t
  45.101 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  45.102 +BX_KEY_U                                      'u'        XK_u
  45.103 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  45.104 +BX_KEY_V                                      'v'        XK_v
  45.105 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  45.106 +BX_KEY_W                                      'w'        XK_w
  45.107 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  45.108 +BX_KEY_X                                      'x'        XK_x
  45.109 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  45.110 +BX_KEY_Y                                      'y'        XK_y
  45.111 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  45.112 +BX_KEY_Z                                      'z'        XK_z
  45.113 +BX_KEY_F1                                     none       XK_F1
  45.114 +BX_KEY_F2                                     none       XK_F2
  45.115 +BX_KEY_F3                                     none       XK_F3
  45.116 +BX_KEY_F4                                     none       XK_F4
  45.117 +BX_KEY_F5                                     none       XK_F5
  45.118 +BX_KEY_F6                                     none       XK_F6
  45.119 +BX_KEY_F7                                     none       XK_F7
  45.120 +BX_KEY_F8                                     none       XK_F8
  45.121 +BX_KEY_F9                                     none       XK_F9
  45.122 +BX_KEY_F10                                    none       XK_F10
  45.123 +BX_KEY_F11                                    none       XK_F11
  45.124 +BX_KEY_F12                                    none       XK_F12
  45.125 +BX_KEY_ALT_L                                  none       XK_Alt_L
  45.126 +BX_KEY_ALT_L                                  none       XK_Meta_L
  45.127 +BX_KEY_ALT_R                                  none       XK_Alt_R
  45.128 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  45.129 +BX_KEY_ALT_R                                  none       XK_Multi_key
  45.130 +BX_KEY_BACKSLASH                              backslash  XK_backslash
  45.131 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '|'        XK_bar
  45.132 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  45.133 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  45.134 +BX_KEY_COMMA                                  ','        XK_comma
  45.135 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        XK_less
  45.136 +BX_KEY_CTRL_L                                 none       XK_Control_L
  45.137 +BX_KEY_CTRL_R                                 none       XK_Control_R
  45.138 +BX_KEY_DELETE                                 none       XK_Delete
  45.139 +BX_KEY_DOWN                                   none       XK_Down
  45.140 +BX_KEY_END                                    none       XK_End
  45.141 +BX_KEY_ENTER                                  return     XK_Return
  45.142 +BX_KEY_EQUALS                                 '='        XK_equal
  45.143 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        XK_plus
  45.144 +BX_KEY_ESC                                    none       XK_Escape
  45.145 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   '~'        XK_asciitilde
  45.146 +BX_KEY_GRAVE                                  '`'        XK_grave
  45.147 +BX_KEY_HOME                                   none       XK_Home
  45.148 +BX_KEY_INSERT                                 none       XK_Insert
  45.149 +BX_KEY_KP_5                                   none       XK_KP_5
  45.150 +BX_KEY_KP_5                                   none       XK_KP_Begin
  45.151 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  45.152 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  45.153 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  45.154 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  45.155 +BX_KEY_KP_DOWN                                none       XK_KP_2
  45.156 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  45.157 +BX_KEY_KP_END                                 none       XK_KP_1
  45.158 +BX_KEY_KP_END                                 none       XK_KP_End
  45.159 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  45.160 +BX_KEY_KP_HOME                                none       XK_KP_7
  45.161 +BX_KEY_KP_HOME                                none       XK_KP_Home
  45.162 +BX_KEY_KP_INSERT                              none       XK_KP_0
  45.163 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  45.164 +BX_KEY_KP_LEFT                                none       XK_KP_4
  45.165 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  45.166 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  45.167 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  45.168 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  45.169 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  45.170 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  45.171 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  45.172 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  45.173 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  45.174 +BX_KEY_KP_UP                                  none       XK_KP_8
  45.175 +BX_KEY_KP_UP                                  none       XK_KP_Up
  45.176 +BX_KEY_LEFT                                   none       XK_Left
  45.177 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '{'        XK_braceleft
  45.178 +BX_KEY_LEFT_BRACKET                           '['        XK_bracketleft
  45.179 +BX_KEY_MENU                                   none       XK_Menu
  45.180 +BX_KEY_MINUS                                  '-'        XK_minus
  45.181 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '_'        XK_underscore
  45.182 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  45.183 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  45.184 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  45.185 +BX_KEY_PAUSE                                  none       XK_Break
  45.186 +BX_KEY_PAUSE                                  none       XK_Pause
  45.187 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        XK_greater
  45.188 +BX_KEY_PERIOD                                 '.'        XK_period
  45.189 +BX_KEY_PRINT                                  none       XK_Print
  45.190 +BX_KEY_PRINT                                  none       XK_Sys_Req
  45.191 +BX_KEY_RIGHT                                  none       XK_Right
  45.192 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '}'        XK_braceright
  45.193 +BX_KEY_RIGHT_BRACKET                          ']'        XK_bracketright
  45.194 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  45.195 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ':'        XK_colon
  45.196 +BX_KEY_SEMICOLON                              ';'        XK_semicolon
  45.197 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  45.198 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  45.199 +BX_KEY_SINGLE_QUOTE                           apostrophe XK_apostrophe
  45.200 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '"'        XK_quotedbl
  45.201 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        XK_question
  45.202 +BX_KEY_SLASH                                  '/'        XK_slash
  45.203 +BX_KEY_SPACE                                  space      XK_space
  45.204 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  45.205 +BX_KEY_TAB                                    tab        XK_Tab
  45.206 +BX_KEY_UP                                     none       XK_Up
  45.207 +BX_KEY_WIN_L                                  none       XK_Super_L
  45.208 +BX_KEY_WIN_R                                  none       XK_Super_R
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/tools/ioemu/gui/nogui.cc	Tue Jan 11 09:28:54 2005 +0000
    46.3 @@ -0,0 +1,336 @@
    46.4 +/////////////////////////////////////////////////////////////////////////
    46.5 +// $Id: nogui.cc,v 1.21 2003/06/28 08:04:31 vruppert Exp $
    46.6 +/////////////////////////////////////////////////////////////////////////
    46.7 +//
    46.8 +//  Copyright (C) 2001  MandrakeSoft S.A.
    46.9 +//
   46.10 +//    MandrakeSoft S.A.
   46.11 +//    43, rue d'Aboukir
   46.12 +//    75002 Paris - France
   46.13 +//    http://www.linux-mandrake.com/
   46.14 +//    http://www.mandrakesoft.com/
   46.15 +//
   46.16 +//  This library is free software; you can redistribute it and/or
   46.17 +//  modify it under the terms of the GNU Lesser General Public
   46.18 +//  License as published by the Free Software Foundation; either
   46.19 +//  version 2 of the License, or (at your option) any later version.
   46.20 +//
   46.21 +//  This library is distributed in the hope that it will be useful,
   46.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   46.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   46.24 +//  Lesser General Public License for more details.
   46.25 +//
   46.26 +//  You should have received a copy of the GNU Lesser General Public
   46.27 +//  License along with this library; if not, write to the Free Software
   46.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   46.29 +
   46.30 +
   46.31 +
   46.32 +// Define BX_PLUGGABLE in files that can be compiled into plugins.  For
   46.33 +// platforms that require a special tag on exported symbols, BX_PLUGGABLE 
   46.34 +// is used to know when we are exporting symbols and when we are importing.
   46.35 +#define BX_PLUGGABLE
   46.36 +
   46.37 +#include "bochs.h"
   46.38 +#include "icon_bochs.h"
   46.39 +
   46.40 +class bx_nogui_gui_c : public bx_gui_c {
   46.41 +public:
   46.42 +  bx_nogui_gui_c (void) {}
   46.43 +  DECLARE_GUI_VIRTUAL_METHODS()
   46.44 +};
   46.45 +
   46.46 +// declare one instance of the gui object and call macro to insert the
   46.47 +// plugin code
   46.48 +static bx_nogui_gui_c *theGui = NULL;
   46.49 +IMPLEMENT_GUI_PLUGIN_CODE(nogui)
   46.50 +
   46.51 +#define LOG_THIS theGui->
   46.52 +
   46.53 +// This file defines stubs for the GUI interface, which is a
   46.54 +// place to start if you want to port bochs to a platform, for
   46.55 +// which there is no support for your native GUI, or if you want to compile
   46.56 +// bochs without any native GUI support (no output window or
   46.57 +// keyboard input will be possible).
   46.58 +// Look in 'x.cc', 'beos.cc', and 'win32.cc' for specific
   46.59 +// implementations of this interface.  -Kevin
   46.60 +
   46.61 +
   46.62 +
   46.63 +// ::SPECIFIC_INIT()
   46.64 +//
   46.65 +// Called from gui.cc, once upon program startup, to allow for the
   46.66 +// specific GUI code (X11, BeOS, ...) to be initialized.
   46.67 +//
   46.68 +// argc, argv: not used right now, but the intention is to pass native GUI
   46.69 +//     specific options from the command line.  (X11 options, BeOS options,...)
   46.70 +//
   46.71 +// tilewidth, tileheight: for optimization, graphics_tile_update() passes
   46.72 +//     only updated regions of the screen to the gui code to be redrawn.
   46.73 +//     These define the dimensions of a region (tile).
   46.74 +// headerbar_y:  A headerbar (toolbar) is display on the top of the
   46.75 +//     VGA window, showing floppy status, and other information.  It
   46.76 +//     always assumes the width of the current VGA mode width, but
   46.77 +//     it's height is defined by this parameter.
   46.78 +
   46.79 +  void
   46.80 +bx_nogui_gui_c::specific_init(int argc, char **argv, unsigned tilewidth, unsigned tileheight,
   46.81 +                     unsigned headerbar_y)
   46.82 +{
   46.83 +  put("NGUI");
   46.84 +  UNUSED(argc);
   46.85 +  UNUSED(argv);
   46.86 +  UNUSED(tilewidth);
   46.87 +  UNUSED(tileheight);
   46.88 +  UNUSED(headerbar_y);
   46.89 +
   46.90 +  UNUSED(bochs_icon_bits);  // global variable
   46.91 +
   46.92 +  if (bx_options.Oprivate_colormap->get ()) {
   46.93 +    BX_INFO(("private_colormap option ignored."));
   46.94 +    }
   46.95 +}
   46.96 +
   46.97 +
   46.98 +// ::HANDLE_EVENTS()
   46.99 +//
  46.100 +// Called periodically (vga_update_interval in .bochsrc) so the
  46.101 +// the gui code can poll for keyboard, mouse, and other
  46.102 +// relevant events.
  46.103 +
  46.104 +  void
  46.105 +bx_nogui_gui_c::handle_events(void)
  46.106 +{
  46.107 +}
  46.108 +
  46.109 +
  46.110 +// ::FLUSH()
  46.111 +//
  46.112 +// Called periodically, requesting that the gui code flush all pending
  46.113 +// screen update requests.
  46.114 +
  46.115 +  void
  46.116 +bx_nogui_gui_c::flush(void)
  46.117 +{
  46.118 +}
  46.119 +
  46.120 +
  46.121 +// ::CLEAR_SCREEN()
  46.122 +//
  46.123 +// Called to request that the VGA region is cleared.  Don't
  46.124 +// clear the area that defines the headerbar.
  46.125 +
  46.126 +  void
  46.127 +bx_nogui_gui_c::clear_screen(void)
  46.128 +{
  46.129 +}
  46.130 +
  46.131 +
  46.132 +
  46.133 +// ::TEXT_UPDATE()
  46.134 +//
  46.135 +// Called in a VGA text mode, to update the screen with
  46.136 +// new content.
  46.137 +//
  46.138 +// old_text: array of character/attributes making up the contents
  46.139 +//           of the screen from the last call.  See below
  46.140 +// new_text: array of character/attributes making up the current
  46.141 +//           contents, which should now be displayed.  See below
  46.142 +//
  46.143 +// format of old_text & new_text: each is 4000 bytes long.
  46.144 +//     This represents 80 characters wide by 25 high, with
  46.145 +//     each character being 2 bytes.  The first by is the
  46.146 +//     character value, the second is the attribute byte.
  46.147 +//     I currently don't handle the attribute byte.
  46.148 +//
  46.149 +// cursor_x: new x location of cursor
  46.150 +// cursor_y: new y location of cursor
  46.151 +
  46.152 +  void
  46.153 +bx_nogui_gui_c::text_update(Bit8u *old_text, Bit8u *new_text,
  46.154 +                      unsigned long cursor_x, unsigned long cursor_y,
  46.155 +                      bx_vga_tminfo_t tm_info, unsigned nrows)
  46.156 +{
  46.157 +  UNUSED(old_text);
  46.158 +  UNUSED(new_text);
  46.159 +  UNUSED(cursor_x);
  46.160 +  UNUSED(cursor_y);
  46.161 +  UNUSED(tm_info);
  46.162 +  UNUSED(nrows);
  46.163 +}
  46.164 +
  46.165 +  int
  46.166 +bx_nogui_gui_c::get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)
  46.167 +{
  46.168 +  UNUSED(bytes);
  46.169 +  UNUSED(nbytes);
  46.170 +  return 0;
  46.171 +}
  46.172 +
  46.173 +  int
  46.174 +bx_nogui_gui_c::set_clipboard_text(char *text_snapshot, Bit32u len)
  46.175 +{
  46.176 +  UNUSED(text_snapshot);
  46.177 +  UNUSED(len);
  46.178 +  return 0;
  46.179 +}
  46.180 +
  46.181 +
  46.182 +// ::PALETTE_CHANGE()
  46.183 +//
  46.184 +// Allocate a color in the native GUI, for this color, and put
  46.185 +// it in the colormap location 'index'.
  46.186 +// returns: 0=no screen update needed (color map change has direct effect)
  46.187 +//          1=screen updated needed (redraw using current colormap)
  46.188 +
  46.189 +  bx_bool
  46.190 +bx_nogui_gui_c::palette_change(unsigned index, unsigned red, unsigned green, unsigned blue)
  46.191 +{
  46.192 +  UNUSED(index);
  46.193 +  UNUSED(red);
  46.194 +  UNUSED(green);
  46.195 +  UNUSED(blue);
  46.196 +  return(0);
  46.197 +}
  46.198 +
  46.199 +
  46.200 +// ::GRAPHICS_TILE_UPDATE()
  46.201 +//
  46.202 +// Called to request that a tile of graphics be drawn to the
  46.203 +// screen, since info in this region has changed.
  46.204 +//
  46.205 +// tile: array of 8bit values representing a block of pixels with
  46.206 +//       dimension equal to the 'tilewidth' & 'tileheight' parameters to
  46.207 +//       ::specific_init().  Each value specifies an index into the
  46.208 +//       array of colors you allocated for ::palette_change()
  46.209 +// x0: x origin of tile
  46.210 +// y0: y origin of tile
  46.211 +//
  46.212 +// note: origin of tile and of window based on (0,0) being in the upper
  46.213 +//       left of the window.
  46.214 +
  46.215 +  void
  46.216 +bx_nogui_gui_c::graphics_tile_update(Bit8u *tile, unsigned x0, unsigned y0)
  46.217 +{
  46.218 +  UNUSED(tile);
  46.219 +  UNUSED(x0);
  46.220 +  UNUSED(y0);
  46.221 +}
  46.222 +
  46.223 +
  46.224 +
  46.225 +// ::DIMENSION_UPDATE()
  46.226 +//
  46.227 +// Called when the VGA mode changes it's X,Y dimensions.
  46.228 +// Resize the window to this size, but you need to add on
  46.229 +// the height of the headerbar to the Y value.
  46.230 +//
  46.231 +// x: new VGA x size
  46.232 +// y: new VGA y size (add headerbar_y parameter from ::specific_init().
  46.233 +// fheight: new VGA character height in text mode
  46.234 +// fwidth : new VGA character width in text mode
  46.235 +// bpp : bits per pixel in graphics mode
  46.236 +
  46.237 +  void
  46.238 +bx_nogui_gui_c::dimension_update(unsigned x, unsigned y, unsigned fheight, unsigned fwidth, unsigned bpp)
  46.239 +{
  46.240 +  UNUSED(x);
  46.241 +  UNUSED(y);
  46.242 +  UNUSED(fheight);
  46.243 +  UNUSED(fwidth);
  46.244 +  UNUSED(bpp);
  46.245 +}
  46.246 +
  46.247 +
  46.248 +// ::CREATE_BITMAP()
  46.249 +//
  46.250 +// Create a monochrome bitmap of size 'xdim' by 'ydim', which will
  46.251 +// be drawn in the headerbar.  Return an integer ID to the bitmap,
  46.252 +// with which the bitmap can be referenced later.
  46.253 +//
  46.254 +// bmap: packed 8 pixels-per-byte bitmap.  The pixel order is:
  46.255 +//       bit0 is the left most pixel, bit7 is the right most pixel.
  46.256 +// xdim: x dimension of bitmap
  46.257 +// ydim: y dimension of bitmap
  46.258 +
  46.259 +  unsigned
  46.260 +bx_nogui_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim)
  46.261 +{
  46.262 +  UNUSED(bmap);
  46.263 +  UNUSED(xdim);
  46.264 +  UNUSED(ydim);
  46.265 +  return(0);
  46.266 +}
  46.267 +
  46.268 +
  46.269 +// ::HEADERBAR_BITMAP()
  46.270 +//
  46.271 +// Called to install a bitmap in the bochs headerbar (toolbar).
  46.272 +//
  46.273 +// bmap_id: will correspond to an ID returned from
  46.274 +//     ::create_bitmap().  'alignment' is either BX_GRAVITY_LEFT
  46.275 +//     or BX_GRAVITY_RIGHT, meaning install the bitmap in the next
  46.276 +//     available leftmost or rightmost space.
  46.277 +// alignment: is either BX_GRAVITY_LEFT or BX_GRAVITY_RIGHT,
  46.278 +//     meaning install the bitmap in the next
  46.279 +//     available leftmost or rightmost space.
  46.280 +// f: a 'C' function pointer to callback when the mouse is clicked in
  46.281 +//     the boundaries of this bitmap.
  46.282 +
  46.283 +  unsigned
  46.284 +bx_nogui_gui_c::headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void))
  46.285 +{
  46.286 +  UNUSED(bmap_id);
  46.287 +  UNUSED(alignment);
  46.288 +  UNUSED(f);
  46.289 +  return(0);
  46.290 +}
  46.291 +
  46.292 +
  46.293 +// ::SHOW_HEADERBAR()
  46.294 +//
  46.295 +// Show (redraw) the current headerbar, which is composed of
  46.296 +// currently installed bitmaps.
  46.297 +
  46.298 +  void
  46.299 +bx_nogui_gui_c::show_headerbar(void)
  46.300 +{
  46.301 +}
  46.302 +
  46.303 +
  46.304 +// ::REPLACE_BITMAP()
  46.305 +//
  46.306 +// Replace the bitmap installed in the headerbar ID slot 'hbar_id',
  46.307 +// with the one specified by 'bmap_id'.  'bmap_id' will have
  46.308 +// been generated by ::create_bitmap().  The old and new bitmap
  46.309 +// must be of the same size.  This allows the bitmap the user
  46.310 +// sees to change, when some action occurs.  For example when
  46.311 +// the user presses on the floppy icon, it then displays
  46.312 +// the ejected status.
  46.313 +//
  46.314 +// hbar_id: headerbar slot ID
  46.315 +// bmap_id: bitmap ID
  46.316 +
  46.317 +  void
  46.318 +bx_nogui_gui_c::replace_bitmap(unsigned hbar_id, unsigned bmap_id)
  46.319 +{
  46.320 +  UNUSED(hbar_id);
  46.321 +  UNUSED(bmap_id);
  46.322 +}
  46.323 +
  46.324 +
  46.325 +// ::EXIT()
  46.326 +//
  46.327 +// Called before bochs terminates, to allow for a graceful
  46.328 +// exit from the native GUI mechanism.
  46.329 +
  46.330 +  void
  46.331 +bx_nogui_gui_c::exit(void)
  46.332 +{
  46.333 +  BX_INFO(("bx_nogui_gui_c::exit() not implemented yet."));
  46.334 +}
  46.335 +
  46.336 +  void
  46.337 +bx_nogui_gui_c::mouse_enabled_changed_specific (bx_bool val)
  46.338 +{
  46.339 +}
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/tools/ioemu/gui/rfb.cc	Tue Jan 11 09:28:54 2005 +0000
    47.3 @@ -0,0 +1,1508 @@
    47.4 +/////////////////////////////////////////////////////////////////////////
    47.5 +// $Id: rfb.cc,v 1.26.2.1 2004/02/02 22:35:30 cbothamy Exp $
    47.6 +/////////////////////////////////////////////////////////////////////////
    47.7 +//
    47.8 +//  Copyright (C) 2000  Psyon.Org!
    47.9 +//
   47.10 +//    Donald Becker
   47.11 +//    http://www.psyon.org
   47.12 +//
   47.13 +//  This library is free software; you can redistribute it and/or
   47.14 +//  modify it under the terms of the GNU Lesser General Public
   47.15 +//  License as published by the Free Software Foundation; either
   47.16 +//  version 2 of the License, or (at your option) any later version.
   47.17 +//
   47.18 +//  This library is distributed in the hope that it will be useful,
   47.19 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   47.20 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   47.21 +//  Lesser General Public License for more details.
   47.22 +//
   47.23 +//  You should have received a copy of the GNU Lesser General Public
   47.24 +//  License along with this library; if not, write to the Free Software
   47.25 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   47.26 +
   47.27 +// Define BX_PLUGGABLE in files that can be compiled into plugins.  For
   47.28 +// platforms that require a special tag on exported symbols, BX_PLUGGABLE 
   47.29 +// is used to know when we are exporting symbols and when we are importing.
   47.30 +#define BX_PLUGGABLE
   47.31 +
   47.32 +#include "bochs.h"
   47.33 +#if BX_WITH_RFB
   47.34 +
   47.35 +#include "icon_bochs.h"
   47.36 +#include "font/vga.bitmap.h"
   47.37 +
   47.38 +class bx_rfb_gui_c : public bx_gui_c {
   47.39 +public:
   47.40 +  bx_rfb_gui_c (void) {}
   47.41 +  DECLARE_GUI_VIRTUAL_METHODS()
   47.42 +};
   47.43 +
   47.44 +// declare one instance of the gui object and call macro to insert the
   47.45 +// plugin code
   47.46 +static bx_rfb_gui_c *theGui = NULL;
   47.47 +IMPLEMENT_GUI_PLUGIN_CODE(rfb)
   47.48 +
   47.49 +#define LOG_THIS theGui->
   47.50 +
   47.51 +#ifdef WIN32
   47.52 +
   47.53 +#include <winsock.h>
   47.54 +#include <process.h>
   47.55 +#include "rfb.h"
   47.56 +
   47.57 +#else
   47.58 +
   47.59 +#include <sys/socket.h>
   47.60 +#include <netinet/tcp.h>
   47.61 +#include <netinet/in.h>
   47.62 +#include <unistd.h>
   47.63 +#include <sys/errno.h>
   47.64 +#include <pthread.h>
   47.65 +typedef unsigned long CARD32;
   47.66 +typedef unsigned short CARD16;
   47.67 +typedef short INT16;
   47.68 +typedef unsigned char  CARD8;
   47.69 +typedef int SOCKET;
   47.70 +
   47.71 +#endif
   47.72 +
   47.73 +#include "rfbproto.h"
   47.74 +
   47.75 +static bool keep_alive;
   47.76 +static bool client_connected;
   47.77 +
   47.78 +#define BX_RFB_PORT_MIN 5900
   47.79 +#define BX_RFB_PORT_MAX 5949
   47.80 +static unsigned short rfbPort;
   47.81 +
   47.82 +// Headerbar stuff
   47.83 +unsigned rfbBitmapCount = 0;
   47.84 +struct {
   47.85 +	char     *bmap;
   47.86 +	unsigned xdim;
   47.87 +	unsigned ydim;
   47.88 +} rfbBitmaps[BX_MAX_PIXMAPS];
   47.89 +
   47.90 +unsigned rfbHeaderbarBitmapCount = 0;
   47.91 +struct {
   47.92 +	unsigned int index;
   47.93 +	unsigned int xorigin;
   47.94 +	unsigned int yorigin;
   47.95 +	unsigned int alignment;
   47.96 +	void (*f)(void);
   47.97 +} rfbHeaderbarBitmaps[BX_MAX_HEADERBAR_ENTRIES];
   47.98 +
   47.99 +//Keyboard stuff
  47.100 +#define KEYBOARD true
  47.101 +#define MOUSE    false
  47.102 +#define MAX_KEY_EVENTS 512
  47.103 +struct {
  47.104 +	bool type;
  47.105 +	int  key;
  47.106 +	int  down;
  47.107 +	int  x;
  47.108 +	int  y;
  47.109 +} rfbKeyboardEvent[MAX_KEY_EVENTS];
  47.110 +static unsigned long rfbKeyboardEvents = 0;
  47.111 +static bool          bKeyboardInUse = false;
  47.112 +
  47.113 +// Misc Stuff
  47.114 +struct {
  47.115 +	unsigned int x;
  47.116 +	unsigned int y;
  47.117 +	unsigned int width;
  47.118 +	unsigned int height;
  47.119 +	bool updated;
  47.120 +} rfbUpdateRegion;
  47.121 +
  47.122 +static char  *rfbScreen;
  47.123 +static char  rfbPallet[256];
  47.124 +
  47.125 +static long  rfbDimensionX, rfbDimensionY;
  47.126 +static long  rfbStretchedX, rfbStretchedY;
  47.127 +static long  rfbHeaderbarY;
  47.128 +static long  rfbTileX = 0;
  47.129 +static long  rfbTileY = 0;
  47.130 +static unsigned long  rfbCursorX = 0;
  47.131 +static unsigned long  rfbCursorY = 0;
  47.132 +static unsigned long  rfbOriginLeft  = 0;
  47.133 +static unsigned long  rfbOriginRight = 0;
  47.134 +
  47.135 +static unsigned int text_rows=25, text_cols=80;
  47.136 +static unsigned int font_height=16, font_width=8;
  47.137 +
  47.138 +//static unsigned long ServerThread   = 0;
  47.139 +//static unsigned long ServerThreadID = 0;
  47.140 +
  47.141 +static SOCKET sGlobal;
  47.142 +
  47.143 +void ServerThreadInit(void *indata);
  47.144 +void HandleRfbClient(SOCKET sClient);
  47.145 +int  ReadExact(int sock, char *buf, int len);
  47.146 +int  WriteExact(int sock, char *buf, int len);
  47.147 +void DrawBitmap(int x, int y, int width, int height, char *bmap, char color, bool update_client);
  47.148 +void DrawChar(int x, int y, int width, int height, int fonty, char *bmap, char color);
  47.149 +void UpdateScreen(unsigned char *newBits, int x, int y, int width, int height, bool update_client);
  47.150 +void SendUpdate(int x, int y, int width, int height);
  47.151 +void StartThread();
  47.152 +void rfbKeyPressed(Bit32u key, int press_release);
  47.153 +void rfbMouseMove(int x, int y, int bmask);
  47.154 +void DrawColorPallet();
  47.155 +
  47.156 +static const rfbPixelFormat BGR233Format = {
  47.157 +    8, 8, 1, 1, 7, 7, 3, 0, 3, 6
  47.158 +};
  47.159 +
  47.160 +// Set this for the endian of your machine. 0 = big, 1 = little 
  47.161 +static const int rfbEndianTest = 1;
  47.162 +
  47.163 +#define Swap16(s) ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff))
  47.164 +#define Swap32(l) (((l) >> 24) | (((l) & 0x00ff0000) >> 8)  | (((l) & 0x0000ff00) << 8)  | ((l) << 24))
  47.165 +#define Swap16IfLE(s) (*(const char *)&rfbEndianTest ? Swap16(s) : (s))
  47.166 +#define Swap32IfLE(l) (*(const char *)&rfbEndianTest ? Swap32(l) : (l))
  47.167 +#define PF_EQ(x,y) ((x.bitsPerPixel == y.bitsPerPixel) && (x.depth == y.depth) && (x.trueColour == y.trueColour) &&	((x.bigEndian == y.bigEndian) || (x.bitsPerPixel == 8)) && (!x.trueColour || ((x.redMax == y.redMax) &&	(x.greenMax == y.greenMax) && (x.blueMax == y.blueMax) && (x.redShift == y.redShift) && (x.greenShift == y.greenShift) && (x.blueShift == y.blueShift))))
  47.168 +
  47.169 +// This file defines stubs for the GUI interface, which is a
  47.170 +// place to start if you want to port bochs to a platform, for
  47.171 +// which there is no support for your native GUI, or if you want to compile
  47.172 +// bochs without any native GUI support (no output window or
  47.173 +// keyboard input will be possible).
  47.174 +// Look in 'x.cc', 'beos.cc', and 'win32.cc' for specific
  47.175 +// implementations of this interface.  -Kevin
  47.176 +
  47.177 +
  47.178 +// ::SPECIFIC_INIT()
  47.179 +//
  47.180 +// Called from gui.cc, once upon program startup, to allow for the
  47.181 +// specific GUI code (X11, BeOS, ...) to be initialized.
  47.182 +//
  47.183 +// argc, argv: not used right now, but the intention is to pass native GUI
  47.184 +//     specific options from the command line.  (X11 options, BeOS options,...)
  47.185 +//
  47.186 +// tilewidth, tileheight: for optimization, graphics_tile_update() passes
  47.187 +//     only updated regions of the screen to the gui code to be redrawn.
  47.188 +//     These define the dimensions of a region (tile).
  47.189 +// headerbar_y:  A headerbar (toolbar) is display on the top of the
  47.190 +//     VGA window, showing floppy status, and other information.  It
  47.191 +//     always assumes the width of the current VGA mode width, but
  47.192 +//     it's height is defined by this parameter.
  47.193 +
  47.194 +void bx_rfb_gui_c::specific_init(int argc, char **argv, unsigned tilewidth, unsigned tileheight, unsigned headerbar_y)
  47.195 +{
  47.196 +  unsigned char fc, vc;
  47.197 +
  47.198 +  put("RFB");
  47.199 +  UNUSED(bochs_icon_bits);
  47.200 +
  47.201 +  // the ask menu doesn't work on the client side
  47.202 +  io->set_log_action(LOGLEV_PANIC, ACT_FATAL);
  47.203 +
  47.204 +  rfbHeaderbarY = headerbar_y;
  47.205 +  rfbDimensionX = 640;
  47.206 +  rfbDimensionY = 480 + rfbHeaderbarY;
  47.207 +  rfbStretchedX = rfbDimensionX;
  47.208 +  rfbStretchedY = rfbDimensionY;
  47.209 +  rfbTileX      = tilewidth;
  47.210 +  rfbTileY      = tileheight;
  47.211 +
  47.212 +  for(int i = 0; i < 256; i++) {
  47.213 +    for(int j = 0; j < 16; j++) {
  47.214 +      vc = bx_vgafont[i].data[j];
  47.215 +      fc = 0;
  47.216 +      for (int b = 0; b < 8; b++) {
  47.217 +        fc |= (vc & 0x01) << (7 - b);
  47.218 +        vc >>= 1;
  47.219 +      }
  47.220 +      vga_charmap[i*32+j] = fc;
  47.221 +    }
  47.222 +  }
  47.223 +
  47.224 +  rfbScreen = (char *)malloc(rfbDimensionX * rfbDimensionY); 
  47.225 +  memset(&rfbPallet, 0, sizeof(rfbPallet));
  47.226 +  rfbPallet[63] = (char)0xFF;
  47.227 +
  47.228 +  rfbUpdateRegion.x = rfbDimensionX;
  47.229 +  rfbUpdateRegion.y = rfbDimensionY;
  47.230 +  rfbUpdateRegion.width  = 0;
  47.231 +  rfbUpdateRegion.height = 0;
  47.232 +  rfbUpdateRegion.updated = false;
  47.233 +
  47.234 +  keep_alive = true;
  47.235 +  client_connected = false;
  47.236 +  StartThread();
  47.237 +
  47.238 +#ifdef WIN32
  47.239 +  Sleep(1000);
  47.240 +  SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
  47.241 +#endif
  47.242 +  if (bx_options.Oprivate_colormap->get ()) {
  47.243 +    BX_ERROR(( "private_colormap option ignored." ));
  47.244 +  }
  47.245 +  int counter = 30;
  47.246 +  while ((!client_connected) && (counter--)) {
  47.247 +#ifdef WIN32
  47.248 +    Sleep(1000);
  47.249 +#else
  47.250 +    sleep(1);
  47.251 +#endif
  47.252 +  }
  47.253 +  if (counter < 0) BX_PANIC(("timeout! no client present"));
  47.254 +}
  47.255 +
  47.256 +bool InitWinsock()
  47.257 +{
  47.258 +#ifdef WIN32
  47.259 +	WSADATA wsaData;
  47.260 +	if(WSAStartup(MAKEWORD(1,1), &wsaData) != 0) return false;
  47.261 +#endif
  47.262 +	return true;
  47.263 +}
  47.264 +
  47.265 +bool StopWinsock()
  47.266 +{
  47.267 +#ifdef WIN32
  47.268 +	WSACleanup();
  47.269 +#endif
  47.270 +	return true;
  47.271 +}
  47.272 +
  47.273 +void ServerThreadInit(void *indata) 
  47.274 +{
  47.275 +	SOCKET             sServer;
  47.276 +	SOCKET             sClient;
  47.277 +	struct sockaddr_in sai;
  47.278 +	unsigned int       sai_size;
  47.279 +	int port_ok = 0;
  47.280 +
  47.281 +#ifdef WIN32
  47.282 +	SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE);
  47.283 +#endif
  47.284 +	if(!InitWinsock()) {
  47.285 +		BX_PANIC(( "could not initialize winsock."));
  47.286 +		goto end_of_thread;
  47.287 +	}
  47.288 +
  47.289 +	sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  47.290 +	if(sServer == -1) { 
  47.291 +		BX_PANIC(( "could not create socket." ));
  47.292 +		goto end_of_thread;
  47.293 +	}
  47.294 +	for (rfbPort = BX_RFB_PORT_MIN; rfbPort <= BX_RFB_PORT_MAX; rfbPort++) {
  47.295 +	  sai.sin_addr.s_addr = INADDR_ANY;
  47.296 +	  sai.sin_family      = AF_INET;
  47.297 +	  sai.sin_port        = htons(rfbPort);
  47.298 +	  BX_INFO (("Trying port %d", rfbPort));
  47.299 +	  if(bind(sServer, (struct sockaddr *)&sai, sizeof(sai)) == -1) {
  47.300 +		  BX_INFO(( "Could not bind socket."));
  47.301 +		  continue;
  47.302 +	  }
  47.303 +	  if(listen(sServer, SOMAXCONN) == -1) {
  47.304 +		  BX_INFO(( "Could not listen on socket."));
  47.305 +		  continue;
  47.306 +	  }
  47.307 +	  // success
  47.308 +	  port_ok = 1;
  47.309 +	  break;
  47.310 +	}
  47.311 +	if (!port_ok) {
  47.312 +	  BX_PANIC (("RFB could not bind any port between %d and %d\n", 
  47.313 +		BX_RFB_PORT_MIN,
  47.314 +		BX_RFB_PORT_MAX));
  47.315 +	  goto end_of_thread;
  47.316 +	}
  47.317 +	BX_INFO (("listening for connections on port %i", rfbPort));
  47.318 +	fprintf (stderr, "RFB: listening for connections on port %i\n", rfbPort);
  47.319 +	sai_size = sizeof(sai);
  47.320 +	while(keep_alive) {
  47.321 +		sClient = accept(sServer, (struct sockaddr *)&sai, (socklen_t*)&sai_size);
  47.322 +		if(sClient != -1) {
  47.323 +			HandleRfbClient(sClient);
  47.324 +			sGlobal = -1;
  47.325 +			close(sClient);
  47.326 +		} else {
  47.327 +			close(sClient);
  47.328 +		}
  47.329 +	}
  47.330 +
  47.331 +end_of_thread:
  47.332 +	StopWinsock();
  47.333 +}
  47.334 +
  47.335 +void HandleRfbClient(SOCKET sClient) 
  47.336 +{
  47.337 +	char rfbName[] = "Bochs-RFB";
  47.338 +	rfbProtocolVersionMsg pv;
  47.339 +	int one = 1;
  47.340 +	CARD32 auth;
  47.341 +	rfbClientInitMsg cim;
  47.342 +	rfbServerInitMsg sim;
  47.343 +
  47.344 +	client_connected = true;
  47.345 +	setsockopt(sClient, IPPROTO_TCP, TCP_NODELAY, (const char *)&one, sizeof(one));
  47.346 +	fprintf(stderr, "# RFB: accepted client connection.\n");
  47.347 +	sprintf(pv, rfbProtocolVersionFormat, rfbProtocolMajorVersion, rfbProtocolMinorVersion);
  47.348 +
  47.349 +	if(WriteExact(sClient, pv, sz_rfbProtocolVersionMsg) < 0) {
  47.350 +		fprintf(stderr, "# ERROR: RFB: could not send protocol version.\n");
  47.351 +		return;
  47.352 +	}
  47.353 +	if(ReadExact(sClient, pv, sz_rfbProtocolVersionMsg) < 0) {
  47.354 +		fprintf(stderr, "# ERROR: RFB: could not recieve client protocol version.\n");
  47.355 +		return;
  47.356 +	}
  47.357 +
  47.358 +	auth = Swap32IfLE(rfbNoAuth);
  47.359 +	if(WriteExact(sClient, (char *)&auth, sizeof(auth)) < 0) {
  47.360 +		fprintf(stderr, "# ERROR: RFB: could not send authorization method.\n");
  47.361 +		return;
  47.362 +	}
  47.363 +
  47.364 +	if(ReadExact(sClient, (char *)&cim, sz_rfbClientInitMsg) < 0) {
  47.365 +		fprintf(stderr, "# ERROR: RFB: could not recieve client initialization message.\n");
  47.366 +		return;
  47.367 +	}
  47.368 +
  47.369 +	sim.framebufferWidth  = Swap16IfLE((short)rfbDimensionX);
  47.370 +	sim.framebufferHeight = Swap16IfLE((short)rfbDimensionY);
  47.371 +	sim.format            = BGR233Format;
  47.372 +	sim.format.redMax     = Swap16IfLE(sim.format.redMax);
  47.373 +	sim.format.greenMax   = Swap16IfLE(sim.format.greenMax);
  47.374 +	sim.format.blueMax    = Swap16IfLE(sim.format.blueMax);
  47.375 +	sim.nameLength = strlen(rfbName);
  47.376 +	sim.nameLength = Swap32IfLE(sim.nameLength);
  47.377 +	if(WriteExact(sClient, (char *)&sim, sz_rfbServerInitMsg) < 0) {
  47.378 +		fprintf(stderr, "# ERROR: RFB: could send server initialization message.\n");
  47.379 +		return;
  47.380 +	}
  47.381 +	if(WriteExact(sClient, rfbName, strlen(rfbName)) < 0) {
  47.382 +		fprintf(stderr, "# ERROR: RFB: could not send server name.\n");
  47.383 +		return;
  47.384 +	}
  47.385 +
  47.386 +	sGlobal = sClient;
  47.387 +	while(keep_alive) {
  47.388 +		CARD8 msgType;
  47.389 +		int n;
  47.390 +
  47.391 +		if((n = recv(sClient, (char *)&msgType, 1, MSG_PEEK)) <= 0) {
  47.392 +			if(n == 0) {
  47.393 +				fprintf(stderr, "# RFB: client closed connection.\n");
  47.394 +			} else {
  47.395 +				fprintf(stderr, "# RFB: error recieving data.\n");
  47.396 +			}
  47.397 +			return;
  47.398 +		}
  47.399 +		
  47.400 +		switch(msgType) {
  47.401 +		case rfbSetPixelFormat:
  47.402 +			{
  47.403 +				rfbSetPixelFormatMsg spf;
  47.404 +				ReadExact(sClient, (char *)&spf, sizeof(rfbSetPixelFormatMsg));
  47.405 +
  47.406 +				spf.format.bitsPerPixel = spf.format.bitsPerPixel;
  47.407 +				spf.format.depth = spf.format.depth;
  47.408 +				spf.format.trueColour = (spf.format.trueColour ? 1 : 0);
  47.409 +				spf.format.bigEndian = (spf.format.bigEndian ? 1 : 0);
  47.410 +				spf.format.redMax = Swap16IfLE(spf.format.redMax);
  47.411 +				spf.format.greenMax = Swap16IfLE(spf.format.greenMax);
  47.412 +				spf.format.blueMax = Swap16IfLE(spf.format.blueMax);
  47.413 +				spf.format.redShift = spf.format.redShift;
  47.414 +				spf.format.greenShift = spf.format.greenShift;
  47.415 +				spf.format.blueShift = spf.format.blueShift;
  47.416 +				
  47.417 +				if (!PF_EQ(spf.format, BGR233Format)) {
  47.418 +					fprintf(stderr,"# ERROR: RFB: client has wrong pixel format\n");
  47.419 +					//return;
  47.420 +				}
  47.421 +				break;
  47.422 +			}
  47.423 +		case rfbFixColourMapEntries:
  47.424 +			{
  47.425 +				rfbFixColourMapEntriesMsg fcme;
  47.426 +				ReadExact(sClient, (char *)&fcme, sizeof(rfbFixColourMapEntriesMsg));
  47.427 +				break;
  47.428 +			}
  47.429 +		case rfbSetEncodings:
  47.430 +			{
  47.431 +				rfbSetEncodingsMsg se;
  47.432 +				int                i;
  47.433 +				CARD32             enc;
  47.434 +				ReadExact(sClient, (char *)&se, sizeof(rfbSetEncodingsMsg));
  47.435 +				se.nEncodings = Swap16IfLE(se.nEncodings);
  47.436 +				for(i = 0; i < se.nEncodings; i++) {
  47.437 +					if((n = ReadExact(sClient, (char *)&enc, sizeof(CARD32))) <= 0) {
  47.438 +						if(n == 0) {
  47.439 +							fprintf(stderr, "# RFB: client closed connection.\n");
  47.440 +						} else {
  47.441 +							fprintf(stderr, "# RFB: error recieving data.\n");
  47.442 +						}
  47.443 +						return;
  47.444 +					}
  47.445 +				}
  47.446 +				break;
  47.447 +			}
  47.448 +		case rfbFramebufferUpdateRequest:
  47.449 +			{
  47.450 +				rfbFramebufferUpdateRequestMsg fur;
  47.451 +
  47.452 +				ReadExact(sClient, (char *)&fur, sizeof(rfbFramebufferUpdateRequestMsg));
  47.453 +				if(!fur.incremental) {
  47.454 +					rfbUpdateRegion.x = 0;
  47.455 +					rfbUpdateRegion.y = 0;
  47.456 +					rfbUpdateRegion.width  = rfbDimensionX;
  47.457 +					rfbUpdateRegion.height = rfbDimensionY;
  47.458 +					rfbUpdateRegion.updated = true;
  47.459 +				} //else {
  47.460 +				//	if(fur.x < rfbUpdateRegion.x) rfbUpdateRegion.x = fur.x;
  47.461 +				//	if(fur.y < rfbUpdateRegion.x) rfbUpdateRegion.y = fur.y;
  47.462 +				//	if(((fur.x + fur.w) - rfbUpdateRegion.x) > rfbUpdateRegion.width) rfbUpdateRegion.width = ((fur.x + fur.w) - rfbUpdateRegion.x);
  47.463 +				//	if(((fur.y + fur.h) - rfbUpdateRegion.y) > rfbUpdateRegion.height) rfbUpdateRegion.height = ((fur.y + fur.h) - rfbUpdateRegion.y);
  47.464 +				//}
  47.465 +				//rfbUpdateRegion.updated = true;
  47.466 +				break;
  47.467 +			}
  47.468 +		case rfbKeyEvent:
  47.469 +			{
  47.470 +				rfbKeyEventMsg ke;
  47.471 +				ReadExact(sClient, (char *)&ke, sizeof(rfbKeyEventMsg));
  47.472 +				ke.key = Swap32IfLE(ke.key);
  47.473 +				while(bKeyboardInUse);
  47.474 +				bKeyboardInUse = true;
  47.475 +				if (rfbKeyboardEvents >= MAX_KEY_EVENTS) break;
  47.476 +				rfbKeyboardEvent[rfbKeyboardEvents].type = KEYBOARD;
  47.477 +				rfbKeyboardEvent[rfbKeyboardEvents].key  = ke.key;
  47.478 +				rfbKeyboardEvent[rfbKeyboardEvents].down = ke.down;
  47.479 +				rfbKeyboardEvents++;
  47.480 +				bKeyboardInUse = false;
  47.481 +				break;
  47.482 +			}
  47.483 +		case rfbPointerEvent:
  47.484 +			{	
  47.485 +				rfbPointerEventMsg pe;
  47.486 +				ReadExact(sClient, (char *)&pe, sizeof(rfbPointerEventMsg));
  47.487 +				while(bKeyboardInUse);
  47.488 +				bKeyboardInUse = true;
  47.489 +				if (rfbKeyboardEvents >= MAX_KEY_EVENTS) break;
  47.490 +				rfbKeyboardEvent[rfbKeyboardEvents].type = MOUSE;
  47.491 +				rfbKeyboardEvent[rfbKeyboardEvents].x    = Swap16IfLE(pe.x);
  47.492 +				rfbKeyboardEvent[rfbKeyboardEvents].y    = Swap16IfLE(pe.y);
  47.493 +				rfbKeyboardEvent[rfbKeyboardEvents].down = pe.buttonMask;
  47.494 +				rfbKeyboardEvents++;
  47.495 +				bKeyboardInUse = false;
  47.496 +				break;
  47.497 +			}
  47.498 +		case rfbClientCutText:
  47.499 +			{
  47.500 +				rfbClientCutTextMsg cct;
  47.501 +				ReadExact(sClient, (char *)&cct, sizeof(rfbClientCutTextMsg));
  47.502 +				break;
  47.503 +			}
  47.504 +		}
  47.505 +	}
  47.506 +}
  47.507 +// ::HANDLE_EVENTS()
  47.508 +//
  47.509 +// Called periodically (vga_update_interval in .bochsrc) so the
  47.510 +// the gui code can poll for keyboard, mouse, and other
  47.511 +// relevant events.
  47.512 +
  47.513 +void bx_rfb_gui_c::handle_events(void)
  47.514 +{
  47.515 +	unsigned int i = 0;
  47.516 +	while(bKeyboardInUse);
  47.517 +	bKeyboardInUse = true;
  47.518 +	if(rfbKeyboardEvents > 0) {
  47.519 +		for(i = 0; i < rfbKeyboardEvents; i++) {
  47.520 +			if(rfbKeyboardEvent[i].type == KEYBOARD) {
  47.521 +				rfbKeyPressed(rfbKeyboardEvent[i].key, rfbKeyboardEvent[i].down);
  47.522 +			} else { //type == MOUSE;
  47.523 +				rfbMouseMove(rfbKeyboardEvent[i].x, rfbKeyboardEvent[i].y, rfbKeyboardEvent[i].down);
  47.524 +			}
  47.525 +		}
  47.526 +		rfbKeyboardEvents = 0;
  47.527 +	}
  47.528 +	bKeyboardInUse = false;
  47.529 +
  47.530 +	if(rfbUpdateRegion.updated) {
  47.531 +		SendUpdate(rfbUpdateRegion.x, rfbUpdateRegion.y, rfbUpdateRegion.width, rfbUpdateRegion.height);
  47.532 +		rfbUpdateRegion.x = rfbDimensionX;
  47.533 +		rfbUpdateRegion.y = rfbDimensionY;
  47.534 +		rfbUpdateRegion.width  = 0;
  47.535 +		rfbUpdateRegion.height = 0;
  47.536 +	}
  47.537 +	rfbUpdateRegion.updated = false;
  47.538 +}
  47.539 +
  47.540 +
  47.541 +// ::FLUSH()
  47.542 +//
  47.543 +// Called periodically, requesting that the gui code flush all pending
  47.544 +// screen update requests.
  47.545 +
  47.546 +void bx_rfb_gui_c::flush(void)
  47.547 +{
  47.548 +}
  47.549 +
  47.550 +
  47.551 +// ::CLEAR_SCREEN()
  47.552 +//
  47.553 +// Called to request that the VGA region is cleared.  Don't
  47.554 +// clear the area that defines the headerbar.
  47.555 +void bx_rfb_gui_c::clear_screen(void)
  47.556 +{
  47.557 +	memset(&rfbScreen[rfbDimensionX * rfbHeaderbarY], 0, rfbDimensionX * (rfbDimensionY - rfbHeaderbarY));
  47.558 +}
  47.559 +
  47.560 +
  47.561 +
  47.562 +// ::TEXT_UPDATE()
  47.563 +//
  47.564 +// Called in a VGA text mode, to update the screen with
  47.565 +// new content.
  47.566 +//
  47.567 +// old_text: array of character/attributes making up the contents
  47.568 +//           of the screen from the last call.  See below
  47.569 +// new_text: array of character/attributes making up the current
  47.570 +//           contents, which should now be displayed.  See below
  47.571 +//
  47.572 +// format of old_text & new_text: each is 4000 bytes long.
  47.573 +//     This represents 80 characters wide by 25 high, with
  47.574 +//     each character being 2 bytes.  The first by is the
  47.575 +//     character value, the second is the attribute byte.
  47.576 +//     I currently don't handle the attribute byte.
  47.577 +//
  47.578 +// cursor_x: new x location of cursor
  47.579 +// cursor_y: new y location of cursor
  47.580 +
  47.581 +void bx_rfb_gui_c::text_update(Bit8u *old_text, Bit8u *new_text, unsigned long cursor_x, unsigned long cursor_y, bx_vga_tminfo_t tm_info, unsigned nrows)
  47.582 +{
  47.583 +  unsigned char *old_line, *new_line;
  47.584 +  unsigned char cAttr, cChar;
  47.585 +  unsigned int  curs, hchars, offset, rows, x, y, xc, yc;
  47.586 +  bx_bool force_update=0;
  47.587 +
  47.588 +  UNUSED(nrows);
  47.589 +
  47.590 +  if(charmap_updated) {
  47.591 +    force_update = 1;
  47.592 +    charmap_updated = 0;
  47.593 +  }
  47.594 +
  47.595 +  // first invalidate character at previous and new cursor location
  47.596 +  if ( (rfbCursorY < text_rows) && (rfbCursorX < text_cols) ) {
  47.597 +    curs = rfbCursorY * tm_info.line_offset + rfbCursorX * 2;
  47.598 +    old_text[curs] = ~new_text[curs];
  47.599 +  }
  47.600 +  if((tm_info.cs_start <= tm_info.cs_end) && (tm_info.cs_start < font_height) &&
  47.601 +     (cursor_y < text_rows) && (cursor_x < text_cols)) {
  47.602 +    curs = cursor_y * tm_info.line_offset + cursor_x * 2;
  47.603 +    old_text[curs] = ~new_text[curs];
  47.604 +  } else {
  47.605 +    curs = 0xffff;
  47.606 +  }
  47.607 +
  47.608 +  rows = text_rows;
  47.609 +  y = 0;
  47.610 +  do {
  47.611 +    hchars = text_cols;
  47.612 +    new_line = new_text;
  47.613 +    old_line = old_text;
  47.614 +    offset = y * tm_info.line_offset;
  47.615 +    yc = y * font_height + rfbHeaderbarY;
  47.616 +    x = 0;
  47.617 +    do {
  47.618 +      if (force_update || (old_text[0] != new_text[0])
  47.619 +          || (old_text[1] != new_text[1])) {
  47.620 +        cChar = new_text[0];
  47.621 +        cAttr = new_text[1];
  47.622 +        xc = x * 8;
  47.623 +        DrawChar(xc, yc, 8, font_height, 0, (char *)&vga_charmap[cChar<<5], cAttr);
  47.624 +        if(yc < rfbUpdateRegion.y) rfbUpdateRegion.y = yc;
  47.625 +        if((yc + font_height - rfbUpdateRegion.y) > rfbUpdateRegion.height) rfbUpdateRegion.height = (yc + font_height - rfbUpdateRegion.y);
  47.626 +        if(xc < rfbUpdateRegion.x) rfbUpdateRegion.x = xc;
  47.627 +        if((xc + 8 - rfbUpdateRegion.x) > rfbUpdateRegion.width) rfbUpdateRegion.width = (xc + 8 - rfbUpdateRegion.x);
  47.628 +        rfbUpdateRegion.updated = true;
  47.629 +	if (offset == curs) {
  47.630 +          cAttr = ((cAttr >> 4) & 0xF) + ((cAttr & 0xF) << 4);
  47.631 +          DrawChar(xc, yc + tm_info.cs_start, 8, tm_info.cs_end - tm_info.cs_start + 1,
  47.632 +                   tm_info.cs_start, (char *)&vga_charmap[cChar<<5], cAttr);
  47.633 +        }
  47.634 +      }
  47.635 +      x++;
  47.636 +      new_text+=2;
  47.637 +      old_text+=2;
  47.638 +      offset+=2;
  47.639 +    } while (--hchars);
  47.640 +    y++;
  47.641 +    new_text = new_line + tm_info.line_offset;
  47.642 +    old_text = old_line + tm_info.line_offset;
  47.643 +  } while (--rows);
  47.644 +
  47.645 +  rfbCursorX = cursor_x;
  47.646 +  rfbCursorY = cursor_y;
  47.647 +}
  47.648 +
  47.649 +  int
  47.650 +bx_rfb_gui_c::get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)
  47.651 +{
  47.652 +  return 0;
  47.653 +}
  47.654 +
  47.655 +  int
  47.656 +bx_rfb_gui_c::set_clipboard_text(char *text_snapshot, Bit32u len)
  47.657 +{
  47.658 +  return 0;
  47.659 +}
  47.660 +
  47.661 +
  47.662 +// ::PALETTE_CHANGE()
  47.663 +//
  47.664 +// Allocate a color in the native GUI, for this color, and put
  47.665 +// it in the colormap location 'index'.
  47.666 +// returns: 0=no screen update needed (color map change has direct effect)
  47.667 +//          1=screen updated needed (redraw using current colormap)
  47.668 +
  47.669 +bx_bool bx_rfb_gui_c::palette_change(unsigned index, unsigned red, unsigned green, unsigned blue)
  47.670 +{
  47.671 +	rfbPallet[index] = (((red * 7 + 127) / 255) << 0) | (((green * 7 + 127) / 255) << 3) | (((blue * 3 + 127) / 255) << 6);
  47.672 +	return(1);
  47.673 +}
  47.674 +
  47.675 +
  47.676 +// ::GRAPHICS_TILE_UPDATE()
  47.677 +//
  47.678 +// Called to request that a tile of graphics be drawn to the
  47.679 +// screen, since info in this region has changed.
  47.680 +//
  47.681 +// tile: array of 8bit values representing a block of pixels with
  47.682 +//       dimension equal to the 'tilewidth' & 'tileheight' parameters to
  47.683 +//       ::specific_init().  Each value specifies an index into the
  47.684 +//       array of colors you allocated for ::palette_change()
  47.685 +// x0: x origin of tile
  47.686 +// y0: y origin of tile
  47.687 +//
  47.688 +// note: origin of tile and of window based on (0,0) being in the upper
  47.689 +//       left of the window.
  47.690 +void bx_rfb_gui_c::graphics_tile_update(Bit8u *tile, unsigned x0, unsigned y0)
  47.691 +{
  47.692 +	UpdateScreen(tile, x0, y0 + rfbHeaderbarY, rfbTileX, rfbTileY, false);
  47.693 +	if(x0 < rfbUpdateRegion.x) rfbUpdateRegion.x = x0;
  47.694 +	if((y0 + rfbHeaderbarY) < rfbUpdateRegion.y) rfbUpdateRegion.y = y0 + rfbHeaderbarY;
  47.695 +	if(((y0 + rfbHeaderbarY + rfbTileY) - rfbUpdateRegion.y) > rfbUpdateRegion.height) rfbUpdateRegion.height =  ((y0 + rfbHeaderbarY + rfbTileY) - rfbUpdateRegion.y);
  47.696 +	if(((x0 + rfbTileX) - rfbUpdateRegion.x) > rfbUpdateRegion.width) rfbUpdateRegion.width = ((x0 + rfbTileX) - rfbUpdateRegion.x);
  47.697 +	rfbUpdateRegion.updated = true;
  47.698 +}
  47.699 +
  47.700 +
  47.701 +
  47.702 +// ::DIMENSION_UPDATE()
  47.703 +//
  47.704 +// Called when the VGA mode changes it's X,Y dimensions.
  47.705 +// Resize the window to this size, but you need to add on
  47.706 +// the height of the headerbar to the Y value.
  47.707 +//
  47.708 +// x: new VGA x size
  47.709 +// y: new VGA y size (add headerbar_y parameter from ::specific_init().
  47.710 +// fheight: new VGA character height in text mode
  47.711 +// fwidth : new VGA character width in text mode
  47.712 +// bpp : bits per pixel in graphics mode
  47.713 +
  47.714 +  void
  47.715 +bx_rfb_gui_c::dimension_update(unsigned x, unsigned y, unsigned fheight, unsigned fwidth, unsigned bpp)
  47.716 +{
  47.717 +  if (bpp > 8) {
  47.718 +    BX_PANIC(("%d bpp graphics mode not supported yet", bpp));
  47.719 +  }
  47.720 +  if (fheight > 0) {
  47.721 +    font_height = fheight;
  47.722 +    font_width = fwidth;
  47.723 +    text_cols = x / fwidth;
  47.724 +    text_rows = y / fheight;
  47.725 +  } else {
  47.726 +    if ((x > 640) || (y > 480)) {
  47.727 +      BX_PANIC(("dimension_update(): RFB doesn't support graphics modes > 640x480 (%dx%d)", x, y));
  47.728 +    }
  47.729 +  }
  47.730 +}
  47.731 +
  47.732 +
  47.733 +// ::CREATE_BITMAP()
  47.734 +//
  47.735 +// Create a monochrome bitmap of size 'xdim' by 'ydim', which will
  47.736 +// be drawn in the headerbar.  Return an integer ID to the bitmap,
  47.737 +// with which the bitmap can be referenced later.
  47.738 +//
  47.739 +// bmap: packed 8 pixels-per-byte bitmap.  The pixel order is:
  47.740 +//       bit0 is the left most pixel, bit7 is the right most pixel.
  47.741 +// xdim: x dimension of bitmap
  47.742 +// ydim: y dimension of bitmap
  47.743 +
  47.744 +unsigned bx_rfb_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim)
  47.745 +{
  47.746 +	if(rfbBitmapCount >= BX_MAX_PIXMAPS) {
  47.747 +		fprintf(stderr, "# RFB: too many pixmaps.\n");
  47.748 +		return 0;
  47.749 +	}
  47.750 +	rfbBitmaps[rfbBitmapCount].bmap = (char *)malloc((xdim * ydim) / 8);
  47.751 +	rfbBitmaps[rfbBitmapCount].xdim = xdim;
  47.752 +	rfbBitmaps[rfbBitmapCount].ydim = ydim;
  47.753 +	memcpy(rfbBitmaps[rfbBitmapCount].bmap, bmap, (xdim * ydim) / 8);
  47.754 +	
  47.755 +	rfbBitmapCount++;
  47.756 +	return(rfbBitmapCount - 1);
  47.757 +}
  47.758 +
  47.759 +
  47.760 +// ::HEADERBAR_BITMAP()
  47.761 +//
  47.762 +// Called to install a bitmap in the bochs headerbar (toolbar).
  47.763 +//
  47.764 +// bmap_id: will correspond to an ID returned from
  47.765 +//     ::create_bitmap().  'alignment' is either BX_GRAVITY_LEFT
  47.766 +//     or BX_GRAVITY_RIGHT, meaning install the bitmap in the next
  47.767 +//     available leftmost or rightmost space.
  47.768 +// alignment: is either BX_GRAVITY_LEFT or BX_GRAVITY_RIGHT,
  47.769 +//     meaning install the bitmap in the next
  47.770 +//     available leftmost or rightmost space.
  47.771 +// f: a 'C' function pointer to callback when the mouse is clicked in
  47.772 +//     the boundaries of this bitmap.
  47.773 +
  47.774 +unsigned bx_rfb_gui_c::headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void))
  47.775 +{
  47.776 +	int hb_index;
  47.777 +
  47.778 +	if((rfbHeaderbarBitmapCount + 1) > BX_MAX_HEADERBAR_ENTRIES) {
  47.779 +		return 0;
  47.780 +	}
  47.781 +
  47.782 +	rfbHeaderbarBitmapCount++;
  47.783 +	hb_index = rfbHeaderbarBitmapCount - 1;
  47.784 +	rfbHeaderbarBitmaps[hb_index].index     = bmap_id;
  47.785 +	rfbHeaderbarBitmaps[hb_index].alignment = alignment;
  47.786 +	rfbHeaderbarBitmaps[hb_index].f = f;
  47.787 +	if (alignment == BX_GRAVITY_LEFT) {
  47.788 +		rfbHeaderbarBitmaps[hb_index].xorigin = rfbOriginLeft;
  47.789 +		rfbHeaderbarBitmaps[hb_index].yorigin = 0;
  47.790 +		rfbOriginLeft += rfbBitmaps[bmap_id].xdim;
  47.791 +	} else { // BX_GRAVITY_RIGHT
  47.792 +		rfbOriginRight += rfbBitmaps[bmap_id].xdim;
  47.793 +		rfbHeaderbarBitmaps[hb_index].xorigin = rfbOriginRight;
  47.794 +		rfbHeaderbarBitmaps[hb_index].yorigin = 0;
  47.795 +	}
  47.796 +	return hb_index;
  47.797 +}
  47.798 +
  47.799 +
  47.800 +// ::SHOW_HEADERBAR()
  47.801 +//
  47.802 +// Show (redraw) the current headerbar, which is composed of
  47.803 +// currently installed bitmaps.
  47.804 +
  47.805 +void bx_rfb_gui_c::show_headerbar(void)
  47.806 +{
  47.807 +  char *newBits;
  47.808 +  unsigned int i, xorigin;
  47.809 +
  47.810 +  newBits = (char *)malloc(rfbDimensionX * rfbHeaderbarY);
  47.811 +  memset(newBits, 0, (rfbDimensionX * rfbHeaderbarY));
  47.812 +  DrawBitmap(0, 0, rfbDimensionX, rfbHeaderbarY, newBits, (char)0xf0, false);
  47.813 +  for(i = 0; i < rfbHeaderbarBitmapCount; i++) {
  47.814 +    if(rfbHeaderbarBitmaps[i].alignment == BX_GRAVITY_LEFT) {
  47.815 +      xorigin = rfbHeaderbarBitmaps[i].xorigin;
  47.816 +    } else {
  47.817 +      xorigin = rfbDimensionX - rfbHeaderbarBitmaps[i].xorigin;
  47.818 +    }
  47.819 +    DrawBitmap(xorigin, 0, rfbBitmaps[rfbHeaderbarBitmaps[i].index].xdim, rfbBitmaps[rfbHeaderbarBitmaps[i].index].ydim, rfbBitmaps[rfbHeaderbarBitmaps[i].index].bmap, (char)0xf0, false);
  47.820 +  }
  47.821 +  free(newBits);
  47.822 +}
  47.823 +
  47.824 +
  47.825 +// ::REPLACE_BITMAP()
  47.826 +//
  47.827 +// Replace the bitmap installed in the headerbar ID slot 'hbar_id',
  47.828 +// with the one specified by 'bmap_id'.  'bmap_id' will have
  47.829 +// been generated by ::create_bitmap().  The old and new bitmap
  47.830 +// must be of the same size.  This allows the bitmap the user
  47.831 +// sees to change, when some action occurs.  For example when
  47.832 +// the user presses on the floppy icon, it then displays
  47.833 +// the ejected status.
  47.834 +//
  47.835 +// hbar_id: headerbar slot ID
  47.836 +// bmap_id: bitmap ID
  47.837 +
  47.838 +void bx_rfb_gui_c::replace_bitmap(unsigned hbar_id, unsigned bmap_id)
  47.839 +{
  47.840 +	rfbHeaderbarBitmaps[hbar_id].index = bmap_id;
  47.841 +}
  47.842 +
  47.843 +
  47.844 +// ::EXIT()
  47.845 +//
  47.846 +// Called before bochs terminates, to allow for a graceful
  47.847 +// exit from the native GUI mechanism.
  47.848 +void bx_rfb_gui_c::exit(void)
  47.849 +{
  47.850 +	unsigned int i;
  47.851 +	keep_alive = false;
  47.852 +	StopWinsock();
  47.853 +	free(rfbScreen);
  47.854 +	for(i = 0; i < rfbBitmapCount; i++) {
  47.855 +		free(rfbBitmaps[i].bmap);
  47.856 +	}
  47.857 +	fprintf(stderr, "# RFB: bx_rfb_gui_c::exit()\n");
  47.858 +}
  47.859 +
  47.860 +/*
  47.861 +* ReadExact reads an exact number of bytes on a TCP socket.  Returns 1 if
  47.862 +* those bytes have been read, 0 if the other end has closed, or -1 if an error
  47.863 +* occurred (errno is set to ETIMEDOUT if it timed out).
  47.864 +*/
  47.865 +
  47.866 +int ReadExact(int sock, char *buf, int len)
  47.867 +{
  47.868 +    int n;
  47.869 + 
  47.870 +    while (len > 0) {
  47.871 +	n = recv(sock, buf, len, 0);
  47.872 +	if (n > 0) {
  47.873 +	    buf += n;
  47.874 +	    len -= n;
  47.875 +        } else {
  47.876 +            return n;
  47.877 +	}
  47.878 +    }
  47.879 +    return 1;
  47.880 +}
  47.881 +
  47.882 +/*
  47.883 +* WriteExact writes an exact number of bytes on a TCP socket.  Returns 1 if
  47.884 +* those bytes have been written, or -1 if an error occurred (errno is set to
  47.885 +* ETIMEDOUT if it timed out).
  47.886 +*/
  47.887 +
  47.888 +int WriteExact(int sock, char *buf, int len)
  47.889 +{
  47.890 +    int n;
  47.891 +	
  47.892 +    while (len > 0) {
  47.893 +	n = send(sock, buf, len,0);
  47.894 +		
  47.895 +	if (n > 0) {
  47.896 +	    buf += n;
  47.897 +	    len -= n;
  47.898 +	} else if (n == 0) {
  47.899 +      	    fprintf(stderr,"WriteExact: write returned 0?\n");
  47.900 +	    return n;
  47.901 +        } else {
  47.902 +            return n;
  47.903 +	}
  47.904 +    }
  47.905 +    return 1;
  47.906 +}
  47.907 +
  47.908 +void DrawBitmap(int x, int y, int width, int height, char *bmap, char color, bool update_client)
  47.909 +{
  47.910 +	int  i;
  47.911 +	unsigned char *newBits;
  47.912 +	char fgcolor, bgcolor;
  47.913 +	char vgaPallet[] = { (char)0x00, //Black 
  47.914 +						 (char)0x01, //Dark Blue
  47.915 +						 (char)0x02, //Dark Green
  47.916 +						 (char)0x03, //Dark Cyan
  47.917 +						 (char)0x04, //Dark Red
  47.918 +						 (char)0x05, //Dark Magenta
  47.919 +						 (char)0x06, //Brown
  47.920 +						 (char)0x07, //Light Gray
  47.921 +						 (char)0x38, //Dark Gray
  47.922 +						 (char)0x09, //Light Blue
  47.923 +						 (char)0x12, //Green
  47.924 +						 (char)0x1B, //Cyan
  47.925 +						 (char)0x24, //Light Red
  47.926 +						 (char)0x2D, //Magenta
  47.927 +						 (char)0x36, //Yellow
  47.928 +						 (char)0x3F  //White
  47.929 +						};
  47.930 +
  47.931 +	bgcolor = vgaPallet[(color >> 4) & 0xF];
  47.932 +	fgcolor = vgaPallet[color & 0xF];
  47.933 +	newBits = (unsigned char *)malloc(width * height);
  47.934 +	memset(newBits, 0, (width * height));
  47.935 +	for(i = 0; i < (width * height) / 8; i++) {
  47.936 +		newBits[i * 8 + 0] = (bmap[i] & 0x01) ? fgcolor : bgcolor;
  47.937 +		newBits[i * 8 + 1] = (bmap[i] & 0x02) ? fgcolor : bgcolor;
  47.938 +		newBits[i * 8 + 2] = (bmap[i] & 0x04) ? fgcolor : bgcolor;
  47.939 +		newBits[i * 8 + 3] = (bmap[i] & 0x08) ? fgcolor : bgcolor;
  47.940 +		newBits[i * 8 + 4] = (bmap[i] & 0x10) ? fgcolor : bgcolor;
  47.941 +		newBits[i * 8 + 5] = (bmap[i] & 0x20) ? fgcolor : bgcolor;
  47.942 +		newBits[i * 8 + 6] = (bmap[i] & 0x40) ? fgcolor : bgcolor;
  47.943 +		newBits[i * 8 + 7] = (bmap[i] & 0x80) ? fgcolor : bgcolor;
  47.944 +	}
  47.945 +	UpdateScreen(newBits, x, y, width, height, update_client);
  47.946 +	//DrawColorPallet();
  47.947 +	free(newBits);
  47.948 +}
  47.949 +
  47.950 +void DrawChar(int x, int y, int width, int height, int fonty, char *bmap, char color)
  47.951 +{
  47.952 +  static unsigned char newBits[8 * 32];
  47.953 +  unsigned char mask;
  47.954 +  int bytes = width * height;
  47.955 +  char fgcolor, bgcolor;
  47.956 +  char vgaPallet[] = { (char)0x00, //Black
  47.957 +                       (char)0x01, //Dark Blue
  47.958 +                       (char)0x02, //Dark Green
  47.959 +                       (char)0x03, //Dark Cyan
  47.960 +                       (char)0x04, //Dark Red
  47.961 +                       (char)0x05, //Dark Magenta
  47.962 +                       (char)0x06, //Brown
  47.963 +                       (char)0x07, //Light Gray
  47.964 +                       (char)0x38, //Dark Gray
  47.965 +                       (char)0x09, //Light Blue
  47.966 +                       (char)0x12, //Green
  47.967 +                       (char)0x1B, //Cyan
  47.968 +                       (char)0x24, //Light Red
  47.969 +                       (char)0x2D, //Magenta
  47.970 +                       (char)0x36, //Yellow
  47.971 +                       (char)0x3F  //White
  47.972 +                     };
  47.973 +
  47.974 +  bgcolor = vgaPallet[(color >> 4) & 0xF];
  47.975 +  fgcolor = vgaPallet[color & 0xF];
  47.976 +
  47.977 +  for(int i = 0; i < bytes; i+=width) {
  47.978 +    mask = 0x80;
  47.979 +    for(int j = 0; j < width; j++) {
  47.980 +      newBits[i + j] = (bmap[fonty] & mask) ? fgcolor : bgcolor;
  47.981 +      mask >>= 1;
  47.982 +    }
  47.983 +    fonty++;
  47.984 +  }
  47.985 +  UpdateScreen(newBits, x, y, width, height, false);
  47.986 +  //DrawColorPallet();
  47.987 +}
  47.988 +
  47.989 +void DrawColorPallet()
  47.990 +{
  47.991 +	unsigned char bits[100];
  47.992 +	int x = 0, y = 0, c;
  47.993 +	for(c = 0; c < 256; c++) {
  47.994 +		memset(&bits, rfbPallet[c], 100);
  47.995 +		UpdateScreen(bits, x, y, 10, 10, false);
  47.996 +		x += 10;
  47.997 +		if(x > 70) {
  47.998 +			y += 10;
  47.999 +			x = 0;
 47.1000 +		}
 47.1001 +	}
 47.1002 +}
 47.1003 +
 47.1004 +void UpdateScreen(unsigned char *newBits, int x, int y, int width, int height, bool update_client)
 47.1005 +{
 47.1006 +	int i, c;
 47.1007 +	for(i = 0; i < height; i++) {
 47.1008 +		for(c = 0; c < width; c++) {
 47.1009 +			newBits[(i * width) + c] = rfbPallet[newBits[(i * width) + c]];
 47.1010 +		}
 47.1011 +		memcpy(&rfbScreen[y * rfbDimensionX + x], &newBits[i * width], width);
 47.1012 +		y++;
 47.1013 +	}
 47.1014 +	if(update_client) {
 47.1015 +		if(sGlobal == -1) return;
 47.1016 +		rfbFramebufferUpdateMsg fum;
 47.1017 +		rfbFramebufferUpdateRectHeader furh;
 47.1018 +		fum.type = rfbFramebufferUpdate;
 47.1019 +		fum.nRects = Swap16IfLE(1);
 47.1020 +		WriteExact(sGlobal, (char *)&fum, sz_rfbFramebufferUpdateMsg);
 47.1021 +		furh.r.x = Swap16IfLE(x);
 47.1022 +		furh.r.y = Swap16IfLE((y - i));
 47.1023 +		furh.r.w = Swap16IfLE((short)width);
 47.1024 +		furh.r.h = Swap16IfLE((short)height);
 47.1025 +		furh.encoding = Swap32IfLE(rfbEncodingRaw);
 47.1026 +		WriteExact(sGlobal, (char *)&furh, sz_rfbFramebufferUpdateRectHeader);
 47.1027 +		WriteExact(sGlobal, (char *)newBits, width * height);
 47.1028 +	}
 47.1029 +}
 47.1030 +
 47.1031 +void SendUpdate(int x, int y, int width, int height)
 47.1032 +{
 47.1033 +	char *newBits;
 47.1034 +	int  i;
 47.1035 +
 47.1036 +	if(x < 0 || y < 0 || (x + width) > rfbDimensionX || (y + height) > rfbDimensionY) {
 47.1037 +		fprintf(stderr, "# RFB: Dimensions out of bounds.  x=%i y=%i w=%i h=%i\n", x, y, width, height);
 47.1038 +	}
 47.1039 +	if(sGlobal != -1) {
 47.1040 +		rfbFramebufferUpdateMsg fum;
 47.1041 +		rfbFramebufferUpdateRectHeader furh;
 47.1042 +
 47.1043 +		fum.type = rfbFramebufferUpdate;
 47.1044 +		fum.nRects = Swap16IfLE(1);
 47.1045 +
 47.1046 +		furh.r.x = Swap16IfLE(x);
 47.1047 +		furh.r.y = Swap16IfLE(y);
 47.1048 +		furh.r.w = Swap16IfLE((short)width);
 47.1049 +		furh.r.h = Swap16IfLE((short)height);
 47.1050 +		furh.encoding = Swap32IfLE(rfbEncodingRaw);
 47.1051 +
 47.1052 +		newBits = (char *)malloc(width * height);
 47.1053 +		for(i = 0; i < height; i++) {
 47.1054 +			memcpy(&newBits[i * width], &rfbScreen[y * rfbDimensionX + x], width);
 47.1055 +			y++;
 47.1056 +		}
 47.1057 +
 47.1058 +		WriteExact(sGlobal, (char *)&fum, sz_rfbFramebufferUpdateMsg);
 47.1059 +		WriteExact(sGlobal, (char *)&furh, sz_rfbFramebufferUpdateRectHeader);
 47.1060 +		WriteExact(sGlobal, (char *)newBits, width * height);
 47.1061 +
 47.1062 +		free(newBits);
 47.1063 +	}
 47.1064 +}
 47.1065 +
 47.1066 +void StartThread()
 47.1067 +{
 47.1068 +#ifdef WIN32
 47.1069 +	_beginthread(ServerThreadInit, 0, NULL);
 47.1070 +#else
 47.1071 +	pthread_t      thread;
 47.1072 +	pthread_create(&thread, NULL, (void *(*)(void *))&ServerThreadInit, NULL);
 47.1073 +#endif
 47.1074 +}
 47.1075 +
 47.1076 +/***********************/
 47.1077 +/* Keyboard Definitons */
 47.1078 +/*        And          */
 47.1079 +/*     Functions       */
 47.1080 +/***********************/
 47.1081 +
 47.1082 +#define XK_space            0x020
 47.1083 +#define XK_asciitilde       0x07e
 47.1084 +
 47.1085 +#define XK_dead_grave       0xFE50
 47.1086 +#define XK_dead_acute       0xFE51
 47.1087 +#define XK_dead_circumflex  0xFE52
 47.1088 +#define XK_dead_tilde       0xFE53
 47.1089 +
 47.1090 +#define XK_BackSpace		0xFF08	
 47.1091 +#define XK_Tab			    0xFF09
 47.1092 +#define XK_Linefeed		    0xFF0A
 47.1093 +#define XK_Clear		    0xFF0B
 47.1094 +#define XK_Return		    0xFF0D
 47.1095 +#define XK_Pause		    0xFF13	
 47.1096 +#define XK_Scroll_Lock		0xFF14
 47.1097 +#define XK_Sys_Req		    0xFF15
 47.1098 +#define XK_Escape		    0xFF1B
 47.1099 +
 47.1100 +#define XK_Delete		    0xFFFF
 47.1101 +
 47.1102 +#define XK_Home			0xFF50
 47.1103 +#define XK_Left			0xFF51	
 47.1104 +#define XK_Up			0xFF52	
 47.1105 +#define XK_Right		0xFF53
 47.1106 +#define XK_Down			0xFF54
 47.1107 +#define XK_Page_Up		0xFF55
 47.1108 +#define XK_Page_Down	0xFF56
 47.1109 +#define XK_End			0xFF57	
 47.1110 +#define XK_Begin		0xFF58	
 47.1111 +
 47.1112 +#define XK_Select		0xFF60	
 47.1113 +#define XK_Print		0xFF61
 47.1114 +#define XK_Execute		0xFF62	
 47.1115 +#define XK_Insert		0xFF63	
 47.1116 +
 47.1117 +#define XK_Cancel		0xFF69	
 47.1118 +#define XK_Help			0xFF6A
 47.1119 +#define XK_Break		0xFF6B
 47.1120 +#define XK_Num_Lock		0xFF7F
 47.1121 +
 47.1122 +#define XK_KP_Space		0xFF80
 47.1123 +#define XK_KP_Tab		0xFF89
 47.1124 +#define XK_KP_Enter		0xFF8D	
 47.1125 +
 47.1126 +#define XK_KP_Home		0xFF95
 47.1127 +#define XK_KP_Left		0xFF96
 47.1128 +#define XK_KP_Up		0xFF97
 47.1129 +#define XK_KP_Right		0xFF98
 47.1130 +#define XK_KP_Down		0xFF99
 47.1131 +#define XK_KP_Prior		0xFF9A
 47.1132 +#define XK_KP_Page_Up	0xFF9A
 47.1133 +#define XK_KP_Next		0xFF9B
 47.1134 +#define XK_KP_Page_Down	0xFF9B
 47.1135 +#define XK_KP_End		0xFF9C
 47.1136 +#define XK_KP_Begin		0xFF9D
 47.1137 +#define XK_KP_Insert	0xFF9E
 47.1138 +#define XK_KP_Delete	0xFF9F
 47.1139 +#define XK_KP_Equal		0xFFBD
 47.1140 +#define XK_KP_Multiply	0xFFAA
 47.1141 +#define XK_KP_Add		0xFFAB
 47.1142 +#define XK_KP_Separator	0xFFAC	
 47.1143 +#define XK_KP_Subtract	0xFFAD
 47.1144 +#define XK_KP_Decimal	0xFFAE
 47.1145 +#define XK_KP_Divide	0xFFAF
 47.1146 +
 47.1147 +#define XK_KP_F1		0xFF91
 47.1148 +#define XK_KP_F2		0xFF92
 47.1149 +#define XK_KP_F3		0xFF93
 47.1150 +#define XK_KP_F4		0xFF94
 47.1151 +
 47.1152 +#define XK_KP_0			0xFFB0
 47.1153 +#define XK_KP_1			0xFFB1
 47.1154 +#define XK_KP_2			0xFFB2
 47.1155 +#define XK_KP_3			0xFFB3
 47.1156 +#define XK_KP_4			0xFFB4
 47.1157 +#define XK_KP_5			0xFFB5
 47.1158 +#define XK_KP_6			0xFFB6
 47.1159 +#define XK_KP_7			0xFFB7
 47.1160 +#define XK_KP_8			0xFFB8
 47.1161 +#define XK_KP_9			0xFFB9
 47.1162 +
 47.1163 +#define XK_F1			0xFFBE
 47.1164 +#define XK_F2			0xFFBF
 47.1165 +#define XK_F3			0xFFC0
 47.1166 +#define XK_F4			0xFFC1
 47.1167 +#define XK_F5			0xFFC2
 47.1168 +#define XK_F6			0xFFC3
 47.1169 +#define XK_F7			0xFFC4
 47.1170 +#define XK_F8			0xFFC5
 47.1171 +#define XK_F9			0xFFC6
 47.1172 +#define XK_F10			0xFFC7
 47.1173 +#define XK_F11			0xFFC8
 47.1174 +#define XK_F12			0xFFC9
 47.1175 +#define XK_F13			0xFFCA
 47.1176 +#define XK_F14			0xFFCB
 47.1177 +#define XK_F15			0xFFCC
 47.1178 +#define XK_F16			0xFFCD
 47.1179 +#define XK_F17			0xFFCE
 47.1180 +#define XK_F18			0xFFCF
 47.1181 +#define XK_F19			0xFFD0
 47.1182 +#define XK_F20			0xFFD1
 47.1183 +#define XK_F21			0xFFD2
 47.1184 +#define XK_F22			0xFFD3
 47.1185 +#define XK_F23			0xFFD4
 47.1186 +#define XK_F24			0xFFD5
 47.1187 +
 47.1188 +
 47.1189 +#define XK_Shift_L		0xFFE1	
 47.1190 +#define XK_Shift_R		0xFFE2	
 47.1191 +#define XK_Control_L	0xFFE3	
 47.1192 +#define XK_Control_R	0xFFE4	
 47.1193 +#define XK_Caps_Lock	0xFFE5	
 47.1194 +#define XK_Shift_Lock	0xFFE6	
 47.1195 +#define XK_Meta_L		0xFFE7	
 47.1196 +#define XK_Meta_R		0xFFE8
 47.1197 +#define XK_Alt_L		0xFFE9
 47.1198 +#define XK_Alt_R		0xFFEA
 47.1199 +
 47.1200 +Bit32u rfb_ascii_to_key_event[0x5f] = {
 47.1201 +  //  !"#$%&'
 47.1202 +  BX_KEY_SPACE,
 47.1203 +  BX_KEY_1,
 47.1204 +  BX_KEY_SINGLE_QUOTE,
 47.1205 +  BX_KEY_3,
 47.1206 +  BX_KEY_4,
 47.1207 +  BX_KEY_5,
 47.1208 +  BX_KEY_7,
 47.1209 +  BX_KEY_SINGLE_QUOTE,
 47.1210 +
 47.1211 +  // ()*+,-./
 47.1212 +  BX_KEY_9,
 47.1213 +  BX_KEY_0,
 47.1214 +  BX_KEY_8,
 47.1215 +  BX_KEY_EQUALS,
 47.1216 +  BX_KEY_COMMA,
 47.1217 +  BX_KEY_MINUS,
 47.1218 +  BX_KEY_PERIOD,
 47.1219 +  BX_KEY_SLASH,
 47.1220 +
 47.1221 +  // 01234567
 47.1222 +  BX_KEY_0,
 47.1223 +  BX_KEY_1,
 47.1224 +  BX_KEY_2,
 47.1225 +  BX_KEY_3,
 47.1226 +  BX_KEY_4,
 47.1227 +  BX_KEY_5,
 47.1228 +  BX_KEY_6,
 47.1229 +  BX_KEY_7,
 47.1230 +
 47.1231 +  // 89:;<=>?
 47.1232 +  BX_KEY_8,
 47.1233 +  BX_KEY_9,
 47.1234 +  BX_KEY_SEMICOLON,
 47.1235 +  BX_KEY_SEMICOLON,
 47.1236 +  BX_KEY_COMMA,
 47.1237 +  BX_KEY_EQUALS,
 47.1238 +  BX_KEY_PERIOD,
 47.1239 +  BX_KEY_SLASH,
 47.1240 +
 47.1241 +  // @ABCDEFG
 47.1242 +  BX_KEY_2,
 47.1243 +  BX_KEY_A,
 47.1244 +  BX_KEY_B,
 47.1245 +  BX_KEY_C,
 47.1246 +  BX_KEY_D,
 47.1247 +  BX_KEY_E,
 47.1248 +  BX_KEY_F,
 47.1249 +  BX_KEY_G,
 47.1250 +
 47.1251 +
 47.1252 +  // HIJKLMNO
 47.1253 +  BX_KEY_H,
 47.1254 +  BX_KEY_I,
 47.1255 +  BX_KEY_J,
 47.1256 +  BX_KEY_K,
 47.1257 +  BX_KEY_L,
 47.1258 +  BX_KEY_M,
 47.1259 +  BX_KEY_N,
 47.1260 +  BX_KEY_O,
 47.1261 +
 47.1262 +
 47.1263 +  // PQRSTUVW
 47.1264 +  BX_KEY_P,
 47.1265 +  BX_KEY_Q,
 47.1266 +  BX_KEY_R,
 47.1267 +  BX_KEY_S,
 47.1268 +  BX_KEY_T,
 47.1269 +  BX_KEY_U,
 47.1270 +  BX_KEY_V,
 47.1271 +  BX_KEY_W,
 47.1272 +
 47.1273 +  // XYZ[\]^_
 47.1274 +  BX_KEY_X,
 47.1275 +  BX_KEY_Y,
 47.1276 +  BX_KEY_Z,
 47.1277 +  BX_KEY_LEFT_BRACKET,
 47.1278 +  BX_KEY_BACKSLASH,
 47.1279 +  BX_KEY_RIGHT_BRACKET,
 47.1280 +  BX_KEY_6,
 47.1281 +  BX_KEY_MINUS,
 47.1282 +
 47.1283 +  // `abcdefg
 47.1284 +  BX_KEY_GRAVE,
 47.1285 +  BX_KEY_A,
 47.1286 +  BX_KEY_B,
 47.1287 +  BX_KEY_C,
 47.1288 +  BX_KEY_D,
 47.1289 +  BX_KEY_E,
 47.1290 +  BX_KEY_F,
 47.1291 +  BX_KEY_G,
 47.1292 +
 47.1293 +  // hijklmno
 47.1294 +  BX_KEY_H,
 47.1295 +  BX_KEY_I,
 47.1296 +  BX_KEY_J,
 47.1297 +  BX_KEY_K,
 47.1298 +  BX_KEY_L,
 47.1299 +  BX_KEY_M,
 47.1300 +  BX_KEY_N,
 47.1301 +  BX_KEY_O,
 47.1302 +
 47.1303 +  // pqrstuvw
 47.1304 +  BX_KEY_P,
 47.1305 +  BX_KEY_Q,
 47.1306 +  BX_KEY_R,
 47.1307 +  BX_KEY_S,
 47.1308 +  BX_KEY_T,
 47.1309 +  BX_KEY_U,
 47.1310 +  BX_KEY_V,
 47.1311 +  BX_KEY_W,
 47.1312 +
 47.1313 +  // xyz{|}~
 47.1314 +  BX_KEY_X,
 47.1315 +  BX_KEY_Y,
 47.1316 +  BX_KEY_Z,
 47.1317 +  BX_KEY_LEFT_BRACKET,
 47.1318 +  BX_KEY_BACKSLASH,
 47.1319 +  BX_KEY_RIGHT_BRACKET,
 47.1320 +  BX_KEY_GRAVE
 47.1321 +  };
 47.1322 +
 47.1323 +void rfbKeyPressed(Bit32u key, int press_release)
 47.1324 +{
 47.1325 +  Bit32u key_event;
 47.1326 +
 47.1327 +  if((key >= XK_space) && (key <= XK_asciitilde)) {
 47.1328 +    key_event = rfb_ascii_to_key_event[key - XK_space];
 47.1329 +  } else {
 47.1330 +    switch (key) {
 47.1331 +      case XK_KP_1:
 47.1332 +#ifdef XK_KP_End
 47.1333 +      case XK_KP_End:
 47.1334 +#endif
 47.1335 +        key_event = BX_KEY_KP_END; break;
 47.1336 +
 47.1337 +      case XK_KP_2:
 47.1338 +#ifdef XK_KP_Down
 47.1339 +      case XK_KP_Down:
 47.1340 +#endif
 47.1341 +        key_event = BX_KEY_KP_DOWN; break;
 47.1342 +
 47.1343 +      case XK_KP_3:
 47.1344 +#ifdef XK_KP_Page_Down
 47.1345 +      case XK_KP_Page_Down:
 47.1346 +#endif
 47.1347 +        key_event = BX_KEY_KP_PAGE_DOWN; break;
 47.1348 +
 47.1349 +      case XK_KP_4:
 47.1350 +#ifdef XK_KP_Left
 47.1351 +      case XK_KP_Left:
 47.1352 +#endif
 47.1353 +        key_event = BX_KEY_KP_LEFT; break;
 47.1354 +
 47.1355 +      case XK_KP_5:
 47.1356 +#ifdef XK_KP_Begin
 47.1357 +      case XK_KP_Begin:
 47.1358 +#endif
 47.1359 +        key_event = BX_KEY_KP_5; break;
 47.1360 +
 47.1361 +      case XK_KP_6:
 47.1362 +#ifdef XK_KP_Right
 47.1363 +      case XK_KP_Right:
 47.1364 +#endif
 47.1365 +        key_event = BX_KEY_KP_RIGHT; break;
 47.1366 +
 47.1367 +      case XK_KP_7:
 47.1368 +#ifdef XK_KP_Home
 47.1369 +      case XK_KP_Home:
 47.1370 +#endif
 47.1371 +        key_event = BX_KEY_KP_HOME; break;
 47.1372 +
 47.1373 +      case XK_KP_8:
 47.1374 +#ifdef XK_KP_Up
 47.1375 +      case XK_KP_Up:
 47.1376 +#endif
 47.1377 +        key_event = BX_KEY_KP_UP; break;
 47.1378 +
 47.1379 +      case XK_KP_9:
 47.1380 +#ifdef XK_KP_Page_Up
 47.1381 +      case XK_KP_Page_Up:
 47.1382 +#endif
 47.1383 +        key_event = BX_KEY_KP_PAGE_UP; break;
 47.1384 +
 47.1385 +      case XK_KP_0:
 47.1386 +#ifdef XK_KP_Insert
 47.1387 +      case XK_KP_Insert:
 47.1388 +#endif
 47.1389 +        key_event = BX_KEY_KP_INSERT; break;
 47.1390 +
 47.1391 +      case XK_KP_Decimal:
 47.1392 +#ifdef XK_KP_Delete
 47.1393 +      case XK_KP_Delete:
 47.1394 +#endif
 47.1395 +        key_event = BX_KEY_KP_DELETE; break;
 47.1396 +
 47.1397 +#ifdef XK_KP_Enter
 47.1398 +      case XK_KP_Enter:    key_event = BX_KEY_KP_ENTER; break;
 47.1399 +#endif
 47.1400 +
 47.1401 +      case XK_KP_Subtract: key_event = BX_KEY_KP_SUBTRACT; break;
 47.1402 +      case XK_KP_Add:      key_event = BX_KEY_KP_ADD; break;
 47.1403 +
 47.1404 +      case XK_KP_Multiply: key_event = BX_KEY_KP_MULTIPLY; break;
 47.1405 +      case XK_KP_Divide:   key_event = BX_KEY_KP_DIVIDE; break;
 47.1406 +
 47.1407 +
 47.1408 +      case XK_Up:          key_event = BX_KEY_UP; break;
 47.1409 +      case XK_Down:        key_event = BX_KEY_DOWN; break;
 47.1410 +      case XK_Left:        key_event = BX_KEY_LEFT; break;
 47.1411 +      case XK_Right:       key_event = BX_KEY_RIGHT; break;
 47.1412 +
 47.1413 +
 47.1414 +      case XK_Delete:      key_event = BX_KEY_DELETE; break;
 47.1415 +      case XK_BackSpace:   key_event = BX_KEY_BACKSPACE; break;
 47.1416 +      case XK_Tab:         key_event = BX_KEY_TAB; break;
 47.1417 +#ifdef XK_ISO_Left_Tab
 47.1418 +      case XK_ISO_Left_Tab: key_event = BX_KEY_TAB; break;
 47.1419 +#endif
 47.1420 +      case XK_Return:      key_event = BX_KEY_ENTER; break;
 47.1421 +      case XK_Escape:      key_event = BX_KEY_ESC; break;
 47.1422 +      case XK_F1:          key_event = BX_KEY_F1; break;
 47.1423 +      case XK_F2:          key_event = BX_KEY_F2; break;
 47.1424 +      case XK_F3:          key_event = BX_KEY_F3; break;
 47.1425 +      case XK_F4:          key_event = BX_KEY_F4; break;
 47.1426 +      case XK_F5:          key_event = BX_KEY_F5; break;
 47.1427 +      case XK_F6:          key_event = BX_KEY_F6; break;
 47.1428 +      case XK_F7:          key_event = BX_KEY_F7; break;
 47.1429 +      case XK_F8:          key_event = BX_KEY_F8; break;
 47.1430 +      case XK_F9:          key_event = BX_KEY_F9; break;
 47.1431 +      case XK_F10:         key_event = BX_KEY_F10; break;
 47.1432 +      case XK_F11:         key_event = BX_KEY_F11; break;
 47.1433 +      case XK_F12:         key_event = BX_KEY_F12; break;
 47.1434 +      case XK_Control_L:   key_event = BX_KEY_CTRL_L; break;
 47.1435 +#ifdef XK_Control_R
 47.1436 +      case XK_Control_R:   key_event = BX_KEY_CTRL_R; break;
 47.1437 +#endif
 47.1438 +      case XK_Shift_L:     key_event = BX_KEY_SHIFT_L; break;
 47.1439 +      case XK_Shift_R:     key_event = BX_KEY_SHIFT_R; break;
 47.1440 +      case XK_Alt_L:       key_event = BX_KEY_ALT_L; break;
 47.1441 +#ifdef XK_Alt_R
 47.1442 +      case XK_Alt_R:       key_event = BX_KEY_ALT_R; break;
 47.1443 +#endif
 47.1444 +      case XK_Caps_Lock:   key_event = BX_KEY_CAPS_LOCK; break;
 47.1445 +      case XK_Num_Lock:    key_event = BX_KEY_NUM_LOCK; break;
 47.1446 +#ifdef XK_Scroll_Lock
 47.1447 +      case XK_Scroll_Lock: key_event = BX_KEY_SCRL_LOCK; break;
 47.1448 +#endif
 47.1449 +#ifdef XK_Print
 47.1450 +      case XK_Print:       key_event = BX_KEY_PRINT; break;
 47.1451 +#endif
 47.1452 +#ifdef XK_Pause
 47.1453 +      case XK_Pause:       key_event = BX_KEY_PAUSE; break;
 47.1454 +#endif
 47.1455 +
 47.1456 +      case XK_Insert:      key_event = BX_KEY_INSERT; break;
 47.1457 +      case XK_Home:        key_event = BX_KEY_HOME; break;
 47.1458 +      case XK_End:         key_event = BX_KEY_END; break;
 47.1459 +      case XK_Page_Up:     key_event = BX_KEY_PAGE_UP; break;
 47.1460 +      case XK_Page_Down:   key_event = BX_KEY_PAGE_DOWN; break;
 47.1461 +
 47.1462 +      default:
 47.1463 +        BX_ERROR(("rfbKeyPress(): key %04x unhandled!", key));
 47.1464 +        fprintf(stderr, "RFB: rfbKeyPress(): key %04x unhandled!\n", key);
 47.1465 +        return;
 47.1466 +        break;
 47.1467 +    }
 47.1468 +  }
 47.1469 +
 47.1470 +  if (press_release) key_event |= BX_KEY_RELEASED;
 47.1471 +  DEV_kbd_gen_scancode(key_event);
 47.1472 +}
 47.1473 +
 47.1474 +void rfbMouseMove(int x, int y, int bmask)
 47.1475 +{
 47.1476 +  static int oldx = -1;
 47.1477 +  static int oldy = -1;
 47.1478 +  int xorigin;
 47.1479 +
 47.1480 +  if (oldx == oldy == -1) {
 47.1481 +    oldx = x;
 47.1482 +    oldy = y;
 47.1483 +    return;
 47.1484 +  }
 47.1485 +  if(y > rfbHeaderbarY) {
 47.1486 +    //DEV_mouse_motion(x, y - rfbHeaderbarY, buttons);
 47.1487 +    DEV_mouse_motion(x - oldx, oldy - y, bmask);
 47.1488 +    oldx = x;
 47.1489 +    oldy = y;
 47.1490 +  } else {
 47.1491 +    if (bmask == 1) {
 47.1492 +      for (unsigned i=0; i<rfbHeaderbarBitmapCount; i++) {
 47.1493 +        if (rfbHeaderbarBitmaps[i].alignment == BX_GRAVITY_LEFT)
 47.1494 +          xorigin = rfbHeaderbarBitmaps[i].xorigin;
 47.1495 +        else
 47.1496 +          xorigin = rfbDimensionX - rfbHeaderbarBitmaps[i].xorigin;
 47.1497 +        if ( (x>=xorigin) && (x<(xorigin+int(rfbBitmaps[rfbHeaderbarBitmaps[i].index].xdim))) ) {
 47.1498 +          rfbHeaderbarBitmaps[i].f();
 47.1499 +          return;
 47.1500 +        }
 47.1501 +      }
 47.1502 +    }
 47.1503 +  }
 47.1504 +}
 47.1505 +
 47.1506 +  void
 47.1507 +bx_rfb_gui_c::mouse_enabled_changed_specific (bx_bool val)
 47.1508 +{
 47.1509 +}
 47.1510 +
 47.1511 +#endif /* if BX_WITH_RFB */
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/tools/ioemu/gui/rfb.h	Tue Jan 11 09:28:54 2005 +0000
    48.3 @@ -0,0 +1,35 @@
    48.4 +/////////////////////////////////////////////////////////////////////////
    48.5 +// $Id: rfb.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    48.6 +/////////////////////////////////////////////////////////////////////////
    48.7 +//
    48.8 +// rfb.h
    48.9 +// This includes the rfb spec header, the port numbers,
   48.10 +// the CARD type definitions and various useful macros.
   48.11 +//
   48.12 +
   48.13 +#ifndef RFB_H__
   48.14 +#define RFB_H__
   48.15 +
   48.16 +// Define the CARD* types as used in X11/Xmd.h
   48.17 +
   48.18 +typedef unsigned long CARD32;
   48.19 +typedef unsigned short CARD16;
   48.20 +typedef short INT16;
   48.21 +typedef unsigned char  CARD8;
   48.22 +
   48.23 +// Define the port number offsets
   48.24 +#define FLASH_PORT_OFFSET 5400
   48.25 +#define INCOMING_PORT_OFFSET 5500
   48.26 +#define HTTP_PORT_OFFSET 5800	// we don't use this in Venice
   48.27 +#define RFB_PORT_OFFSET 5900
   48.28 +
   48.29 +#define _SIZEOF(x) sz_##x
   48.30 +#define SIZEOF(x) _SIZEOF(x)
   48.31 +
   48.32 +#define PORT_TO_DISPLAY(p) ( (p) - RFB_PORT_OFFSET )
   48.33 +#define DISPLAY_TO_PORT(d) ( (d) + RFB_PORT_OFFSET )
   48.34 +
   48.35 +#define EWOULDBLOCK WSAEWOULDBLOCK
   48.36 +#define ETIMEDOUT WSAETIMEDOUT
   48.37 +
   48.38 +#endif
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/tools/ioemu/gui/rfbproto.h	Tue Jan 11 09:28:54 2005 +0000
    49.3 @@ -0,0 +1,675 @@
    49.4 +/////////////////////////////////////////////////////////////////////////
    49.5 +// $Id: rfbproto.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    49.6 +/////////////////////////////////////////////////////////////////////////
    49.7 +//
    49.8 +/*
    49.9 + *  Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory
   49.10 + *
   49.11 + *  This is free software; you can redistribute it and/or modify
   49.12 + *  it under the terms of the GNU General Public License as published by
   49.13 + *  the Free Software Foundation; either version 2 of the License, or
   49.14 + *  (at your option) any later version.
   49.15 + *
   49.16 + *  This software is distributed in the hope that it will be useful,
   49.17 + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
   49.18 + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   49.19 + *  GNU General Public License for more details.
   49.20 + *
   49.21 + *  You should have received a copy of the GNU General Public License
   49.22 + *  along with this software; if not, write to the Free Software
   49.23 + *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
   49.24 + *  USA.
   49.25 + */
   49.26 +
   49.27 +/*
   49.28 + * rfbproto.h - header file for the RFB protocol version 3.3
   49.29 + *
   49.30 + * Uses types CARD<n> for an n-bit unsigned integer, INT<n> for an n-bit signed
   49.31 + * integer (for n = 8, 16 and 32).
   49.32 + *
   49.33 + * All multiple byte integers are in big endian (network) order (most
   49.34 + * significant byte first).  Unless noted otherwise there is no special
   49.35 + * alignment of protocol structures.
   49.36 + *
   49.37 + *
   49.38 + * Once the initial handshaking is done, all messages start with a type byte,
   49.39 + * (usually) followed by message-specific data.  The order of definitions in
   49.40 + * this file is as follows:
   49.41 + *
   49.42 + *  (1) Structures used in several types of message.
   49.43 + *  (2) Structures used in the initial handshaking.
   49.44 + *  (3) Message types.
   49.45 + *  (4) Encoding types.
   49.46 + *  (5) For each message type, the form of the data following the type byte.
   49.47 + *      Sometimes this is defined by a single structure but the more complex
   49.48 + *      messages have to be explained by comments.
   49.49 + */
   49.50 +
   49.51 +
   49.52 +/*****************************************************************************
   49.53 + *
   49.54 + * Structures used in several messages
   49.55 + *
   49.56 + *****************************************************************************/
   49.57 +
   49.58 +/*-----------------------------------------------------------------------------
   49.59 + * Structure used to specify a rectangle.  This structure is a multiple of 4
   49.60 + * bytes so that it can be interspersed with 32-bit pixel data without
   49.61 + * affecting alignment.
   49.62 + */
   49.63 +
   49.64 +typedef struct {
   49.65 +    CARD16 x;
   49.66 +    CARD16 y;
   49.67 +    CARD16 w;
   49.68 +    CARD16 h;
   49.69 +} rfbRectangle;
   49.70 +
   49.71 +#define sz_rfbRectangle 8
   49.72 +
   49.73 +
   49.74 +/*-----------------------------------------------------------------------------
   49.75 + * Structure used to specify pixel format.
   49.76 + */
   49.77 +
   49.78 +typedef struct {
   49.79 +
   49.80 +    CARD8 bitsPerPixel;		/* 8,16,32 only */
   49.81 +
   49.82 +    CARD8 depth;		/* 8 to 32 */
   49.83 +
   49.84 +    CARD8 bigEndian;		/* True if multi-byte pixels are interpreted
   49.85 +				   as big endian, or if single-bit-per-pixel
   49.86 +				   has most significant bit of the byte
   49.87 +				   corresponding to first (leftmost) pixel. Of
   49.88 +				   course this is meaningless for 8 bits/pix */
   49.89 +
   49.90 +    CARD8 trueColour;		/* If false then we need a "colour map" to
   49.91 +				   convert pixels to RGB.  If true, xxxMax and
   49.92 +				   xxxShift specify bits used for red, green
   49.93 +				   and blue */
   49.94 +
   49.95 +    /* the following fields are only meaningful if trueColour is true */
   49.96 +
   49.97 +    CARD16 redMax;		/* maximum red value (= 2^n - 1 where n is the
   49.98 +				   number of bits used for red). Note this
   49.99 +				   value is always in big endian order. */
  49.100 +
  49.101 +    CARD16 greenMax;		/* similar for green */
  49.102 +
  49.103 +    CARD16 blueMax;		/* and blue */
  49.104 +
  49.105 +    CARD8 redShift;		/* number of shifts needed to get the red
  49.106 +				   value in a pixel to the least significant
  49.107 +				   bit. To find the red value from a given
  49.108 +				   pixel, do the following:
  49.109 +				   1) Swap pixel value according to bigEndian
  49.110 +				      (e.g. if bigEndian is false and host byte
  49.111 +				      order is big endian, then swap).
  49.112 +				   2) Shift right by redShift.
  49.113 +				   3) AND with redMax (in host byte order).
  49.114 +				   4) You now have the red value between 0 and
  49.115 +				      redMax. */
  49.116 +
  49.117 +    CARD8 greenShift;		/* similar for green */
  49.118 +
  49.119 +    CARD8 blueShift;		/* and blue */
  49.120 +
  49.121 +    CARD8 pad1;
  49.122 +    CARD16 pad2;
  49.123 +
  49.124 +} rfbPixelFormat;
  49.125 +
  49.126 +#define sz_rfbPixelFormat 16
  49.127 +
  49.128 +
  49.129 +
  49.130 +/*****************************************************************************
  49.131 + *
  49.132 + * Initial handshaking messages
  49.133 + *
  49.134 + *****************************************************************************/
  49.135 +
  49.136 +/*-----------------------------------------------------------------------------
  49.137 + * Protocol Version
  49.138 + *
  49.139 + * The server always sends 12 bytes to start which identifies the latest RFB
  49.140 + * protocol version number which it supports.  These bytes are interpreted
  49.141 + * as a string of 12 ASCII characters in the format "RFB xxx.yyy\n" where
  49.142 + * xxx and yyy are the major and minor version numbers (for version 3.3
  49.143 + * this is "RFB 003.003\n").
  49.144 + *
  49.145 + * The client then replies with a similar 12-byte message giving the version
  49.146 + * number of the protocol which should actually be used (which may be different
  49.147 + * to that quoted by the server).
  49.148 + *
  49.149 + * It is intended that both clients and servers may provide some level of
  49.150 + * backwards compatibility by this mechanism.  Servers in particular should
  49.151 + * attempt to provide backwards compatibility, and even forwards compatibility
  49.152 + * to some extent.  For example if a client demands version 3.1 of the
  49.153 + * protocol, a 3.0 server can probably assume that by ignoring requests for
  49.154 + * encoding types it doesn't understand, everything will still work OK.  This
  49.155 + * will probably not be the case for changes in the major version number.
  49.156 + *
  49.157 + * The format string below can be used in sprintf or sscanf to generate or
  49.158 + * decode the version string respectively.
  49.159 + */
  49.160 +
  49.161 +#define rfbProtocolVersionFormat "RFB %03d.%03d\n"
  49.162 +#define rfbProtocolMajorVersion 3
  49.163 +#define rfbProtocolMinorVersion 3
  49.164 +
  49.165 +typedef char rfbProtocolVersionMsg[13];	/* allow extra byte for null */
  49.166 +
  49.167 +#define sz_rfbProtocolVersionMsg 12
  49.168 +
  49.169 +
  49.170 +/*-----------------------------------------------------------------------------
  49.171 + * Authentication
  49.172 + *
  49.173 + * Once the protocol version has been decided, the server then sends a 32-bit
  49.174 + * word indicating whether any authentication is needed on the connection.
  49.175 + * The value of this word determines the authentication scheme in use.  For
  49.176 + * version 3.0 of the protocol this may have one of the following values:
  49.177 + */
  49.178 +
  49.179 +#define rfbConnFailed 0
  49.180 +#define rfbNoAuth 1
  49.181 +#define rfbVncAuth 2
  49.182 +
  49.183 +/*
  49.184 + * rfbConnFailed:	For some reason the connection failed (e.g. the server
  49.185 + *			cannot support the desired protocol version).  This is
  49.186 + *			followed by a string describing the reason (where a
  49.187 + *			string is specified as a 32-bit length followed by that
  49.188 + *			many ASCII characters).
  49.189 + *
  49.190 + * rfbNoAuth:		No authentication is needed.
  49.191 + *
  49.192 + * rfbVncAuth:		The VNC authentication scheme is to be used.  A 16-byte
  49.193 + *			challenge follows, which the client encrypts as
  49.194 + *			appropriate using the password and sends the resulting
  49.195 + *			16-byte response.  If the response is correct, the
  49.196 + *			server sends the 32-bit word rfbVncAuthOK.  If a simple
  49.197 + *			failure happens, the server sends rfbVncAuthFailed and
  49.198 + *			closes the connection. If the server decides that too
  49.199 + *			many failures have occurred, it sends rfbVncAuthTooMany
  49.200 + *			and closes the connection.  In the latter case, the
  49.201 + *			server should not allow an immediate reconnection by
  49.202 + *			the client.
  49.203 + */
  49.204 +
  49.205 +#define rfbVncAuthOK 0
  49.206 +#define rfbVncAuthFailed 1
  49.207 +#define rfbVncAuthTooMany 2
  49.208 +
  49.209 +
  49.210 +/*-----------------------------------------------------------------------------
  49.211 + * Client Initialisation Message
  49.212 + *
  49.213 + * Once the client and server are sure that they're happy to talk to one
  49.214 + * another, the client sends an initialisation message.  At present this
  49.215 + * message only consists of a boolean indicating whether the server should try
  49.216 + * to share the desktop by leaving other clients connected, or give exclusive
  49.217 + * access to this client by disconnecting all other clients.
  49.218 + */
  49.219 +
  49.220 +typedef struct {
  49.221 +    CARD8 shared;
  49.222 +} rfbClientInitMsg;
  49.223 +
  49.224 +#define sz_rfbClientInitMsg 1
  49.225 +
  49.226 +
  49.227 +/*-----------------------------------------------------------------------------
  49.228 + * Server Initialisation Message
  49.229 + *
  49.230 + * After the client initialisation message, the server sends one of its own.
  49.231 + * This tells the client the width and height of the server's framebuffer,
  49.232 + * its pixel format and the name associated with the desktop.
  49.233 + */
  49.234 +
  49.235 +typedef struct {
  49.236 +    CARD16 framebufferWidth;
  49.237 +    CARD16 framebufferHeight;
  49.238 +    rfbPixelFormat format;	/* the server's preferred pixel format */
  49.239 +    CARD32 nameLength;
  49.240 +    /* followed by char name[nameLength] */
  49.241 +} rfbServerInitMsg;
  49.242 +
  49.243 +#define sz_rfbServerInitMsg (8 + sz_rfbPixelFormat)
  49.244 +
  49.245 +
  49.246 +/*
  49.247 + * Following the server initialisation message it's up to the client to send
  49.248 + * whichever protocol messages it wants.  Typically it will send a
  49.249 + * SetPixelFormat message and a SetEncodings message, followed by a
  49.250 + * FramebufferUpdateRequest.  From then on the server will send
  49.251 + * FramebufferUpdate messages in response to the client's
  49.252 + * FramebufferUpdateRequest messages.  The client should send
  49.253 + * FramebufferUpdateRequest messages with incremental set to true when it has
  49.254 + * finished processing one FramebufferUpdate and is ready to process another.
  49.255 + * With a fast client, the rate at which FramebufferUpdateRequests are sent
  49.256 + * should be regulated to avoid hogging the network.
  49.257 + */
  49.258 +
  49.259 +
  49.260 +
  49.261 +/*****************************************************************************
  49.262 + *
  49.263 + * Message types
  49.264 + *
  49.265 + *****************************************************************************/
  49.266 +
  49.267 +/* server -> client */
  49.268 +
  49.269 +#define rfbFramebufferUpdate 0
  49.270 +#define rfbSetColourMapEntries 1
  49.271 +#define rfbBell 2
  49.272 +#define rfbServerCutText 3
  49.273 +
  49.274 +
  49.275 +/* client -> server */
  49.276 +
  49.277 +#define rfbSetPixelFormat 0
  49.278 +#define rfbFixColourMapEntries 1	/* not currently supported */
  49.279 +#define rfbSetEncodings 2
  49.280 +#define rfbFramebufferUpdateRequest 3
  49.281 +#define rfbKeyEvent 4
  49.282 +#define rfbPointerEvent 5
  49.283 +#define rfbClientCutText 6
  49.284 +
  49.285 +
  49.286 +
  49.287 +
  49.288 +/*****************************************************************************
  49.289 + *
  49.290 + * Encoding types
  49.291 + *
  49.292 + *****************************************************************************/
  49.293 +
  49.294 +#define rfbEncodingRaw 0
  49.295 +#define rfbEncodingCopyRect 1
  49.296 +#define rfbEncodingRRE 2
  49.297 +#define rfbEncodingCoRRE 4
  49.298 +#define rfbEncodingHextile 5
  49.299 +
  49.300 +
  49.301 +
  49.302 +/*****************************************************************************
  49.303 + *
  49.304 + * Server -> client message definitions
  49.305 + *
  49.306 + *****************************************************************************/
  49.307 +
  49.308 +
  49.309 +/*-----------------------------------------------------------------------------
  49.310 + * FramebufferUpdate - a block of rectangles to be copied to the framebuffer.
  49.311 + *
  49.312 + * This message consists of a header giving the number of rectangles of pixel
  49.313 + * data followed by the rectangles themselves.  The header is padded so that
  49.314 + * together with the type byte it is an exact multiple of 4 bytes (to help
  49.315 + * with alignment of 32-bit pixels):
  49.316 + */
  49.317 +
  49.318 +typedef struct {
  49.319 +    CARD8 type;			/* always rfbFramebufferUpdate */
  49.320 +    CARD8 pad;
  49.321 +    CARD16 nRects;
  49.322 +    /* followed by nRects rectangles */
  49.323 +} rfbFramebufferUpdateMsg;
  49.324 +
  49.325 +#define sz_rfbFramebufferUpdateMsg 4
  49.326 +
  49.327 +/*
  49.328 + * Each rectangle of pixel data consists of a header describing the position
  49.329 + * and size of the rectangle and a type word describing the encoding of the
  49.330 + * pixel data, followed finally by the pixel data.  Note that if the client has
  49.331 + * not sent a SetEncodings message then it will only receive raw pixel data.
  49.332 + * Also note again that this structure is a multiple of 4 bytes.
  49.333 + */
  49.334 +
  49.335 +typedef struct {
  49.336 +    rfbRectangle r;
  49.337 +    CARD32 encoding;	/* one of the encoding types rfbEncoding... */
  49.338 +} rfbFramebufferUpdateRectHeader;
  49.339 +
  49.340 +#define sz_rfbFramebufferUpdateRectHeader (sz_rfbRectangle + 4)
  49.341 +
  49.342 +
  49.343 +/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  49.344 + * Raw Encoding.  Pixels are sent in top-to-bottom scanline order,
  49.345 + * left-to-right within a scanline with no padding in between.
  49.346 + */
  49.347 +
  49.348 +
  49.349 +/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  49.350 + * CopyRect Encoding.  The pixels are specified simply by the x and y position
  49.351 + * of the source rectangle.
  49.352 + */
  49.353 +
  49.354 +typedef struct {
  49.355 +    CARD16 srcX;
  49.356 +    CARD16 srcY;
  49.357 +} rfbCopyRect;
  49.358 +
  49.359 +#define sz_rfbCopyRect 4
  49.360 +
  49.361 +
  49.362 +/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  49.363 + * RRE - Rise-and-Run-length Encoding.  We have an rfbRREHeader structure
  49.364 + * giving the number of subrectangles following.  Finally the data follows in
  49.365 + * the form [<bgpixel><subrect><subrect>...] where each <subrect> is
  49.366 + * [<pixel><rfbRectangle>].
  49.367 + */
  49.368 +
  49.369 +typedef struct {
  49.370 +    CARD32 nSubrects;
  49.371 +} rfbRREHeader;
  49.372 +
  49.373 +#define sz_rfbRREHeader 4
  49.374 +
  49.375 +
  49.376 +/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  49.377 + * CoRRE - Compact RRE Encoding.  We have an rfbRREHeader structure giving
  49.378 + * the number of subrectangles following.  Finally the data follows in the form
  49.379 + * [<bgpixel><subrect><subrect>...] where each <subrect> is
  49.380 + * [<pixel><rfbCoRRERectangle>].  This means that
  49.381 + * the whole rectangle must be at most 255x255 pixels.
  49.382 + */
  49.383 +
  49.384 +typedef struct {
  49.385 +    CARD8 x;
  49.386 +    CARD8 y;
  49.387 +    CARD8 w;
  49.388 +    CARD8 h;
  49.389 +} rfbCoRRERectangle;
  49.390 +
  49.391 +#define sz_rfbCoRRERectangle 4
  49.392 +
  49.393 +
  49.394 +/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  49.395 + * Hextile Encoding.  The rectangle is divided up into "tiles" of 16x16 pixels,
  49.396 + * starting at the top left going in left-to-right, top-to-bottom order.  If
  49.397 + * the width of the rectangle is not an exact multiple of 16 then the width of
  49.398 + * the last tile in each row will be correspondingly smaller.  Similarly if the
  49.399 + * height is not an exact multiple of 16 then the height of each tile in the
  49.400 + * final row will also be smaller.  Each tile begins with a "subencoding" type
  49.401 + * byte, which is a mask made up of a number of bits.  If the Raw bit is set
  49.402 + * then the other bits are irrelevant; w*h pixel values follow (where w and h
  49.403 + * are the width and height of the tile).  Otherwise the tile is encoded in a
  49.404 + * similar way to RRE, except that the position and size of each subrectangle
  49.405 + * can be specified in just two bytes.  The other bits in the mask are as
  49.406 + * follows:
  49.407 + *
  49.408 + * BackgroundSpecified - if set, a pixel value follows which specifies
  49.409 + *    the background colour for this tile.  The first non-raw tile in a
  49.410 + *    rectangle must have this bit set.  If this bit isn't set then the
  49.411 + *    background is the same as the last tile.
  49.412 + *
  49.413 + * ForegroundSpecified - if set, a pixel value follows which specifies
  49.414 + *    the foreground colour to be used for all subrectangles in this tile.
  49.415 + *    If this bit is set then the SubrectsColoured bit must be zero.
  49.416 + *
  49.417 + * AnySubrects - if set, a single byte follows giving the number of
  49.418 + *    subrectangles following.  If not set, there are no subrectangles (i.e.
  49.419 + *    the whole tile is just solid background colour).
  49.420 + *
  49.421 + * SubrectsColoured - if set then each subrectangle is preceded by a pixel
  49.422 + *    value giving the colour of that subrectangle.  If not set, all
  49.423 + *    subrectangles are the same colour, the foreground colour;  if the
  49.424 + *    ForegroundSpecified bit wasn't set then the foreground is the same as
  49.425 + *    the last tile.
  49.426 + *
  49.427 + * The position and size of each subrectangle is specified in two bytes.  The
  49.428 + * Pack macros below can be used to generate the two bytes from x, y, w, h,
  49.429 + * and the Extract macros can be used to extract the x, y, w, h values from
  49.430 + * the two bytes.
  49.431 + */
  49.432 +
  49.433 +#define rfbHextileRaw			(1 << 0)
  49.434 +#define rfbHextileBackgroundSpecified	(1 << 1)
  49.435 +#define rfbHextileForegroundSpecified	(1 << 2)
  49.436 +#define rfbHextileAnySubrects		(1 << 3)
  49.437 +#define rfbHextileSubrectsColoured	(1 << 4)
  49.438 +
  49.439 +#define rfbHextilePackXY(x,y) (((x) << 4) | (y))
  49.440 +#define rfbHextilePackWH(w,h) ((((w)-1) << 4) | ((h)-1))
  49.441 +#define rfbHextileExtractX(byte) ((byte) >> 4)
  49.442 +#define rfbHextileExtractY(byte) ((byte) & 0xf)
  49.443 +#define rfbHextileExtractW(byte) (((byte) >> 4) + 1)
  49.444 +#define rfbHextileExtractH(byte) (((byte) & 0xf) + 1)
  49.445 +
  49.446 +
  49.447 +/*-----------------------------------------------------------------------------
  49.448 + * SetColourMapEntries - these messages are only sent if the pixel
  49.449 + * format uses a "colour map" (i.e. trueColour false) and the client has not
  49.450 + * fixed the entire colour map using FixColourMapEntries.  In addition they
  49.451 + * will only start being sent after the client has sent its first
  49.452 + * FramebufferUpdateRequest.  So if the client always tells the server to use
  49.453 + * trueColour then it never needs to process this type of message.
  49.454 + */
  49.455 +
  49.456 +typedef struct {
  49.457 +    CARD8 type;			/* always rfbSetColourMapEntries */
  49.458 +    CARD8 pad;
  49.459 +    CARD16 firstColour;
  49.460 +    CARD16 nColours;
  49.461 +
  49.462 +    /* Followed by nColours * 3 * CARD16
  49.463 +       r1, g1, b1, r2, g2, b2, r3, g3, b3, ..., rn, bn, gn */
  49.464 +
  49.465 +} rfbSetColourMapEntriesMsg;
  49.466 +
  49.467 +#define sz_rfbSetColourMapEntriesMsg 6
  49.468 +
  49.469 +
  49.470 +
  49.471 +/*-----------------------------------------------------------------------------
  49.472 + * Bell - ring a bell on the client if it has one.
  49.473 + */
  49.474 +
  49.475 +typedef struct {
  49.476 +    CARD8 type;			/* always rfbBell */
  49.477 +} rfbBellMsg;
  49.478 +
  49.479 +#define sz_rfbBellMsg 1
  49.480 +
  49.481 +
  49.482 +
  49.483 +/*-----------------------------------------------------------------------------
  49.484 + * ServerCutText - the server has new text in its cut buffer.
  49.485 + */
  49.486 +
  49.487 +typedef struct {
  49.488 +    CARD8 type;			/* always rfbServerCutText */
  49.489 +    CARD8 pad1;
  49.490 +    CARD16 pad2;
  49.491 +    CARD32 length;
  49.492 +    /* followed by char text[length] */
  49.493 +} rfbServerCutTextMsg;
  49.494 +
  49.495 +#define sz_rfbServerCutTextMsg 8
  49.496 +
  49.497 +
  49.498 +/*-----------------------------------------------------------------------------
  49.499 + * Union of all server->client messages.
  49.500 + */
  49.501 +
  49.502 +typedef union {
  49.503 +    CARD8 type;
  49.504 +    rfbFramebufferUpdateMsg fu;
  49.505 +    rfbSetColourMapEntriesMsg scme;
  49.506 +    rfbBellMsg b;
  49.507 +    rfbServerCutTextMsg sct;
  49.508 +} rfbServerToClientMsg;
  49.509 +
  49.510 +
  49.511 +
  49.512 +/*****************************************************************************
  49.513 + *
  49.514 + * Message definitions (client -> server)
  49.515 + *
  49.516 + *****************************************************************************/
  49.517 +
  49.518 +
  49.519 +/*-----------------------------------------------------------------------------
  49.520 + * SetPixelFormat - tell the RFB server the format in which the client wants
  49.521 + * pixels sent.
  49.522 + */
  49.523 +
  49.524 +typedef struct {
  49.525 +    CARD8 type;			/* always rfbSetPixelFormat */
  49.526 +    CARD8 pad1;
  49.527 +    CARD16 pad2;
  49.528 +    rfbPixelFormat format;
  49.529 +} rfbSetPixelFormatMsg;
  49.530 +
  49.531 +#define sz_rfbSetPixelFormatMsg (sz_rfbPixelFormat + 4)
  49.532 +
  49.533 +
  49.534 +/*-----------------------------------------------------------------------------
  49.535 + * FixColourMapEntries - when the pixel format uses a "colour map", fix
  49.536 + * read-only colour map entries.
  49.537 + *
  49.538 + *    ***************** NOT CURRENTLY SUPPORTED *****************
  49.539 + */
  49.540 +
  49.541 +typedef struct {
  49.542 +    CARD8 type;			/* always rfbFixColourMapEntries */
  49.543 +    CARD8 pad;
  49.544 +    CARD16 firstColour;
  49.545 +    CARD16 nColours;
  49.546 +
  49.547 +    /* Followed by nColours * 3 * CARD16
  49.548 +       r1, g1, b1, r2, g2, b2, r3, g3, b3, ..., rn, bn, gn */
  49.549 +
  49.550 +} rfbFixColourMapEntriesMsg;
  49.551 +
  49.552 +#define sz_rfbFixColourMapEntriesMsg 6
  49.553 +
  49.554 +
  49.555 +/*-----------------------------------------------------------------------------
  49.556 + * SetEncodings - tell the RFB server which encoding types we accept.  Put them
  49.557 + * in order of preference, if we have any.  We may always receive raw
  49.558 + * encoding, even if we don't specify it here.
  49.559 + */
  49.560 +
  49.561 +typedef struct {
  49.562 +    CARD8 type;			/* always rfbSetEncodings */
  49.563 +    CARD8 pad;
  49.564 +    CARD16 nEncodings;
  49.565 +    /* followed by nEncodings * CARD32 encoding types */
  49.566 +} rfbSetEncodingsMsg;
  49.567 +
  49.568 +#define sz_rfbSetEncodingsMsg 4
  49.569 +
  49.570 +
  49.571 +/*-----------------------------------------------------------------------------
  49.572 + * FramebufferUpdateRequest - request for a framebuffer update.  If incremental
  49.573 + * is true then the client just wants the changes since the last update.  If
  49.574 + * false then it wants the whole of the specified rectangle.
  49.575 + */
  49.576 +
  49.577 +typedef struct {
  49.578 +    CARD8 type;			/* always rfbFramebufferUpdateRequest */
  49.579 +    CARD8 incremental;
  49.580 +    CARD16 x;
  49.581 +    CARD16 y;
  49.582 +    CARD16 w;
  49.583 +    CARD16 h;
  49.584 +} rfbFramebufferUpdateRequestMsg;
  49.585 +
  49.586 +#define sz_rfbFramebufferUpdateRequestMsg 10
  49.587 +
  49.588 +
  49.589 +/*-----------------------------------------------------------------------------
  49.590 + * KeyEvent - key press or release
  49.591 + *
  49.592 + * Keys are specified using the "keysym" values defined by the X Window System.
  49.593 + * For most ordinary keys, the keysym is the same as the corresponding ASCII
  49.594 + * value.  Other common keys are:
  49.595 + *
  49.596 + * BackSpace		0xff08
  49.597 + * Tab			0xff09
  49.598 + * Return or Enter	0xff0d
  49.599 + * Escape		0xff1b
  49.600 + * Insert		0xff63
  49.601 + * Delete		0xffff
  49.602 + * Home			0xff50
  49.603 + * End			0xff57
  49.604 + * Page Up		0xff55
  49.605 + * Page Down		0xff56
  49.606 + * Left			0xff51
  49.607 + * Up			0xff52
  49.608 + * Right		0xff53
  49.609 + * Down			0xff54
  49.610 + * F1			0xffbe
  49.611 + * F2			0xffbf
  49.612 + * ...			...
  49.613 + * F12			0xffc9
  49.614 + * Shift		0xffe1
  49.615 + * Control		0xffe3
  49.616 + * Meta			0xffe7
  49.617 + * Alt			0xffe9
  49.618 + */
  49.619 +
  49.620 +typedef struct {
  49.621 +    CARD8 type;			/* always rfbKeyEvent */
  49.622 +    CARD8 down;			/* true if down (press), false if up */
  49.623 +    CARD16 pad;
  49.624 +    CARD32 key;			/* key is specified as an X keysym */
  49.625 +} rfbKeyEventMsg;
  49.626 +
  49.627 +#define sz_rfbKeyEventMsg 8
  49.628 +
  49.629 +
  49.630 +/*-----------------------------------------------------------------------------
  49.631 + * PointerEvent - mouse/pen move and/or button press.
  49.632 + */
  49.633 +
  49.634 +typedef struct {
  49.635 +    CARD8 type;			/* always rfbPointerEvent */
  49.636 +    CARD8 buttonMask;		/* bits 0-7 are buttons 1-8, 0=up, 1=down */
  49.637 +    CARD16 x;
  49.638 +    CARD16 y;
  49.639 +} rfbPointerEventMsg;
  49.640 +
  49.641 +#define rfbButton1Mask 1
  49.642 +#define rfbButton2Mask 2
  49.643 +#define rfbButton3Mask 4
  49.644 +
  49.645 +#define sz_rfbPointerEventMsg 6
  49.646 +
  49.647 +
  49.648 +
  49.649 +/*-----------------------------------------------------------------------------
  49.650 + * ClientCutText - the client has new text in its cut buffer.
  49.651 + */
  49.652 +
  49.653 +typedef struct {
  49.654 +    CARD8 type;			/* always rfbClientCutText */
  49.655 +    CARD8 pad1;
  49.656 +    CARD16 pad2;
  49.657 +    CARD32 length;
  49.658 +    /* followed by char text[length] */
  49.659 +} rfbClientCutTextMsg;
  49.660 +
  49.661 +#define sz_rfbClientCutTextMsg 8
  49.662 +
  49.663 +
  49.664 +
  49.665 +/*-----------------------------------------------------------------------------
  49.666 + * Union of all client->server messages.
  49.667 + */
  49.668 +
  49.669 +typedef union {
  49.670 +    CARD8 type;
  49.671 +    rfbSetPixelFormatMsg spf;
  49.672 +    rfbFixColourMapEntriesMsg fcme;
  49.673 +    rfbSetEncodingsMsg se;
  49.674 +    rfbFramebufferUpdateRequestMsg fur;
  49.675 +    rfbKeyEventMsg ke;
  49.676 +    rfbPointerEventMsg pe;
  49.677 +    rfbClientCutTextMsg cct;
  49.678 +} rfbClientToServerMsg;
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/tools/ioemu/gui/sdl.h	Tue Jan 11 09:28:54 2005 +0000
    50.3 @@ -0,0 +1,1038 @@
    50.4 +#define BX_HEADERBAR_FG_RED	0x10
    50.5 +#define BX_HEADERBAR_FG_GREEN	0x10
    50.6 +#define BX_HEADERBAR_FG_BLUE	0x10
    50.7 +#define BX_HEADERBAR_BG_RED	0xD0
    50.8 +#define BX_HEADERBAR_BG_GREEN	0xD0
    50.9 +#define BX_HEADERBAR_BG_BLUE	0xD0
   50.10 +
   50.11 +unsigned char sdl_font8x16[256][16] = {
   50.12 +  {   0,   0,   0,   0,   0,   0,   0,   0,    // 0
   50.13 +      0,   0,   0,   0,   0,   0,   0,   0 },
   50.14 +  {   0,   0, 126, 129, 165, 129, 129, 189,    // 1
   50.15 +    153, 129, 129, 126,   0,   0