aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples/data/uzbl/scripts/dispatcher.sh
blob: 3d0aa0345b4d7a5707bf7e2b222876fa6ad9dcad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/sh
#
# Sample uzbl eventhandler
#
# demonstrating one possible way to access and process
# uzbl's event messages
#
# Usage: uzbl | eventhandler
#

VERBOSE=1


ALTPRESSED=0

log () {
	[ -n "$VERBOSE" ] && echo "$1"
}

fifo () {
	log "$1 > ${FIFO_PATH:-unset}"
	[ -n "$FIFO_PATH" ] && echo "$1" > "$FIFO_PATH"
}

log "Init eventhandler"

clear_modifiers() {
    ALT_PRESSED=0
    CONTROL_PRESSED=0
    #etc.
    fifo 'set status_message = '
}

while read EVENT; do
	if [ "$(echo $EVENT | cut -d ' ' -f 1)" != 'EVENT' ]; then
		continue;
	fi
	EVENT="`echo $EVENT | sed 's/^EVENT //'`"
    # get eventname
    ENAME=`echo "$EVENT" | sed -ne 's/\([A-Z]*\) .*/\1/p'`

    if [ x"$ENAME" = 'xFIFO_SET' ]; then
        FIFO_PATH=`echo $EVENT | cut -d ' ' -f 3`

    elif [ x"$ENAME" = x'KEY_PRESS' ]; then
        KEY=$(echo "$EVENT" | sed -ne 's/KEY_PRESS \[.*\] \(.*$\)/\1/p')

        # Clear mofifiers on Escape
        #
        [ "$KEY" = Escape ] && clear_modifiers

        # Modifier: Alt_L
        #
        if [ x"$KEY" = x'Alt_L' ];then
            clear_modifiers
            ALT_PRESSED=1

            # place an indicator showing the active modifier
            # on uzbl's statusbar
            #
            fifo 'set status_message = @status_message <span foreground="red" weight="bold">Alt</span>'
        fi

        if [ "$ALT_PRESSED" = 1 ]; then
            
            # Keys
            #
            if [ x"$KEY" = x'a' ]; then
                ALT_PRESSED=0
                fifo 'set inject_html = <html><body> <h1>You pressed Alt+a </h1> </body></html>'
                fifo 'set status_message = '
                
                # delete keycmd
                # here not needed. loading a new page
                # resets it by default
                #
                #echo 'set keycmd = ' > "$F_PATH"
            fi
            if [ x"$KEY" = x'b' ]; then
                ALT_PRESSED=0
                fifo 'set inject_html = <html><body> <h1>You pressed Alt+b </h1> </body></html>'
                fifo 'set status_message = '
            fi

        fi

        # Modifier: Control_L and Control_R.
        #
        if [ x"$KEY" = x'Control_L' -o x"$KEY" = x'Control_R' ];then
            clear_modifiers
            CONTROL_PRESSED=1
            fifo 'set status_message = @status_message <span foreground="red" weight="bold">Control</span>'
            #etc.
        fi
    fi
done