// arguments: // 1. RowTerm // 2. string data static int lua_RoteTerm_write(lua_State* L) { RoteTerm* rt = lua_RoteTerm_self(L, 1); size_t length; const char* data = luaL_checklstring(L, 2, &length); rote_vt_write(rt, data, length); return 0; }
void mousez(char s, int x, int y) { if (t->docellmouse) { char xy[6]; xy[0]=27; xy[1]='['; xy[2]='M'; xy[3]=s; xy[4]=33+x; xy[5]=33+y; rote_vt_write(t, xy, 6);//thx void } }
void logit(char *s) { rote_vt_write(t, s, strlen(s)+1); rote_vt_write(t,"\n",1); dirty = 1; }
void sdlkeys(RoteTerm *t, int key, int unicode, int mod) { if (key >= SDLK_F1 && key <= SDLK_F15) { char *k; if(asprintf(&k ,"kf%i", key-SDLK_F1+1)!=-1) { rote_vt_terminfo(t, k); free(k); } } else if (key == SDLK_SPACE) rote_vt_keypress(t,32); else #define magic(x) rote_vt_terminfo(t, x ) if (key == SDLK_BACKSPACE) magic( "kbs"); else if (key == SDLK_ESCAPE) rote_vt_keypress(t,27); else if (key == SDLK_LEFT) magic("kcub1"); else if (key == SDLK_RIGHT) magic( "kcuf1"); else if (key == SDLK_UP) magic( "kcuu1"); else if (key == SDLK_DOWN) magic( "kcud1"); else if (key == SDLK_END) magic( "kend"); else if (key == SDLK_HOME) magic("khome"); else if (key == SDLK_DELETE) magic( "kdch1"); else if (key == SDLK_PAGEDOWN) magic( "knp"); else if (key == SDLK_INSERT) magic( "kich1"); else if (key == SDLK_PAGEUP) magic ( "kpp" ); else if (key == SDLK_RETURN) rote_vt_keypress(t,13); else if( unicode ) { if(mod&KMOD_ALT) { char c[2]; c[0]=27; c[1]=key; rote_vt_write(t,c,2); } else { rote_vt_keypress(t,unicode); } } }
static int keypress(struct s3d_evt *event) { struct s3d_key_event *keys = (struct s3d_key_event *)event->buf; int key=keys->keysym; int mod=keys->modifier; if (mod&S3D_KMOD_RSHIFT) { switch (key) { case S3DK_INSERT: clip(mod&S3D_KMOD_RCTRL); } } if (mod&S3D_KMOD_RCTRL) { switch (key) { case S3DK_F5: wdt-=0.1; dirty=1; break; case S3DK_F6: wdt+=0.1; dirty=1; break; case S3DK_F7: afterlife=!afterlife; break; case S3DK_F8: loadl2("l2"); dirty=1; break; case S3DK_F12: dirty=1; showhex=!showhex; printf("showhex=!showhex;\n"); break; case S3DK_F10: dirty=1; ok=!ok; printf("ok\n"); break; case S3DK_END: resizooo(t, 0,1); break; case S3DK_HOME: resizooo(t, 0,-1); break; case S3DK_DELETE: resizooo(t, -1,0); break; case S3DK_PAGEDOWN: resizooo(t, 1,0); break; } } else if (mod&S3D_KMOD_RALT) { switch (key) { case S3DK_END: resizooo(t, 0,100); break; case S3DK_HOME: resizooo(t, 0,-100); break; case S3DK_DELETE: resizooo(t, -100,0); break; case S3DK_PAGEDOWN: resizooo(t, 100,0); break; } } else { if ( (key == S3DK_F1) ) { } else if ( (key >= S3DK_F1) && (key <= S3DK_F15) ) { char *k; if (asprintf(&k ,"kf%i", key-S3DK_F1+1)!=-1) { rote_vt_terminfo(t, k); free(k); } } else if ( (key == S3DK_SPACE) ) keyp(t,32); else if ( (key == S3DK_BACKSPACE) ) rote_vt_terminfo(t, "kbs"); else if ( (key == S3DK_ESCAPE) ) keyp(t,27); else if ( (key == S3DK_LEFT) ) rote_vt_terminfo(t, "kcub1"); else if ( (key == S3DK_RIGHT) ) rote_vt_terminfo(t, "kcuf1"); else if ( (key == S3DK_UP) ) rote_vt_terminfo(t, "kcuu1"); else if ( (key == S3DK_DOWN) ) rote_vt_terminfo(t, "kcud1"); else if ( (key == S3DK_END) ) rote_vt_terminfo(t, "kend"); else if ( (key == S3DK_HOME) ) rote_vt_terminfo(t, "khome"); else if ( (key == S3DK_DELETE) ) rote_vt_terminfo(t, "kdch1"); else if ( (key == S3DK_PAGEDOWN) ) rote_vt_terminfo(t, "knp"); else if ( (key == S3DK_INSERT) ) rote_vt_terminfo(t, "kich1"); else if ( (key == S3DK_PAGEUP) ) if (mod&S3D_KMOD_RSHIFT) scrollup(); else rote_vt_terminfo(t, "kpp"); else if ( (key == S3DK_RETURN) ) { if (mod&(S3D_KMOD_RSHIFT|S3D_KMOD_LSHIFT)) keyp(t,10); else keyp(t,13); } else if (mod&(S3D_KMOD_RALT|S3D_KMOD_LALT)) { char x[2]; x[0]=27; x[1]=keys->keysym; rote_vt_write(t, &x[0], 2);//thx twkm } else { if ( (key==S3DK_LSHIFT)||(key==S3DK_RSHIFT)) { globmousecopying=!keys->state; } else { keyp(t, keys->unicode); // printf("%c, %i\n", keys->keysym, keys->unicode); } } } }