# ---------------------------------------------------------------------------
# 1. Modifiers
#----------------------------------------------------------------------------

# 
# M: Meta or Alt, C: Control, S: Shift, 4: Super (Windows)
#

# For changing FvwmAmetista Key bindings (e.g., zoomming) modifiers
# Replace "CS" by an approriate modifier(s) (sequence), 4 is a good
# idea if you run metisse without window manager
DestroyFunc AFuncPointerKeyAmetistaCmd
AddToFunc   AFuncPointerKeyAmetistaCmd
+ I PointerKey $0 $1 CS $2

# As above for usual window ops (e.g., Moving). Here M can be a good idea
# if you run metisse without window manager
DestroyFunc AFuncPointerKeyWindowCmd
AddToFunc   AFuncPointerKeyWindowCmd
+ I PointerKey $0 $1 MS $2

# As above for Mouse on a window
DestroyFunc AFuncWindowMouse
AddToFunc   AFuncWindowMouse
+ I Mouse $0 W MS AFuncRootMouse$0
# For consistency
+ I Mouse $0 T MS AFuncRootMouse$0

# ---------------------------------------------------------------------------
# 2. Mouse on the Root window
#----------------------------------------------------------------------------

# Mouse button 1 on the root window
DestroyFunc AFuncRootMouse1
AddToFunc   AFuncRootMouse1
+ I Menu AMenuRoot

# Mouse button 2 on the root window
DestroyFunc AFuncRootMouse2
AddToFunc   AFuncRootMouse2
+ I WindowList

# Mouse button 3 on the root window
DestroyFunc AFuncRootMouse3
AddToFunc   AFuncRootMouse3
+ I Menu AMenuWinOps

# Mouse button 4 on the root window
DestroyFunc AFuncRootMouse4
AddToFunc   AFuncRootMouse4
+ I GotoDesk -1 0 $[FVWM_LAST_DESK]

# Mouse button 5 on the root window
DestroyFunc AFuncRootMouse5
AddToFunc   AFuncRootMouse5
+ I GotoDesk 1 0 $[FVWM_LAST_DESK]

# If you run a desktop application (e.g., rox, nautilus desktop or
# kdesktop) we need to add a modifier (sequence) to the "root"
# mouse binding. Here by default Alt-Shift

DestroyFunc AFuncDesktopMouse
AddToFunc   AFuncDesktopMouse
+ I Mouse $0 D MS AFuncRootMouse$0

# ---------------------------------------------------------------------------
# 3. Some useful functions for Window decoration bindings
# ---------------------------------------------------------------------------

# NOTE: Move should not be used, AFuncMove should be used!

DestroyFunc AFuncButtonDragRotateWindow
AddToFunc   AFuncButtonDragRotateWindow
+ I  ModuleWindowOperation FvwmAmetista $0 $1

DestroyFunc AFuncDragRotateWindow
AddToFunc   AFuncDragRotateWindow
+ I  WarpToWindow 50 50
+ I  ModuleWindowOperation FvwmAmetista $0 $1

DestroyFunc AFuncRestore
AddToFunc   AFuncRestore
+ I ThisWindow (!Iconic !State 1 !Shaded Maximized) Maximize    false
+ I ThisWindow (!Iconic !State 1 Shaded           ) WindowShade false
+ I ThisWindow (!Iconic State 1                   ) AFuncAmetistaIconify
+ I ThisWindow ( Iconic                           ) Iconify     false

DestroyFunc AFuncMoveOrShade
AddToFunc   AFuncMoveOrShade
+ I Raise
+ D WindowShade $0
+ M AFuncMove
+ H AFuncMove

DestroyFunc AFuncResizeOrShade
AddToFunc   AFuncResizeOrShade
+ I Raise
+ D WindowShade
+ M Resize
+ H Resize

DestroyFunc AFuncFoldOrShade
AddToFunc   AFuncFoldOrShade
+ I Raise
+ D WindowShade $0
+ M ModuleWindowOperation FvwmAmetista Fold FOLD
+ H ModuleWindowOperation FvwmAmetista Fold FOLD

DestroyFunc AFuncMoveOrIconify
AddToFunc   AFuncMoveOrIconify
+ M	Move
+ D	Iconify

# ---------------------------------------------------------------------------
# 4. Title bar and border
# ---------------------------------------------------------------------------

# Mouse button 1 on the window title bar
DestroyFunc AFuncWindowTitleBarMouse1
AddToFunc   AFuncWindowTitleBarMouse1
+ I AFuncMoveOrShade

