コード例 #1
0
ファイル: x11.c プロジェクト: richard-jansson/veta
void sendkey(void *s,int press_and_release,int toggled){
	symbol_x11 *sym=(symbol_x11 *)s;
	KeyCode modifier;
	KeySym modifier_sym;
	assert(dpy);

	kbio.lastsent=sym->keycode;

	ungrabkeys();
	XFlush(dpy);

	uk_log("send keysym 0x%x keycode %i %s modifier=%i",
			(unsigned int)sym->ks,
			(int)sym->keycode,
			XKeysymToString(sym->ks),
			sym->modifier);

	XTestFakeKeyEvent(dpy,sym->keycode,1,CurrentTime); 
	XFlush(dpy);
	XTestFakeKeyEvent(dpy,sym->keycode,0,CurrentTime+100); 
	XFlush(dpy);

	XFlush(dpy);

	grabkeys();
}
コード例 #2
0
void x11_hotkeys::set_comb(const std::string& val)
{
  if (comb==val)
    return;

  unsigned int modifier=0;
  KeySym key=0;
  std::string::size_type pos=std::string::npos;

  do {
    std::string::size_type prev_pos=pos;
    pos=val.find('+', pos+1);
    std::string cur;
    if (pos!=std::string::npos)
      cur.assign(val, prev_pos+1, pos-prev_pos-1);
    else
      cur.assign(val, prev_pos+1, val.length()-prev_pos-1);
    if (cur=="Ctrl") {
      modifier|=ControlMask;
    } else if (cur=="Alt") {
      modifier|=Mod1Mask;
    } else if (cur=="Shift") {
      modifier|=ShiftMask;
    } else if (cur=="Win") {
      modifier|=Mod4Mask;
    } else {
      key=XStringToKeysym(cur.c_str());
	}
  } while (pos!=std::string::npos);

  comb=val;
  pressed=false;
  grab_key.key.sym=0;
  if (key!=0) {
    ungrabkeys();
    grab_key.type=SYM;
    grab_key.event_type=PRESS;
    grab_key.key.sym=key;
    grab_key.modifier=modifier;
    grab_keys(display, &grab_key, 1);
  } else
    def_hot_keys->set_comb(val);
}
コード例 #3
0
x11_hotkeys::~x11_hotkeys()
{
  ungrabkeys();
}