static void loop_device(int fd) { struct mtdev dev; struct input_event ev; int ret = mtdev_open(&dev, fd); if (ret) { fprintf(stderr, "error: could not open device: %d\n", ret); return; } show_props(&dev); /* while the device has not been inactive for five seconds */ while (!mtdev_idle(&dev, fd, 5000)) { /* extract all available processed events */ while (mtdev_get(&dev, fd, &ev, 1) > 0) { if (use_event(&ev)) print_event(&ev); } } mtdev_close(&dev); }
//==================== void CommandItem::Invoke(int button) { LPCITEMIDLIST pidl = GetPidl(); if (INVOKE_PROP & button) { show_props(pidl); return; } /*BlackboxZero 1.7.2012 */ char szPath[MAX_PATH]; szPath[0] = '\0'; if (INVOKE_LEFT & button) { m_pMenu->hide_on_click(); if (m_pszCommand) { /*BlackboxZero 1.7.2012 */ //if (const char *p = strstr(m_pszCommand, "%b")) { // post_command_fmt(m_pszCommand, false == m_bChecked); if (const char *p = stristr(m_pszCommand, "@BBCore.exec ")) { _strcpy(szPath, p+13); post_command(m_pszCommand); } else post_command(m_pszCommand); } else if (pidl) { char buf[MAX_PATH]; /*BlackboxZero 1.7.2012 */ char szMenuPath[MAX_PATH]; szMenuPath[0] = '\0'; if (SHGetPathFromIDList(pidl, buf)) sprintf(szPath, "\"%s\"", buf); /*BlackboxZero 1.7.2012 */ BBExecute_pidl(NULL, pidl); /*BlackboxZero 1.7.2012 */ strcpy(szMenuPath, unquote(Settings_recentMenu)); int nKeep = Settings_recentItemKeepSize; int nSort = Settings_recentItemSortSize; bool bBeginEnd = Settings_recentBeginEnd; if (szPath[0] && szMenuPath[0] && (nKeep || nSort)) CreateRecentItemMenu(szMenuPath, szPath, m_pszTitle, m_pszIcon, nKeep, nSort, bBeginEnd); /*BlackboxZero 1.7.2012 */ } return; } if (INVOKE_RIGHT & button) { if (m_pszRightCommand) post_command(m_pszRightCommand); else if (m_pRightmenu) m_pRightmenu->incref(), ShowRightMenu(m_pRightmenu); else if ((GetAsyncKeyState (VK_SHIFT) & 0x8000)) { char buffer[MAX_PATH], param[MAX_PATH]; char *tokens[1]; tokens[0] = param; BBTokenize((const char*)m_pszCommand, tokens, 1, param); if (0 == _memicmp(m_pszCommand, "@BBCfg.plugin", 12)) { if ((GetAsyncKeyState (VK_CONTROL) & 0x8000)) sprintf(buffer, "@BBCfg.plugin.remove %s", param); else sprintf(buffer, "@BBCfg.plugin.edit %s", param); post_command(buffer); } else if (0 == _memicmp(m_pszCommand, "@BBCore.style", 12)) { sprintf(buffer, "@BBCore.edit %s", param); post_command(buffer); } } else ShowContextMenu(m_pszCommand, pidl); return; } if (INVOKE_MID & button) { if (0 == _memicmp(m_pszCommand, "@BBCfg.plugin", 12)) { char buffer[MAX_PATH], param[MAX_PATH]; char *tokens[1]; tokens[0] = param; BBTokenize((const char*)m_pszCommand, tokens, 1, param); sprintf(buffer, "@BBCfg.plugin.docs %s", param); post_command(buffer); } return; } if (INVOKE_DRAG & button) { m_pMenu->start_drag(m_pszCommand, pidl); return; } }