# Mouse button 2 on the window title bar
DestroyFunc AFuncWindowTitleBarMouse2
AddToFunc   AFuncWindowTitleBarMouse2
+ I RaiseLower

# Mouse button 3 on the window title bar
DestroyFunc AFuncWindowTitleBarMouse3
AddToFunc   AFuncWindowTitleBarMouse3
+ I sma Reset

# Mouse button 4 on the window title bar
DestroyFunc AFuncWindowTitleBarMouse4
AddToFunc   AFuncWindowTitleBarMouse4
+ I sma Scale 1.1111111

# Mouse button 5 on the window title bar
DestroyFunc AFuncWindowTitleBarMouse5
AddToFunc   AFuncWindowTitleBarMouse5
+ I sma Scale 0.9

#---------------------------------------
# Window borders

# NOTE: an additional argument is passed to these functions:
#       West, NorthWest, North, ..., SouthWest

# Mouse 1 on the borders
DestroyFunc AFuncWindowBordersMouse1
AddToFunc   AFuncWindowBordersMouse1
+ I AFuncFoldOrShade $*

# Mouse 2 on the borders
DestroyFunc AFuncWindowBordersMouse2
AddToFunc   AFuncWindowBordersMouse2
+ I Menu AMenuWinOps

# Mouse 3 on the borders
DestroyFunc AFuncWindowBordersMouse3
AddToFunc   AFuncWindowBordersMouse3
+ I AFuncResizeOrShade

### What to do with buttons 4 and 5 ?

#  
# Mouse 1 + some modifiers on the borders (no arguments) 
#

DestroyFunc AFuncWindowBordersMouse1Mod1
AddToFunc   AFuncWindowBordersMouse1Mod1
+ I Mouse 1 FS S  AFuncResizeOrShade

DestroyFunc AFuncWindowBordersMouse1Mod2
AddToFunc   AFuncWindowBordersMouse1Mod2
+ I Mouse 1 FS MS  AFuncMoveOrShade

#---------------------------------------
# icons

# Mouse 1 on icon
DestroyFunc AFuncWindowIconMouse1
AddToFunc   AFuncWindowIconMouse1
+ I Raise
+ I AFuncMoveOrIconify

# Mouse 2 on icon
DestroyFunc AFuncWindowIconMouse2
AddToFunc   AFuncWindowIconMouse2
+ I Iconify off

# Mouse 3 on icon
DestroyFunc AFuncWindowIconMouse3
AddToFunc   AFuncWindowIconMouse3
+ I Raise
+ I Menu AMenuWinOps

### What to do with buttons 4 and 5 ?

# ---------------------------------------------------------------------------
# 5. Functions executed when you click on a window button
#----------------------------------------------------------------------------

# NOTE: used in window theme, not in bindings

#---------------------------------------
# A maximize Menu for double click on a maximize button

DestroyMenu AMenuMaximize
AddToMenu   AMenuMaximize "Maximize / Scale" Title
+ "Maximize Fully" Maximize On 100 100
+ "Unmaximize"	   Maximize Off
+ "Maximize Grow"  Maximize On grow grow
+ "Maximize Vertically" Maximize On 0 100
+ "Maximize Horizontally" Maximize On 100 0
+ "" Nop
+ "Zoom out 10%%"  sma Scale 1.1111111
+ "Zoom out 25%%"  sma Scale 1.25
+ "Zoom out 40%%"  sma Scale 1.4285714
+ "Zoom out 66%%"  sma Scale 1.6666667
+ "Zoom out 100%%" sma Scale 2

# A minimize Menu for double click on minimize button

DestroyMenu AMenuMinimize
AddToMenu   AMenuMinimize "Zoom in" Title
+ "Zoom in 10%%"  sma Scale 0.9
+ "Zoom in 20%%"  sma Scale 0.8
+ "Zoom in 30%%"  sma Scale 0.7
+ "Zoom in 60%%"  sma Scale 0.6
+ "Zoom in 50%%"  sma Scale 0.5

#---------------------------------------
# Maximize Button

# Mouse 1
DestroyFunc AFuncButtonMaximize
AddToFunc   AFuncButtonMaximize
+ H sma Scale 1.1111111
+ M sma Scale 1.4285714
+ C Maximize
+ D Menu AMenuMaximize

# Mouse 2
DestroyFunc AFuncButtonMaximize2
AddToFunc   AFuncButtonMaximize2
+ I sma Scale 1.4285714

