paulie-g / autopy2

A simple, cross-platform GUI automation toolkit for Python.
www.autopy.org
Other
0 stars 0 forks source link

Linux `key` doesn't work much #38

Open paulie-g opened 7 years ago

paulie-g commented 7 years ago

Issue by gitfoxi Sunday Mar 22, 2015 at 16:27 GMT Originally opened as https://github.com/msanders/autopy/issues/67


Ubuntu 14.10

Python 2.7.8 (default, Oct 20 2014, 15:05:19) 
Type "copyright", "credits" or "license" for more information.

In [3]: key.tap(key.K_DELETE, key.MOD_SHIFT)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-29f35e2471fe> in <module>()
----> 1 key.tap(key.K_DELETE, key.MOD_SHIFT)

TypeError: argument must be integer<H>, not int

In [4]: key.toggle(key.K_DELETE, True)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-a7e85dfd8e04> in <module>()
----> 1 key.toggle(key.K_DELETE, True)

TypeError: argument must be integer<H>, not int

In [5]: key.type_string("asdf")

In [6]: asdf
paulie-g commented 7 years ago

Comment by gitfoxi Sunday Mar 22, 2015 at 16:31 GMT


Got an idea from #65. Cast numbers to long and it works.

key.toggle(long(key.K_DELETE), True)
paulie-g commented 7 years ago

Comment by suzuiyuegjy Thursday Oct 08, 2015 at 15:18 GMT


Mac OSX Yosemite 10.10.2

autopy.key.tap(u'q')
Segmentation fault: 11

When use unique character, there is a segmentation fault.

autopy.key.tap(long(0x00))
 a

when use long(0x00), it is correct. And the keyboard index is as follows:

/* Taken from /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h */
#include "keys.h"

#define MAX_KEYS 1024

enum {
  kVK_ANSI_A                    = 0x00,
  kVK_ANSI_S                    = 0x01,
  kVK_ANSI_D                    = 0x02,
  kVK_ANSI_F                    = 0x03,
  kVK_ANSI_H                    = 0x04,
  kVK_ANSI_G                    = 0x05,
  kVK_ANSI_Z                    = 0x06,
  kVK_ANSI_X                    = 0x07,
  kVK_ANSI_C                    = 0x08,
  kVK_ANSI_V                    = 0x09,
  kVK_ANSI_B                    = 0x0B,
  kVK_ANSI_Q                    = 0x0C,
  kVK_ANSI_W                    = 0x0D,
  kVK_ANSI_E                    = 0x0E,
  kVK_ANSI_R                    = 0x0F,
  kVK_ANSI_Y                    = 0x10,
  kVK_ANSI_T                    = 0x11,
  kVK_ANSI_1                    = 0x12,
  kVK_ANSI_2                    = 0x13,
  kVK_ANSI_3                    = 0x14,
  kVK_ANSI_4                    = 0x15,
  kVK_ANSI_6                    = 0x16,
  kVK_ANSI_5                    = 0x17,
  kVK_ANSI_Equal                = 0x18,
  kVK_ANSI_9                    = 0x19,
  kVK_ANSI_7                    = 0x1A,
  kVK_ANSI_Minus                = 0x1B,
  kVK_ANSI_8                    = 0x1C,
  kVK_ANSI_0                    = 0x1D,
  kVK_ANSI_RightBracket         = 0x1E,
  kVK_ANSI_O                    = 0x1F,
  kVK_ANSI_U                    = 0x20,
  kVK_ANSI_LeftBracket          = 0x21,
  kVK_ANSI_I                    = 0x22,
  kVK_ANSI_P                    = 0x23,
  kVK_ANSI_L                    = 0x25,
  kVK_ANSI_J                    = 0x26,
  kVK_ANSI_Quote                = 0x27,
  kVK_ANSI_K                    = 0x28,
  kVK_ANSI_Semicolon            = 0x29,
  kVK_ANSI_Backslash            = 0x2A,
  kVK_ANSI_Comma                = 0x2B,
  kVK_ANSI_Slash                = 0x2C,
  kVK_ANSI_N                    = 0x2D,
  kVK_ANSI_M                    = 0x2E,
  kVK_ANSI_Period               = 0x2F,
  kVK_ANSI_Grave                = 0x32,
  kVK_ANSI_KeypadDecimal        = 0x41,
  kVK_ANSI_KeypadMultiply       = 0x43,
  kVK_ANSI_KeypadPlus           = 0x45,
  kVK_ANSI_KeypadClear          = 0x47,
  kVK_ANSI_KeypadDivide         = 0x4B,
  kVK_ANSI_KeypadEnter          = 0x4C,
  kVK_ANSI_KeypadMinus          = 0x4E,
  kVK_ANSI_KeypadEquals         = 0x51,
  kVK_ANSI_Keypad0              = 0x52,
  kVK_ANSI_Keypad1              = 0x53,
  kVK_ANSI_Keypad2              = 0x54,
  kVK_ANSI_Keypad3              = 0x55,
  kVK_ANSI_Keypad4              = 0x56,
  kVK_ANSI_Keypad5              = 0x57,
  kVK_ANSI_Keypad6              = 0x58,
  kVK_ANSI_Keypad7              = 0x59,
  kVK_ANSI_Keypad8              = 0x5B,
  kVK_ANSI_Keypad9              = 0x5C
};

