Subversion Repositories HelenOS

Rev

Rev 4061 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4061 Rev 4462
Line 29... Line 29...
29
/** @addtogroup kbd
29
/** @addtogroup kbd
30
 * @{
30
 * @{
31
 */
31
 */
32
/**
32
/**
33
 * @file
33
 * @file
34
 * @brief   Stroke simulator.
34
 * @brief Stroke simulator.
35
 *
35
 *
36
 * When simulating a keyboard using a serial TTY we need to convert the
36
 * When simulating a keyboard using a serial TTY we need to convert the
37
 * recognized strokes (such as Shift-A) to sequences of key presses and
37
 * recognized strokes (such as Shift-A) to sequences of key presses and
38
 * releases (such as 'press Shift, press A, release A, release Shift').
38
 * releases (such as 'press Shift, press A, release A, release Shift').
-
 
39
 *
39
 */
40
 */
40
 
41
 
41
#include <stroke.h>
42
#include <stroke.h>
42
#include <kbd.h>
43
#include <kbd.h>
43
#include <kbd/kbd.h>
44
#include <io/console.h>
44
#include <kbd/keycode.h>
45
#include <io/keycode.h>
45
 
46
 
46
/** Correspondence between modifers and the modifier keycodes. */
47
/** Correspondence between modifers and the modifier keycodes. */
47
static unsigned int mods_keys[][2] = {
48
static unsigned int mods_keys[][2] = {
48
    { KM_LSHIFT, KC_LSHIFT },
49
    { KM_LSHIFT, KC_LSHIFT },
49
    { 0, 0 }
50
    { 0, 0 }
Line 56... Line 57...
56
 
57
 
57
    /* Simulate modifier presses. */
58
    /* Simulate modifier presses. */
58
    i = 0;
59
    i = 0;
59
    while (mods_keys[i][0] != 0) {
60
    while (mods_keys[i][0] != 0) {
60
        if (mod & mods_keys[i][0]) {
61
        if (mod & mods_keys[i][0]) {
61
            kbd_push_ev(KE_PRESS, mods_keys[i][1]);
62
            kbd_push_ev(KEY_PRESS, mods_keys[i][1]);
62
        }
63
        }
63
        ++i;
64
        ++i;
64
    }
65
    }
65
 
66
 
66
    /* Simulate key press and release. */
67
    /* Simulate key press and release. */
67
    if (key != 0) {
68
    if (key != 0) {
68
        kbd_push_ev(KE_PRESS, key);
69
        kbd_push_ev(KEY_PRESS, key);
69
        kbd_push_ev(KE_RELEASE, key);
70
        kbd_push_ev(KEY_RELEASE, key);
70
    }
71
    }
71
 
72
 
72
    /* Simulate modifier releases. */
73
    /* Simulate modifier releases. */
73
    i = 0;
74
    i = 0;
74
    while (mods_keys[i][0] != 0) {
75
    while (mods_keys[i][0] != 0) {
75
        if (mod & mods_keys[i][0]) {
76
        if (mod & mods_keys[i][0]) {
76
            kbd_push_ev(KE_RELEASE, mods_keys[i][1]);
77
            kbd_push_ev(KEY_RELEASE, mods_keys[i][1]);
77
        }
78
        }
78
        ++i;
79
        ++i;
79
    }
80
    }
80
}
81
}
81
 
82
 
82
/**
83
/**
83
 * @}
84
 * @}
84
 */
85
 */