terminal/main/main.cpp

105 lines
3.9 KiB
C++

#include "vkvm.hpp"
#include <iostream>
#include <unistd.h>
#include "internal.hpp"
#include "../src/Terminal.h"
int main() {
vkvm::initialize(0);
Terminal terminal = Terminal();
vkvm::registerEvent(vkvm::KeyDown, [&terminal]() {
vkvm::KeyCode keycode = vkvm::getLastPressedKey();
std::cout << keycode << std::endl;
if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){
terminal.shiftpressed();
}
if(((vkvm::KeyCode::Zero & 0xfff) <= keycode) && (keycode <= (vkvm::Nine & 0xfff))){
char ch = keycode - (vkvm::KeyCode::Zero & 0xfff) + '0';
std::cout << ch << std::endl;
terminal.setString(ch);
vkvm::setText(terminal.getString());
std::cout<< vkvm::getText()<< std::endl;
vkvm::callEvent(vkvm::EventType::RenderText);
}
if(((vkvm::KeyCode::A & 0xfff) <= keycode) && (keycode <= (vkvm::KeyCode::Z & 0xfff))){
int status = terminal.getstatus();
char ch;
if(status == 0){
ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'a';
}
else{
ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A';
}
std::cout << ch << std::endl;
terminal.setString(ch);
vkvm::setText(terminal.getString());
std::cout<< vkvm::getText()<< std::endl;
vkvm::callEvent(vkvm::EventType::RenderText);
}
if((vkvm::KeyCode::Space & 0xfff) == keycode){
char ch = keycode - (vkvm::KeyCode::Space & 0xfff) + ' ';
std::cout << ch << std::endl;
terminal.setString(ch);
vkvm::setText(terminal.getString());
std::cout<< vkvm::getText()<< std::endl;
vkvm::callEvent(vkvm::EventType::RenderText);
}
if((vkvm::KeyCode::Backspace & 0xfff) == keycode){
char ch = keycode - (vkvm::KeyCode::Backspace & 0xfff) + ' ';
std::cout << ch << std::endl;
terminal.subString();
vkvm::setText(terminal.getString());
std::cout<< vkvm::getText()<< std::endl;
vkvm::callEvent(vkvm::EventType::RenderText);
}
if((vkvm::KeyCode::Tab & 0xfff) == keycode){
char ch = keycode - (vkvm::KeyCode::Tab & 0xfff) + ' ';
for(int i = 0; i < 3; i++) {
std::cout << ch << std::endl;
terminal.setString(ch);
}
vkvm::setText(terminal.getString());
std::cout<< vkvm::getText()<< std::endl;
vkvm::callEvent(vkvm::EventType::RenderText);
}
if((vkvm::KeyCode::Enter & 0xfff) == keycode){
char ch = '\n';
std::cout << ch << std::endl;
terminal.setString(ch);
vkvm::setText(terminal.getString());
std::cout<< vkvm::getText()<< std::endl;
vkvm::callEvent(vkvm::EventType::RenderText);
}
});
vkvm::registerEvent(vkvm::KeyUp, [&terminal]() {
vkvm::KeyCode keycode = vkvm::getLastPressedKey();
if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){
terminal.shiftup();
}
// char ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A';
// std::cout << ch << std::endl;
// terminal.setString(ch);
// vkvm::setText(terminal.getString());
// std::cout<< vkvm::getText()<< std::endl;
// vkvm::callEvent(vkvm::EventType::RenderText);
});
while(1){
sleep(0.1);
}
}