/* keycodes for keys that are independent of keyboard layout*/
enum {
  kVK_Return                    = 0x24,
  kVK_Tab                       = 0x30,
  kVK_Space                     = 0x31,
  kVK_Delete                    = 0x33,
  kVK_Escape                    = 0x35,
  kVK_Command                   = 0x37,
  kVK_Shift                     = 0x38,
  kVK_CapsLock                  = 0x39,
  kVK_Option                    = 0x3A,
  kVK_Control                   = 0x3B,
  kVK_RightShift                = 0x3C,
  kVK_RightOption               = 0x3D,
  kVK_RightControl              = 0x3E,
  kVK_Function                  = 0x3F,
  kVK_F17                       = 0x40,
  kVK_VolumeUp                  = 0x48,
  kVK_VolumeDown                = 0x49,
  kVK_Mute                      = 0x4A,
  kVK_F18                       = 0x4F,
  kVK_F19                       = 0x50,
  kVK_F20                       = 0x5A,
  kVK_F5                        = 0x60,
  kVK_F6                        = 0x61,
  kVK_F7                        = 0x62,
  kVK_F3                        = 0x63,
  kVK_F8                        = 0x64,
  kVK_F9                        = 0x65,
  kVK_F11                       = 0x67,
  kVK_F13                       = 0x69,
  kVK_F16                       = 0x6A,
  kVK_F14                       = 0x6B,
  kVK_F10                       = 0x6D,
  kVK_F12                       = 0x6F,
  kVK_F15                       = 0x71,
  kVK_Help                      = 0x72,
  kVK_Home                      = 0x73,
  kVK_PageUp                    = 0x74,
  kVK_ForwardDelete             = 0x75,
  kVK_F4                        = 0x76,
  kVK_End                       = 0x77,
  kVK_F2                        = 0x78,
  kVK_PageDown                  = 0x79,
  kVK_F1                        = 0x7A,
  kVK_LeftArrow                 = 0x7B,
  kVK_RightArrow                = 0x7C,
  kVK_DownArrow                 = 0x7D,
  kVK_UpArrow                   = 0x7E
};

