Now that's interesting..
Looking through the code for Hijack,
it appears that the ".R" suffix is only supposed
to be applied when a button _name_ is used, not a hexcode.
Why it worked for me when I did with a hexcode, well.. ??

So.. red-faced and all, here's how to do it:

echo "BUTTON=0x0020DF11" > /proc/empeg_notify
## delay a short while, or not. Then..
echo "BUTTON=0x8020DF11" > /proc/empeg_notify


Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>

static void sendButton (int fd, const char *st)
{
        int ret = write(fd, st, strlen(st));
        if (ret != strlen(st)) {
                fprintf(stderr, "write() returned %d instead of %d\n", ret, strlen(st));
                exit(-1);
        }
}

int main(int argc, char *argv[])
{
        char st[64];
        unsigned int code;
        int fd;

        if (argc != 2) {
                fprintf(stderr, "Error: expected button name/value as only parameter\n");
                exit(-1);
        }

        fd = open("/proc/empeg_notify",O_RDWR);
        if (fd < 0) {
                perror("Failed to open /proc/empeg_notify for RDWR\n");
                exit(1);
        }
        code = strtol(argv[1], NULL, 0);
        sprintf(st, "BUTTONRAW=0x%08x", code);
        sendButton(fd, st);
        usleep(250000);
        sprintf(st, "BUTTONRAW=0x%08x", code | 0x80000000);
        sendButton(fd, st);
        return 0;
}