diff --git a/share/keepass/icons/keepassx.png b/share/keepass/icons/keepassx.png new file mode 100644 index 0000000..c3f1198 Binary files /dev/null and b/share/keepass/icons/keepassx.png differ diff --git a/src/lib/AutoType.cpp b/src/lib/AutoType.cpp index c9f20ff..7027812 100644 --- a/src/lib/AutoType.cpp +++ b/src/lib/AutoType.cpp @@ -47,14 +47,14 @@ switch(mods){ case 0: //no modifier break; case 1: //Shift - XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_Shift_L),press,5); + XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_Shift_L),press,2); break; case 2: //AltGr - XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_ISO_Level3_Shift),press,5); + XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_ISO_Level3_Shift),press,2); break; case 3: //Shift+AltGr - XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_Shift_L),press,5); - XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_ISO_Level3_Shift),press,5); + XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_Shift_L),press,2); + XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_ISO_Level3_Shift),press,2); break; } } @@ -79,46 +79,102 @@ if(c==1){ else str="{USERNAME}{TAB}{PASSWORD}{ENTER}"; -/* -KeePass/Win template compatibility: -only supported syntax is:{TEMPLATE-NAME} -%TEMPLATE-NAME% syntax is not supported! -*/ - -str.replace("{TITLE}",entry->Title,Qt::CaseInsensitive); -str.replace("{USERNAME}",entry->UserName,Qt::CaseInsensitive); -entry->Password.unlock(); -str.replace("{PASSWORD}",entry->Password.string(),Qt::CaseInsensitive); -entry->Password.lock(); -str.replace("{URL}",entry->URL,Qt::CaseInsensitive); -str.replace("{SPACE}",QString(" "),Qt::CaseInsensitive); -str.replace("{ADD}",QString("+"),Qt::CaseInsensitive); -str.replace("{SUBTRACT}",QString("-"),Qt::CaseInsensitive); -str.replace("{DIVIDE}",QString("/"),Qt::CaseInsensitive); -str.replace("{MULTIPLY}",QString("*"),Qt::CaseInsensitive); -str.replace("{PLUS}",QString("+"),Qt::CaseInsensitive); - - - QList Keys; -for(int i=0;i=str.size()){ + err=tr("Syntax Error in Auto-Type sequence near character %1\n\ + Found '{' without closing '}'").arg(i+10); + return; + } + templateToKeysyms(tmpl.lower(),Keys,entry); + continue; + } + else + Keys << getKeysym(str[i]); } + + MainWin->hide(); Display* pDisplay = XOpenDisplay( NULL ); for(int i=0;ishow(); } +void AutoType::templateToKeysyms(const QString& tmpl, QList& keys,CEntry* entry){ +//tmpl must be lower case!!! +if(!tmpl.compare("title")){ + stringToKeysyms(entry->Title,keys); + return;} +if(!tmpl.compare("username")){ + stringToKeysyms(entry->UserName,keys); + return;} +if(!tmpl.compare("url")){ + stringToKeysyms(entry->URL,keys); + return;} +if(!tmpl.compare("password")){ + entry->Password.unlock(); + stringToKeysyms(entry->Password.string(),keys); + entry->Password.lock(); + return; +} +if(!tmpl.compare("space")){ + keys << getKeysym(' '); + return;} + +if(!tmpl.compare("backspace") || !tmpl.compare("bs") || !tmpl.compare("bksp")){ + keys << XK_BackSpace; + return;} + +if(!tmpl.compare("break")){ + keys << XK_Break; + return;} + +if(!tmpl.compare("capslock")){ + keys << XK_Caps_Lock; + return;} + +if(!tmpl.compare("del") || !tmpl.compare("delete")){ + keys << XK_Delete; + return;} + +if(!tmpl.compare("end")){ + keys << XK_End; + return;} + +if(!tmpl.compare("enter")){ + keys << XK_Return; + return;} + +if(!tmpl.compare("esc")){ + keys << XK_Escape; + return;} + +if(!tmpl.compare("help")){ + keys << XK_Help; + return;} +} + +void AutoType::stringToKeysyms(const QString& string,QList& KeySymList){ +for(int i=0; i& KeySymList,CEntry* entry); + static void stringToKeysyms(const QString& string,QList& KeySymList); diff --git a/src/main.cpp b/src/main.cpp index 6c2a47b..1111cdd 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -233,6 +233,8 @@ void loadImages(){ bool small=true; QString ThemeDir=AppDir+"/../share/keepass/icons/nuvola/32x32"; + + QPixmap tmpImg; //----------------------- diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 64c77d0..9011b54 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -174,6 +174,7 @@ void KeepassMainWindow::setupToolbar(){ } void KeepassMainWindow::setupIcons(){ +setWindowIcon(QIcon(AppDir+"/../share/keepass/icons/keepassx.png")); FileNewAction->setIcon(*Icon_FileNew); FileOpenAction->setIcon(*Icon_FileOpen); FileSaveAction->setIcon(*Icon_FileSave);