int osx_vkeys[MAX_KEYS] = {
    /*KEY_RESERVED*/    -1,
    /*KEY_ESC*/         kVK_Escape,
    /*KEY_1*/           kVK_ANSI_1,
    /*KEY_2*/           kVK_ANSI_2,
    /*KEY_3*/           kVK_ANSI_3,
    /*KEY_4*/           kVK_ANSI_4,
    /*KEY_5*/           kVK_ANSI_5,
    /*KEY_6*/           kVK_ANSI_6,
    /*KEY_7*/           kVK_ANSI_7,
    /*KEY_8*/           kVK_ANSI_8,
    /*KEY_9*/           kVK_ANSI_9,
    /*KEY_0*/           kVK_ANSI_0,
    /*KEY_MINUS*/       kVK_ANSI_Minus,
    /*KEY_EQUAL*/       kVK_ANSI_Equal,
    /*KEY_BACKSPACE*/   kVK_Delete,
    /*KEY_TAB*/         kVK_Tab,
    /*KEY_Q*/           kVK_ANSI_Q, 
    /*KEY_W*/           kVK_ANSI_W,
    /*KEY_E*/           kVK_ANSI_E,
    /*KEY_R*/           kVK_ANSI_R,
    /*KEY_T*/           kVK_ANSI_T,
    /*KEY_Y*/           kVK_ANSI_Y,
    /*KEY_U*/           kVK_ANSI_U,
    /*KEY_I*/           kVK_ANSI_I,
    /*KEY_O*/           kVK_ANSI_O,
    /*KEY_P*/           kVK_ANSI_P,
    /*KEY_LEFTBRACE*/   kVK_ANSI_LeftBracket,
    /*KEY_RIGHTBRACE*/  kVK_ANSI_RightBracket,
    /*KEY_ENTER*/       kVK_Return,
    /*KEY_LEFTCTRL*/    kVK_Control,
    /*KEY_A*/           kVK_ANSI_A,
    /*KEY_S*/           kVK_ANSI_S,
    /*KEY_D*/           kVK_ANSI_D,
    /*KEY_F*/           kVK_ANSI_F,
    /*KEY_G*/           kVK_ANSI_G,
    /*KEY_H*/           kVK_ANSI_H,
    /*KEY_J*/           kVK_ANSI_J,
    /*KEY_K*/           kVK_ANSI_K,
    /*KEY_L*/           kVK_ANSI_L,
    /*KEY_SEMICOLON*/   kVK_ANSI_Semicolon,
    /*KEY_APOSTROPHE*/  kVK_ANSI_Quote,
    /*KEY_GRAVE*/       kVK_ANSI_Grave,
    /*KEY_LEFTSHIFT*/   kVK_Shift,
    /*KEY_BACKSLASH*/   kVK_ANSI_Backslash,
    /*KEY_Z*/           kVK_ANSI_Z,
    /*KEY_X*/           kVK_ANSI_X,
    /*KEY_C*/           kVK_ANSI_C,
    /*KEY_V*/           kVK_ANSI_V,
    /*KEY_B*/           kVK_ANSI_B,
    /*KEY_N*/           kVK_ANSI_N,
    /*KEY_M*/           kVK_ANSI_M,
    /*KEY_COMMA*/       kVK_ANSI_Comma,
    /*KEY_DOT*/         kVK_ANSI_Period,
    /*KEY_SLASH*/       kVK_ANSI_Slash,
    /*KEY_RIGHTSHIFT*/  kVK_RightShift,
    /*KEY_KPASTERISK*/  kVK_ANSI_KeypadMultiply,
    /*KEY_LEFTALT*/     kVK_Option,
    /*KEY_SPACE*/       kVK_Space,
    /*KEY_CAPSLOCK*/    kVK_CapsLock,
    /*KEY_F1*/          kVK_F1,
    /*KEY_F2*/          kVK_F2,
    /*KEY_F3*/          kVK_F3,
    /*KEY_F4*/          kVK_F4,
    /*KEY_F5*/          kVK_F5,
    /*KEY_F6*/          kVK_F6,
    /*KEY_F7*/          kVK_F7,
    /*KEY_F8*/          kVK_F8,
    /*KEY_F9*/          kVK_F9,
    /*KEY_F10*/         kVK_F10,
    /*KEY_NUMLOCK*/     -1,
    /*KEY_SCROLLLOCK*/  -1,
    /*KEY_KP7*/         kVK_ANSI_Keypad7,
    /*KEY_KP8*/         kVK_ANSI_Keypad8,
    /*KEY_KP9*/         kVK_ANSI_Keypad9,
    /*KEY_KPMINUS*/     kVK_ANSI_KeypadMinus,
    /*KEY_KP4*/         kVK_ANSI_Keypad4,
    /*KEY_KP5*/         kVK_ANSI_Keypad5,
    /*KEY_KP6*/         kVK_ANSI_Keypad6,
    /*KEY_KPPLUS*/      kVK_ANSI_KeypadPlus,
    /*KEY_KP1*/         kVK_ANSI_Keypad1,
    /*KEY_KP2*/         kVK_ANSI_Keypad2,
    /*KEY_KP3*/         kVK_ANSI_Keypad3,
    /*KEY_KP0*/         kVK_ANSI_Keypad0,
    /*KEY_KPDOT*/       kVK_ANSI_KeypadDecimal,
                       -1,
    /*KEY_ZENKAKUHANKAKU*/-1,
    /*KEY_102ND*/       -1,
    /*KEY_F11*/         kVK_F11,
    /*KEY_F12*/         kVK_F12,
    /*KEY_RO*/          -1,
    /*KEY_KATAKANA*/    -1,
    /*KEY_HIRAGANA*/   -1,
    /*KEY_HENKAN*/      -1,
    /*KEY_KATAKANAHIRAGANA*/-1,
    /*KEY_MUHENKAN*/    -1,
    /*KEY_KPJPCOMMA*/   -1,
    /*KEY_KPENTER*/     kVK_ANSI_KeypadEnter,
    /*KEY_RIGHTCTRL*/   kVK_RightControl,
    /*KEY_KPSLASH*/     kVK_ANSI_KeypadDivide,
    /*KEY_SYSRQ*/      -1,
    /*KEY_RIGHTALT*/    kVK_RightOption,
    /*KEY_LINEFEED*/    -1,
    /*KEY_HOME*/        kVK_Home,
    /*KEY_UP*/          kVK_UpArrow,
    /*KEY_PAGEUP*/      kVK_PageUp,
    /*KEY_LEFT*/        kVK_LeftArrow,
    /*KEY_RIGHT*/       kVK_RightArrow,
    /*KEY_END*/         kVK_End,
    /*KEY_DOWN*/        kVK_DownArrow,
    /*KEY_PAGEDOWN*/    kVK_PageDown,
    /*KEY_INSERT*/      -1,
    /*KEY_DELETE*/      kVK_ForwardDelete,
    /*KEY_MACRO*/       -1,
    /*KEY_MUTE*/        kVK_Mute,
    /*KEY_VOLUMEDOWN*/  kVK_VolumeUp,
    /*KEY_VOLUMEUP*/    kVK_VolumeDown,
    /*KEY_POWER*/       -1,
    /*KEY_KPEQUAL*/     kVK_ANSI_KeypadEquals,
    /*KEY_KPPLUSMINUS*/-1,
    /*KEY_PAUSE*/       -1,
                       -1,
    /*KEY_KPCOMMA*/     -1,
    /*KEY_HANGUEL*/     -1,
    /*KEY_HANJA*/       -1,
    /*KEY_YEN*/         -1,
    /*KEY_LEFTMETA*/    kVK_Command,
    /*KEY_RIGHTMETA*/   kVK_Command,
    /*KEY_COMPOSE*/     -1,
    /*KEY_STOP*/        -1,
    /*KEY_AGAIN*/       -1,
    /*KEY_PROPS*/       -1,
    /*KEY_UNDO*/        -1,
    /*KEY_FRONT*/       -1,
    /*KEY_COPY*/        -1,
    /*KEY_OPEN*/        -1,
    /*KEY_PASTE*/       -1,
    /*KEY_FIND*/        -1,
    /*KEY_CUT*/         -1,
    /*KEY_HELP*/        kVK_Help,
    /*KEY_MENU*/        -1,
    /*KEY_CALC*/        -1,
    /*KEY_SETUP*/       -1,
    /*KEY_SLEEP*/       -1,
    /*KEY_WAKEUP*/      -1,
    /*KEY_FILE*/        -1,
    /*KEY_SENDFILE*/    -1,
    /*KEY_DELETEFILE*/  -1,
    /*KEY_XFER*/        -1,
    /*KEY_PROG1*/       -1,
    /*KEY_PROG2*/       -1,
    /*KEY_WWW*/         -1,
    /*KEY_MSDOS*/       -1,
    /*KEY_COFFEE*/      -1,
    /*KEY_DIRECTION*/   -1,
    /*KEY_CYCLEWINDOWS*/-1,
    /*KEY_MAIL*/        -1,
    /*KEY_BOOKMARKS*/   -1,
    /*KEY_COMPUTER*/    -1,
    /*KEY_BACK*/        -1,
    /*KEY_FORWARD*/     -1,
    /*KEY_CLOSECD*/     -1,
    /*KEY_EJECTCD*/     -1,
    /*KEY_EJECTCLOSECD*/-1,
    /*KEY_NEXTSONG*/   -1,
    /*KEY_PLAYPAUSE*/   -1,
    /*KEY_PREVIOUSSONG*/-1,
    /*KEY_STOPCD*/      -1,
    /*KEY_RECORD*/      -1,
    /*KEY_REWIND*/      -1,
    /*KEY_PHONE*/       -1,
    /*KEY_ISO*/         -1,
    /*KEY_CONFIG*/      -1,
    /*KEY_HOMEPAGE*/    -1,
    /*KEY_REFRESH*/     -1,
    /*KEY_EXIT*/        -1,
    /*KEY_MOVE*/        -1,
    /*KEY_EDIT*/        -1,
    /*KEY_SCROLLUP*/    -1,
    /*KEY_SCROLLDOWN*/  -1,
    /*KEY_KPLEFTPAREN*/ -1,
    /*KEY_KPRIGHTPAREN*/-1,
                       -1,
                       -1,
    /*KEY_F13*/         kVK_F13,
    /*KEY_F14*/         kVK_F14,
    /*KEY_F15*/         kVK_F15,
    /*KEY_F16*/         kVK_F16,
    /*KEY_F17*/         kVK_F17,
    /*KEY_F18*/         kVK_F18,
    /*KEY_F19*/         kVK_F19,
    /*KEY_F20*/         kVK_F20,
    /*KEY_F21*/         -1,
    /*KEY_F22*/         -1,
    /*KEY_F23*/         -1,
    /*KEY_F24*/         -1,
                       -1,
                       -1,
                       -1,
                       -1,
                       -1,
    /*KEY_PLAYCD*/      -1,
    /*KEY_PAUSECD*/     -1,
    /*KEY_PROG3*/       -1,
    /*KEY_PROG4*/       -1,
    /*KEY_SUSPEND*/     -1,
    /*KEY_CLOSE*/       -1,
    /*KEY_PLAY*/        -1,
    /*KEY_FASTFORWARD*/-1,
    /*KEY_BASSBOOST*/  -1,
    /*KEY_PRINT*/       -1,
    /*KEY_HP*/          -1,
    /*KEY_CAMERA*/      -1,
    /*KEY_SOUND*/       -1,
    /*KEY_QUESTION*/   -1,
    /*KEY_EMAIL*/       -1,
    /*KEY_CHAT*/        -1,
    /*KEY_SEARCH*/      -1,
    /*KEY_CONNECT*/     -1,
    /*KEY_FINANCE*/     -1,
    /*KEY_SPORT*/       -1,
    /*KEY_SHOP*/        -1,
    /*KEY_ALTERASE*/    -1,
    /*KEY_CANCEL*/      -1,
    /*KEY_BRIGHTNESSDOWN*/-1,
    /*KEY_BRIGHTNESSUP*/-1,
    /*KEY_MEDIA*/       -1,
    /*KEY_SWITCHVIDEOMODE*/-1,
    /*KEY_KBDILLUMTOGGLE*/-1,
    /*KEY_KBDILLUMDOWN*/-1,
    /*KEY_KBDILLUMUP*/  -1
};