# Mouse 3
DestroyFunc AFuncButtonMaximize3
AddToFunc   AFuncButtonMaximize3
+ I sma Scale 1.1111111

# Mouse 4
DestroyFunc AFuncButtonMaximize4
AddToFunc   AFuncButtonMaximize4
+ I Maximize Off

# Mouse 5
DestroyFunc AFuncButtonMaximize5
AddToFunc   AFuncButtonMaximize5
+ I Maximize On 0 100

#---------------------------------------
# Minimize Button

DestroyFunc AFuncButtonMinimize
AddToFunc   AFuncButtonMinimize
+ C Iconify On
+ H sma Scale 0.9
+ M sma Scale 0.7
+ D Menu AMenuMinimize

DestroyFunc AFuncButtonMinimize2
AddToFunc   AFuncButtonMinimize2
+ I sma Scale 0.7

DestroyFunc AFuncButtonMinimize3
AddToFunc   AFuncButtonMinimize3
+ I sma Scale 0.9

DestroyFunc AFuncButtonMinimize4
AddToFunc   AFuncButtonMinimize4
+ I sma Scale 0.9

DestroyFunc AFuncButtonMinimize5
AddToFunc   AFuncButtonMinimize5
+ I Iconify On

#---------------------------------------
# Close Button

DestroyFunc AFuncButtonClose
AddToFunc   AFuncButtonClose
+ H Nop
+ M Nop
+ C Delete
+ D Close

DestroyFunc AFuncButtonClose2
AddToFunc   AFuncButtonClose2
+ I Destroy

DestroyFunc AFuncButtonClose3
AddToFunc   AFuncButtonClose3
+ I Destroy

#---------------------------------------
# Menu Button

DestroyFunc AFuncButtonMenu
AddToFunc   AFuncButtonMenu
+ I Menu AMenuWinOps $*

DestroyFunc AFuncButtonMenu2
AddToFunc   AFuncButtonMenu2
+ I Menu AMenuWinOpsMoveToDesk

DestroyFunc AFuncButtonMenu3
AddToFunc   AFuncButtonMenu3
+ I Menu AMenuWinOpsLong

#---------------------------------------
# Stick Button

DestroyFunc AFuncButtonStick
AddToFunc   AFuncButtonStick
+ I Stick

DestroyFunc AFuncButtonStick2
AddToFunc   AFuncButtonStick2
+ I Stick

DestroyFunc AFuncButtonStick3
AddToFunc   AFuncButtonStick3
+ I Stick

#---------------------------------------
# Shade Button

DestroyFunc AFuncButtonShade
AddToFunc   AFuncButtonShade
+ I WindowShade

DestroyFunc AFuncButtonShade2
AddToFunc   AFuncButtonShade2
+ I WindowShade

DestroyFunc AFuncButtonShade3
AddToFunc   AFuncButtonShade3
+ I WindowShade

#---------------------------------------
# Y rotate button

DestroyFunc AFuncButtonRotateY
AddToFunc   AFuncButtonRotateY
+ I AFuncButtonDragRotateWindow DragRotateY RotateY

DestroyFunc AFuncButtonRotateY2
AddToFunc   AFuncButtonRotateY2
+ I sma Rotate -4 0 4 0

DestroyFunc AFuncButtonRotateY3
AddToFunc   AFuncButtonRotateY3
+ I sma Rotate 4 0 4 0

#---------------------------------------
# X rotate button

DestroyFunc AFuncButtonRotateX
AddToFunc   AFuncButtonRotateX
+ I AFuncButtonDragRotateWindow DragRotateX RotateX

DestroyFunc AFuncButtonRotateX2
AddToFunc   AFuncButtonRotateX2
+ I sma Rotate -4 4 0 0

DestroyFunc AFuncButtonRotateX3
AddToFunc   AFuncButtonRotateX3
+ I sma Rotate 4 4 0 0

#---------------------------------------
# Z rotate button

DestroyFunc AFuncButtonRotateZ
AddToFunc   AFuncButtonRotateZ
+ I AFuncButtonDragRotateWindow DragRotateZ RotateZ

DestroyFunc AFuncButtonRotateZ2
AddToFunc   AFuncButtonRotateZ2
+ I sma Rotate -4 0 0 4

DestroyFunc AFuncButtonRotateZ3
AddToFunc   AFuncButtonRotateZ3
+ I sma Rotate 4 0 0 4

#---------------------------------------
# 

