<?xml version="1.0"?>

<bindings id="htmlBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <binding id="inputFields">
    <handlers>
    <handler event="keypress" keycode="VK_LEFT" command="cmd_charPrevious"/>
    <handler event="keypress" keycode="VK_RIGHT" command="cmd_charNext"/>
    <handler event="keypress" keycode="VK_LEFT" modifiers="shift"
        command="cmd_selectCharPrevious"/>
    <handler event="keypress" keycode="VK_RIGHT" modifiers="shift"
        command="cmd_selectCharNext"/>

      <handler event="keypress" keycode="VK_HOME" command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_END"  command="cmd_endLine"/>
      <handler event="keypress" keycode="VK_HOME" modifiers="shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_END" modifiers="shift" command="cmd_selectEndLine"/>
      <handler event="keypress" keycode="VK_DELETE" modifiers="control" command="cmd_deleteWordForward" />

    <!-- Cut/copy/paste/undo -->
    <handler event="keypress" key="c" modifiers="accel" command="cmd_copy"/>
    <handler event="keypress" key="x" modifiers="accel" command="cmd_cut"/>
    <handler event="keypress" key="v" modifiers="accel" command="cmd_paste"/>
    <handler event="keypress" key="z" command="cmd_redo" modifiers="accel,shift" />
    <handler event="keypress" key="z" modifiers="accel" command="cmd_undo"/>

      <handler event="keypress" key="a" modifiers="accel" command="cmd_selectAll"/>
      <handler event="keypress" keycode="VK_UP"   command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_DOWN" command="cmd_endLine"/>
      <handler event="keypress" keycode="VK_UP"   modifiers="shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="shift" command="cmd_selectEndLine"/>
      <handler event="keypress" keycode="VK_UP"   modifiers="accel" command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="accel" command="cmd_endLine"/>

      <handler event="keypress" keycode="VK_LEFT"  modifiers="alt" command="cmd_wordPrevious"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt" command="cmd_wordNext"/>
      <handler event="keypress" keycode="VK_LEFT"  modifiers="alt,shift" command="cmd_selectWordPrevious"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt,shift" command="cmd_selectWordNext"/>

      <handler event="keypress" keycode="VK_LEFT"  modifiers="control" command="cmd_wordPrevious"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="control" command="cmd_wordNext"/>
      <handler event="keypress" keycode="VK_BACK" modifiers="control" command="cmd_deleteWordBackward"/>

      <handler event="keypress" keycode="VK_LEFT"  modifiers="accel" command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="accel" command="cmd_endLine"/>
      <handler event="keypress" keycode="VK_LEFT"  modifiers="accel,shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="accel,shift" command="cmd_selectEndLine"/>
      <handler event="keypress" keycode="VK_BACK" modifiers="alt" command="cmd_deleteWordBackward"/>

      <!-- Numeric pad -->
      <handler event="keypress" key="&#xf702;" command="cmd_charPrevious"/>
      <handler event="keypress" key="&#xf703;" command="cmd_charNext"/>
      <handler event="keypress" key="&#xf727;" command="cmd_copy" /> <!-- Insert -->
      <handler event="keypress" key="&#xf728;" command="cmd_deleteCharForward" />
      <handler event="keypress" key="&#xf729;" command="cmd_beginLine"/>
      <handler event="keypress" key="&#xf72b;" command="cmd_endLine"/>
      <handler event="keypress" key="&#xf700;" command="cmd_linePrevious"/>
      <handler event="keypress" key="&#xf701;" command="cmd_lineNext"/>
      <handler event="keypress" key="&#xf741;" command="cmd_copy" /> <!-- 5 -->
      <handler event="keypress" key="&#xf72c;" command="cmd_scrollPageUp"/>
      <handler event="keypress" key="&#xf72d;" command="cmd_scrollPageDown"/>

      <handler event="keypress" key="&#xf702;" modifiers="shift"
	  command="cmd_selectCharPrevious"/>			<!-- shift Left -->
      <handler event="keypress" key="&#xf703;" modifiers="shift"
	  command="cmd_selectCharNext"/>			<!-- shift Right -->
      <handler event="keypress" key="&#xf729;" modifiers="shift"
	  command="cmd_selectBeginLine"/>			<!-- shift Home -->
      <handler event="keypress" key="&#xf701;" modifiers="shift"
	  command="cmd_selectEndLine"/>				<!-- shift End -->

    </handlers>
  </binding>

  <binding id="textAreas">
    <handlers>
    <handler event="keypress" keycode="VK_LEFT" command="cmd_charPrevious"/>
    <handler event="keypress" keycode="VK_RIGHT" command="cmd_charNext"/>
    <handler event="keypress" keycode="VK_LEFT" modifiers="shift"
        command="cmd_selectCharPrevious"/>
    <handler event="keypress" keycode="VK_RIGHT" modifiers="shift"
        command="cmd_selectCharNext"/>
    <handler event="keypress" keycode="VK_UP" command="cmd_linePrevious"/>
    <handler event="keypress" keycode="VK_DOWN" command="cmd_lineNext"/>
    <handler event="keypress" keycode="VK_UP" modifiers="shift"
        command="cmd_selectLinePrevious"/>
    <handler event="keypress" keycode="VK_DOWN" modifiers="shift"
        command="cmd_selectLineNext"/>

    <handler event="keypress" keycode="VK_LEFT"  modifiers="control" command="cmd_wordPrevious"/>
    <handler event="keypress" keycode="VK_RIGHT" modifiers="control" command="cmd_wordNext"/>
    <handler event="keypress" keycode="VK_BACK" modifiers="control" command="cmd_deleteWordBackward"/>
    <handler event="keypress" keycode="VK_DELETE" modifiers="control" command="cmd_deleteWordForward" />

    <!-- Cut/copy/paste/undo -->
    <handler event="keypress" key="c" modifiers="accel" command="cmd_copy"/>
    <handler event="keypress" key="x" modifiers="accel" command="cmd_cut"/>
    <handler event="keypress" key="v" modifiers="accel" command="cmd_paste"/>
    <handler event="keypress" key="z" modifiers="accel" command="cmd_undo"/>
    <handler event="keypress" key="z" command="cmd_redo" modifiers="accel,shift" />
      <handler event="keypress" key="a" modifiers="accel" command="cmd_selectAll"/>
      <handler event="keypress" keycode="VK_HOME" command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_END"  command="cmd_endLine"/>
      <handler event="keypress" keycode="VK_HOME" modifiers="shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_END" modifiers="shift" command="cmd_selectEndLine"/>
      <handler event="keypress" keycode="VK_PAGE_UP" command="cmd_scrollPageUp"/>
      <handler event="keypress" keycode="VK_PAGE_DOWN" command="cmd_scrollPageDown"/>

      <handler event="keypress" keycode="VK_UP"   modifiers="accel" command="cmd_moveTop"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="accel" command="cmd_moveBottom"/>
      <handler event="keypress" keycode="VK_UP"   modifiers="accel,shift" command="cmd_selectTop"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="accel,shift" command="cmd_selectBottom"/>

      <handler event="keypress" keycode="VK_UP"   modifiers="alt" command="cmd_movePageUp"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="alt" command="cmd_movePageDown"/>
      <handler event="keypress" keycode="VK_UP"   modifiers="alt,shift" command="cmd_selectPageUp"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="alt,shift" command="cmd_selectPageDown"/>

      <handler event="keypress" keycode="VK_LEFT"  modifiers="alt" command="cmd_wordPrevious"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt" command="cmd_wordNext"/>
      <handler event="keypress" keycode="VK_LEFT"  modifiers="alt,shift" command="cmd_selectWordPrevious"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt,shift" command="cmd_selectWordNext"/>

      <handler event="keypress" keycode="VK_LEFT"  modifiers="accel" command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="accel" command="cmd_endLine"/>
      <handler event="keypress" keycode="VK_LEFT"  modifiers="accel,shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="accel,shift" command="cmd_selectEndLine"/>
      <handler event="keypress" keycode="VK_BACK" modifiers="alt" command="cmd_deleteWordBackward"/>

      <!-- Numeric pad -->
      <handler event="keypress" key="&#xf702;" command="cmd_charPrevious"/>
      <handler event="keypress" key="&#xf703;" command="cmd_charNext"/>
      <handler event="keypress" key="&#xf727;" command="cmd_copy" /> <!-- Insert -->
      <handler event="keypress" key="&#xf728;" command="cmd_deleteCharForward" />
      <handler event="keypress" key="&#xf729;" command="cmd_beginLine"/>
      <handler event="keypress" key="&#xf72b;" command="cmd_endLine"/>
      <handler event="keypress" key="&#xf700;" command="cmd_linePrevious"/>
      <handler event="keypress" key="&#xf701;" command="cmd_lineNext"/>
      <handler event="keypress" key="&#xf741;" command="cmd_copy" /> <!-- 5 -->
      <handler event="keypress" key="&#xf72c;" command="cmd_scrollPageUp"/>
      <handler event="keypress" key="&#xf72d;" command="cmd_scrollPageDown"/>

      <handler event="keypress" key="&#xf702;" modifiers="shift"
	  command="cmd_selectCharPrevious"/>			<!-- shift Left -->
      <handler event="keypress" key="&#xf703;" modifiers="shift"
	  command="cmd_selectCharNext"/>			<!-- shift Right -->
      <handler event="keypress" key="&#xf729;" modifiers="shift"
	  command="cmd_selectBeginLine"/>			<!-- shift Home -->
      <handler event="keypress" key="&#xf701;" modifiers="shift"
	  command="cmd_selectEndLine"/>				<!-- shift End -->

    </handlers>
  </binding>

  <binding id="browser">
    <handlers>
      <handler event="draggesture">
<!--
         nsDragAndDrop.startDrag(event, contentAreaDNDObserver);
-->
      </handler>
      <handler event="dragover">
<!--
         nsDragAndDrop.dragOver(event, contentAreaDNDObserver);
-->
      </handler>
      <handler event="dragdrop">
<!--
         nsDragAndDrop.drop(event, contentAreaDNDObserver);
-->
      </handler>

      <handler event="keypress" key=" " modifiers="shift" command="cmd_scrollPageUp" />
      <handler event="keypress" key=" " command="cmd_scrollPageDown" />

      <handler event="keypress" keycode="VK_UP" command="cmd_scrollLineUp" />
      <handler event="keypress" keycode="VK_DOWN" command="cmd_scrollLineDown" />
      <handler event="keypress" keycode="VK_LEFT" command="cmd_scrollLeft" />
      <handler event="keypress" keycode="VK_RIGHT" command="cmd_scrollRight" />

      <handler event="keypress" key="x" command="cmd_cut" modifiers="accel"/>
      <handler event="keypress" key="c" command="cmd_copy" modifiers="accel"/>
      <handler event="keypress" key="v" command="cmd_paste" modifiers="accel"/>
      <handler event="keypress" key="z" command="cmd_undo" modifiers="accel"/>
      <handler event="keypress" key="z" command="cmd_redo" modifiers="accel,shift" />
      <handler event="keypress" key="a" command="cmd_selectAll" modifiers="accel"/>

      <handler event="keypress" key="/" command="cmd_findTypeText"/>
      <handler event="keypress" key="'" command="cmd_findTypeLinks"/>
      <handler event="keypress" keycode="VK_PAGE_UP" command="cmd_scrollPageUp"/>
      <handler event="keypress" keycode="VK_PAGE_DOWN" command="cmd_scrollPageDown"/>
      <handler event="keypress" keycode="VK_HOME" command="cmd_scrollTop" />
      <handler event="keypress" keycode="VK_END"  command="cmd_scrollBottom" />
      <handler event="keypress" keycode="VK_HOME" modifiers="shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_END" modifiers="shift" command="cmd_selectEndLine"/>

      <handler event="keypress" keycode="VK_LEFT" modifiers="alt" command="cmd_wordPrevious" />
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt" command="cmd_wordNext" />
      <handler event="keypress" keycode="VK_LEFT" modifiers="alt,shift" command="cmd_selectWordPrevious" />
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt,shift" command="cmd_selectWordNext" />
      <handler event="keypress" keycode="VK_LEFT" modifiers="shift" command="cmd_selectCharPrevious" />
      <handler event="keypress" keycode="VK_RIGHT" modifiers="shift" command="cmd_selectCharNext" />
      <handler event="keypress" keycode="VK_UP" modifiers="shift" command="cmd_selectLinePrevious" />
      <handler event="keypress" keycode="VK_DOWN" modifiers="shift" command="cmd_selectLineNext" />
      <handler event="keypress" keycode="VK_UP" modifiers="accel" command="cmd_scrollTop"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="accel" command="cmd_scrollBottom"/>

      <!-- Numeric pad -->
      <handler event="keypress" key="&#xf702;" command="cmd_scrollLeft"/>
      <handler event="keypress" key="&#xf703;" command="cmd_scrollRight"/>
      <handler event="keypress" key="&#xf727;" command="cmd_copy" /> <!-- Insert -->
      <handler event="keypress" key="&#xf728;" command="" />
      <handler event="keypress" key="&#xf729;" command="cmd_scrollTop"/>
      <handler event="keypress" key="&#xf72b;" command="cmd_scrollBottom"/>
      <handler event="keypress" key="&#xf700;" command="cmd_scrollLineUp"/>
      <handler event="keypress" key="&#xf701;" command="cmd_scrollLineDown"/>
      <handler event="keypress" key="&#xf741;" command="cmd_copy" /> <!-- 5 -->
      <handler event="keypress" key="&#xf72c;" command="cmd_scrollPageUp"/>
      <handler event="keypress" key="&#xf72d;" command="cmd_scrollPageDown"/>

      <handler event="keypress" key="&#xf702;" modifiers="shift"
	  command="cmd_selectCharPrevious"/>			<!-- shift Left -->
      <handler event="keypress" key="&#xf703;" modifiers="shift"
	  command="cmd_selectCharNext"/>			<!-- shift Right -->
      <handler event="keypress" key="&#xf729;" modifiers="shift"
	  command="cmd_selectBeginLine"/>			<!-- shift Home -->
      <handler event="keypress" key="&#xf701;" modifiers="shift"
	  command="cmd_selectEndLine"/>				<!-- shift End -->

    </handlers>
  </binding>

  <binding id="editor">
    <handlers>
      <handler event="keypress" keycode="VK_LEFT" command="cmd_charPrevious"/>
      <handler event="keypress" keycode="VK_RIGHT" command="cmd_charNext"/>
      <handler event="keypress" keycode="VK_LEFT" command="cmd_selectCharPrevious" modifiers="shift"/>
      <handler event="keypress" keycode="VK_RIGHT" command="cmd_selectCharNext" modifiers="shift"/>
      <handler event="keypress" keycode="VK_UP" command="cmd_linePrevious"/>
      <handler event="keypress" keycode="VK_DOWN" command="cmd_lineNext"/>
      <handler event="keypress" keycode="VK_UP" command="cmd_selectLinePrevious" modifiers="shift"/>
      <handler event="keypress" keycode="VK_DOWN" command="cmd_selectLineNext" modifiers="shift"/>
      <handler event="keypress" key="z" command="cmd_undo" modifiers="accel"/>
      <handler event="keypress" key="z" command="cmd_redo" modifiers="accel,shift" />
      <handler event="keypress" key="x" command="cmd_cut" modifiers="accel"/>
      <handler event="keypress" key="c" command="cmd_copy" modifiers="accel"/>
      <handler event="keypress" key="v" command="cmd_paste" modifiers="accel"/>
      <handler event="keypress" key="a" command="cmd_selectAll" modifiers="accel"/>
      <handler event="keypress" keycode="VK_HOME" command="cmd_scrollTop" />
      <handler event="keypress" keycode="VK_END"  command="cmd_scrollBottom" />
      <handler event="keypress" keycode="VK_HOME" modifiers="shift" command="cmd_scrollTop"/>
      <handler event="keypress" keycode="VK_END" modifiers="shift" command="cmd_scrollBottom"/>
      <handler event="keypress" keycode="VK_PAGE_UP" command="cmd_scrollPageUp"/>
      <handler event="keypress" keycode="VK_PAGE_DOWN" command="cmd_scrollPageDown"/>

      <handler event="keypress" keycode="VK_LEFT"  modifiers="alt" command="cmd_wordPrevious" />
      <handler event="keypress" keycode="VK_RIGHT" modifiers="alt" command="cmd_wordNext" />
      <handler event="keypress" keycode="VK_LEFT"  modifiers="shift,alt" command="cmd_selectWordPrevious" />
      <handler event="keypress" keycode="VK_RIGHT" modifiers="shift,alt" command="cmd_selectWordNext" />

      <handler event="keypress" keycode="VK_LEFT"  modifiers="accel" command="cmd_beginLine"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="accel" command="cmd_endLine"/>
      <handler event="keypress" keycode="VK_LEFT"  modifiers="accel,shift" command="cmd_selectBeginLine"/>
      <handler event="keypress" keycode="VK_RIGHT" modifiers="accel,shift" command="cmd_selectEndLine"/>

      <handler event="keypress" keycode="VK_DELETE" modifiers="shift" command="cmd_deleteCharForward" />
      <handler event="keypress" keycode="VK_DELETE" modifiers="control" command="cmd_deleteWordForward" />

      <handler event="keypress" keycode="VK_UP"   modifiers="alt" command="cmd_movePageUp"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="alt" command="cmd_movePageDown"/>
      <handler event="keypress" keycode="VK_UP"   modifiers="alt,shift" command="cmd_selectPageUp"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="alt,shift" command="cmd_selectPageDown"/>

      <handler event="keypress" keycode="VK_UP"   modifiers="accel" command="cmd_moveTop"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="accel" command="cmd_moveBottom"/>
      <handler event="keypress" keycode="VK_UP"   modifiers="accel,shift" command="cmd_selectTop"/>
      <handler event="keypress" keycode="VK_DOWN" modifiers="accel,shift" command="cmd_selectBottom"/>
      <handler event="keypress" keycode="VK_BACK" modifiers="alt" command="cmd_deleteWordBackward"/>


      <!-- Numeric pad -->
      <handler event="keypress" key="&#xf702;" command="cmd_charPrevious"/>
      <handler event="keypress" key="&#xf703;" command="cmd_charNext"/>
      <handler event="keypress" key="&#xf727;" command="cmd_copy" /> <!-- Insert -->
      <handler event="keypress" key="&#xf728;" command="cmd_deleteCharForward" />
      <handler event="keypress" key="&#xf729;" command="cmd_beginLine"/>
      <handler event="keypress" key="&#xf72b;" command="cmd_endLine"/>
      <handler event="keypress" key="&#xf700;" command="cmd_linePrevious"/>
      <handler event="keypress" key="&#xf701;" command="cmd_lineNext"/>
      <handler event="keypress" key="&#xf741;" command="cmd_copy" /> <!-- 5 -->
      <handler event="keypress" key="&#xf72c;" command="cmd_scrollPageUp"/>
      <handler event="keypress" key="&#xf72d;" command="cmd_scrollPageDown"/>

      <handler event="keypress" key="&#xf702;" modifiers="shift"
	  command="cmd_selectCharPrevious"/>			<!-- shift Left -->
      <handler event="keypress" key="&#xf703;" modifiers="shift"
	  command="cmd_selectCharNext"/>			<!-- shift Right -->
      <handler event="keypress" key="&#xf729;" modifiers="shift"
	  command="cmd_selectBeginLine"/>			<!-- shift Home -->
      <handler event="keypress" key="&#xf701;" modifiers="shift"
	  command="cmd_selectEndLine"/>				<!-- shift End -->

    </handlers>
  </binding>


</bindings>
