Added console detection code
Cleanup of commented code. Added fd variable to hold file descriptor for the console (/dev/tty). Modified ioctl() calls to use fd instead of the hardcoded "0".
This commit is contained in:
parent
909604663b
commit
8a20344198
5 changed files with 40 additions and 158 deletions
|
@ -12,7 +12,8 @@
|
|||
#define KEYCODE_FBCON 2
|
||||
|
||||
extern char keyboard_type;
|
||||
extern void init_keyboard(void);
|
||||
extern void init_keyboard(void);
|
||||
extern int fd; /* File descriptor for console (/dev/tty/) */
|
||||
|
||||
/* First, two dummies */
|
||||
#define AK_mousestuff 0x100
|
||||
|
|
|
@ -623,7 +623,7 @@ void virtualdevice_init (void)
|
|||
|
||||
static int real_main2 (int argc, TCHAR **argv)
|
||||
{
|
||||
printf("Amiberry v2.0 build 2016-09-11\n");
|
||||
printf("Amiberry v2.0 build 2016-09-12\n");
|
||||
#ifdef PANDORA_SPECIFIC
|
||||
SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_VIDEO);
|
||||
#else
|
||||
|
@ -695,6 +695,7 @@ static int real_main2 (int argc, TCHAR **argv)
|
|||
memset (&gui_data, 0, sizeof gui_data);
|
||||
gui_data.cd = -1;
|
||||
gui_data.hd = -1;
|
||||
// gui_data.powerled = 1;
|
||||
|
||||
#ifdef PICASSO96
|
||||
picasso_reset ();
|
||||
|
@ -733,7 +734,6 @@ static int real_main2 (int argc, TCHAR **argv)
|
|||
}
|
||||
currprefs.produce_sound = 0;
|
||||
}
|
||||
gui_flicker_led(LED_POWER, 0, 1);
|
||||
start_program ();
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -100,27 +100,9 @@ public:
|
|||
#ifdef RASPBERRY
|
||||
else if (actionEvent.getSource() == cboKBDLed_num)
|
||||
changed_prefs.kbd_led_num = cboKBDLed_num->getSelected();
|
||||
|
||||
// if (cboKBDLed_num->getSelected() == 0) changed_prefs.kbd_led_num = -1; // Nothing
|
||||
// if (cboKBDLed_num->getSelected() == 7) changed_prefs.kbd_led_num = 5; // HD
|
||||
// if (cboKBDLed_num->getSelected() == 6) changed_prefs.kbd_led_num = -2; // Any DFs
|
||||
// if (cboKBDLed_num->getSelected() >= 1 && cboKBDLed_num->getSelected() <= 4) changed_prefs.kbd_led_num = cboKBDLed_num->getSelected() - 1; // Specific DF#
|
||||
|
||||
// else if (actionEvent.getSource() == cboKBDLed_cap)
|
||||
// {
|
||||
// if (cboKBDLed_cap->getSelected() == 0) changed_prefs.kbd_led_cap = -1;
|
||||
// if (cboKBDLed_cap->getSelected() == 7) changed_prefs.kbd_led_cap = 5;
|
||||
// if (cboKBDLed_cap->getSelected() == 6) changed_prefs.kbd_led_cap = -2;
|
||||
// if (cboKBDLed_cap->getSelected() >= 1 && cboKBDLed_cap->getSelected() <= 4) changed_prefs.kbd_led_cap = cboKBDLed_cap->getSelected() - 1;
|
||||
// }
|
||||
else if (actionEvent.getSource() == cboKBDLed_scr)
|
||||
changed_prefs.kbd_led_scr = cboKBDLed_scr->getSelected();
|
||||
|
||||
// if (cboKBDLed_scr->getSelected() == 0) changed_prefs.kbd_led_scr = -1;
|
||||
// if (cboKBDLed_scr->getSelected() == 7) changed_prefs.kbd_led_scr = 5;
|
||||
// if (cboKBDLed_scr->getSelected() == 6) changed_prefs.kbd_led_scr = -2;
|
||||
// if (cboKBDLed_scr->getSelected() >= 1 && cboKBDLed_scr->getSelected() <= 4) changed_prefs.kbd_led_scr = cboKBDLed_scr->getSelected() - 1;
|
||||
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
@ -262,20 +244,5 @@ void RefreshPanelMisc(void)
|
|||
#ifdef RASPBERRY
|
||||
cboKBDLed_num->setSelected(changed_prefs.kbd_led_num);
|
||||
cboKBDLed_scr->setSelected(changed_prefs.kbd_led_scr);
|
||||
|
||||
// if (changed_prefs.kbd_led_num == -1) cboKBDLed_num->setSelected(0);
|
||||
// if (changed_prefs.kbd_led_num == -2) cboKBDLed_num->setSelected(6);
|
||||
// if (changed_prefs.kbd_led_num == 5) cboKBDLed_num->setSelected(7);
|
||||
// if (changed_prefs.kbd_led_num >= 1 && changed_prefs.kbd_led_num <= 4) cboKBDLed_num->setSelected(changed_prefs.kbd_led_num + 1);
|
||||
|
||||
// if (changed_prefs.kbd_led_cap == -1) cboKBDLed_cap->setSelected(0);
|
||||
// if (changed_prefs.kbd_led_cap == -2) cboKBDLed_cap->setSelected(6);
|
||||
// if (changed_prefs.kbd_led_cap == 5) cboKBDLed_cap->setSelected(7);
|
||||
// if (changed_prefs.kbd_led_cap >= 1 && changed_prefs.kbd_led_cap <= 4) cboKBDLed_cap->setSelected(changed_prefs.kbd_led_cap + 1);
|
||||
|
||||
// if (changed_prefs.kbd_led_scr == -1) cboKBDLed_scr->setSelected(0);
|
||||
// if (changed_prefs.kbd_led_scr == -2) cboKBDLed_scr->setSelected(6);
|
||||
// if (changed_prefs.kbd_led_scr == 5) cboKBDLed_scr->setSelected(7);
|
||||
// if (changed_prefs.kbd_led_scr >= 1 && changed_prefs.kbd_led_scr <= 4) cboKBDLed_scr->setSelected(changed_prefs.kbd_led_scr + 1);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <asm/sigcontext.h>
|
||||
|
@ -57,13 +58,20 @@ int customControlMap[SDLK_LAST];
|
|||
|
||||
char start_path_data[MAX_DPATH];
|
||||
char currentDir[MAX_DPATH];
|
||||
|
||||
#ifdef CAPSLOCK_DEBIAN_WORKAROUND
|
||||
#include <linux/kd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
unsigned long kbd_led_status;
|
||||
char kbd_flags;
|
||||
#endif
|
||||
|
||||
int fd; /* File descriptor for console (/dev/tty/) */
|
||||
|
||||
static char config_path[MAX_DPATH];
|
||||
static char rom_path[MAX_DPATH];
|
||||
static char rp9_path[MAX_DPATH];
|
||||
|
@ -780,7 +788,14 @@ uae_u32 emulib_target_getcpurate (uae_u32 v, uae_u32 *low)
|
|||
int main (int argc, char *argv[])
|
||||
{
|
||||
struct sigaction action;
|
||||
|
||||
if ((fd = open("/dev/tty", O_NOCTTY)) == -1)
|
||||
{
|
||||
printf("Error getting /dev/tty, got %d\n", fd);
|
||||
// return fd;
|
||||
}
|
||||
close(fd);
|
||||
// printf("Debug: Got /dev/tty as %d\n", fd);
|
||||
|
||||
defaultCpuSpeed = getDefaultCpuSpeed();
|
||||
|
||||
// Get startup path
|
||||
|
@ -810,24 +825,25 @@ int main (int argc, char *argv[])
|
|||
|
||||
#ifdef CAPSLOCK_DEBIAN_WORKAROUND
|
||||
// set capslock state based upon current "real" state
|
||||
ioctl(0, KDGKBLED, &kbd_flags);
|
||||
ioctl(0, KDGETLED, &kbd_led_status);
|
||||
ioctl(fd, KDGKBLED, &kbd_flags);
|
||||
ioctl(fd, KDGETLED, &kbd_led_status);
|
||||
if ((kbd_flags & 07) & LED_CAP)
|
||||
{
|
||||
// record capslock pressed
|
||||
// printf("Caps lock was pressed");
|
||||
kbd_led_status |= LED_CAP;
|
||||
inputdevice_do_keyboard(AK_CAPSLOCK, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
// record capslock as not pressed
|
||||
// printf("Caps lock was NOT pressed");
|
||||
kbd_led_status &= ~LED_CAP;
|
||||
inputdevice_do_keyboard(AK_CAPSLOCK, 0);
|
||||
}
|
||||
ioctl(0, KDSETLED, kbd_led_status);
|
||||
ioctl(fd, KDSETLED, kbd_led_status);
|
||||
#endif
|
||||
|
||||
//keyboard_settrans();
|
||||
real_main (argc, argv);
|
||||
|
||||
ClearAvailableROMList();
|
||||
|
@ -853,6 +869,7 @@ int handle_msgpump (void)
|
|||
SDL_Event rEvent;
|
||||
int keycode;
|
||||
int modifier;
|
||||
int fd; /* File descriptor for console (/dev/tty/) */
|
||||
|
||||
if(delayed_mousebutton)
|
||||
{
|
||||
|
@ -931,9 +948,9 @@ int handle_msgpump (void)
|
|||
#ifdef CAPSLOCK_DEBIAN_WORKAROUND
|
||||
if (rEvent.key.keysym.sym == SDLK_CAPSLOCK)
|
||||
{
|
||||
ioctl(0, KDGETLED, &kbd_led_status);
|
||||
ioctl(fd, KDGETLED, &kbd_led_status);
|
||||
kbd_led_status |= LED_CAP;
|
||||
ioctl(0, KDSETLED, kbd_led_status);
|
||||
ioctl(fd, KDSETLED, kbd_led_status);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
@ -993,9 +1010,9 @@ int handle_msgpump (void)
|
|||
#ifdef CAPSLOCK_DEBIAN_WORKAROUND
|
||||
if (rEvent.key.keysym.sym == SDLK_CAPSLOCK)
|
||||
{
|
||||
ioctl(0, KDGETLED, &kbd_led_status);
|
||||
ioctl(fd, KDGETLED, &kbd_led_status);
|
||||
kbd_led_status &= ~LED_CAP;
|
||||
ioctl(0, KDSETLED, kbd_led_status);
|
||||
ioctl(fd, KDSETLED, kbd_led_status);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
|
|
@ -36,11 +36,17 @@
|
|||
#ifdef RASPBERRY
|
||||
#include <linux/kd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#endif //RASPBERRY
|
||||
|
||||
int emulating = 0;
|
||||
|
||||
extern int screen_is_picasso;
|
||||
extern int fd; /* File descriptor for console (/dev/tty/) */
|
||||
|
||||
struct gui_msg
|
||||
{
|
||||
|
@ -604,120 +610,10 @@ void moveVertical(int value)
|
|||
|
||||
void gui_handle_events(void)
|
||||
{
|
||||
//int i;
|
||||
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
/*int triggerL = keystate[SDLK_RSHIFT];
|
||||
int triggerR = keystate[SDLK_RCTRL];*/
|
||||
|
||||
if (keystate[SDLK_LCTRL] && keystate[SDLK_LSUPER] && (keystate[SDLK_RSUPER] || keystate[SDLK_MENU]))
|
||||
uae_reset(0, 1);
|
||||
|
||||
// L + R
|
||||
//if (triggerL && triggerR)
|
||||
//{
|
||||
// //up
|
||||
// if (keystate[SDLK_UP])
|
||||
// moveVertical(1);
|
||||
// //down
|
||||
// else if (keystate[SDLK_DOWN])
|
||||
// moveVertical(-1);
|
||||
|
||||
// //1
|
||||
// else if (keystate[SDLK_1])
|
||||
// {
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[0];
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //2
|
||||
// else if (keystate[SDLK_2])
|
||||
// {
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[1];
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //3
|
||||
// else if (keystate[SDLK_3])
|
||||
// {
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[2];
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //4
|
||||
// else if (keystate[SDLK_4])
|
||||
// {
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[3];
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //5
|
||||
// else if (keystate[SDLK_5])
|
||||
// {
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[4];
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //6
|
||||
// else if (keystate[SDLK_6])
|
||||
// {
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[5];
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //9
|
||||
// else if (keystate[SDLK_9])
|
||||
// {
|
||||
// for (i = 0; i < AMIGAHEIGHT_COUNT; ++i)
|
||||
// {
|
||||
// if (currprefs.gfx_size.height == amigaheight_values[i])
|
||||
// {
|
||||
// if (i > 0)
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[i - 1];
|
||||
// else
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[AMIGAHEIGHT_COUNT - 1];
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
// //0
|
||||
// else if (keystate[SDLK_0])
|
||||
// {
|
||||
// for (i = 0; i < AMIGAHEIGHT_COUNT; ++i)
|
||||
// {
|
||||
// if (currprefs.gfx_size.height == amigaheight_values[i])
|
||||
// {
|
||||
// if (i < AMIGAHEIGHT_COUNT - 1)
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[i + 1];
|
||||
// else
|
||||
// changed_prefs.gfx_size.height = amigaheight_values[0];
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// update_display(&changed_prefs);
|
||||
// }
|
||||
//else if (keystate[SDLK_w])
|
||||
//{
|
||||
// // Change width
|
||||
// for (i = 0; i < AMIGAWIDTH_COUNT; ++i)
|
||||
// {
|
||||
// if (currprefs.gfx_size.width == amigawidth_values[i])
|
||||
// {
|
||||
// if (i < AMIGAWIDTH_COUNT - 1)
|
||||
// changed_prefs.gfx_size.width = amigawidth_values[i + 1];
|
||||
// else
|
||||
// changed_prefs.gfx_size.width = amigawidth_values[0];
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// update_display(&changed_prefs);
|
||||
//}
|
||||
//// r
|
||||
//else if (keystate[SDLK_r])
|
||||
//{
|
||||
// // Change resolution (lores/hires)
|
||||
// if (currprefs.gfx_size.width > 600)
|
||||
// changed_prefs.gfx_size.width = currprefs.gfx_size.width / 2;
|
||||
// else
|
||||
// changed_prefs.gfx_size.width = currprefs.gfx_size.width * 2;
|
||||
// update_display(&changed_prefs);
|
||||
//}
|
||||
//}
|
||||
}
|
||||
|
||||
void gui_disk_image_change(int unitnum, const char *name, bool writeprotected)
|
||||
|
@ -733,7 +629,8 @@ void gui_led(int led, int on)
|
|||
if (currprefs.kbd_led_num != changed_prefs.kbd_led_num) currprefs.kbd_led_num = changed_prefs.kbd_led_num;
|
||||
if (currprefs.kbd_led_scr != changed_prefs.kbd_led_scr) currprefs.kbd_led_scr = changed_prefs.kbd_led_scr;
|
||||
|
||||
ioctl(0, KDGETLED, &kbd_led_status);
|
||||
// printf("Debug: About to get KB LED status, using fd: %d\n", fd);
|
||||
ioctl(fd, KDGETLED, &kbd_led_status);
|
||||
|
||||
// Handle floppy led status
|
||||
if (led == LED_DF0 || led == LED_DF1 || led == LED_DF2 || led == LED_DF3)
|
||||
|
@ -751,7 +648,6 @@ void gui_led(int led, int on)
|
|||
}
|
||||
else
|
||||
// Handle power, hd/cd led status
|
||||
// if (led == LED_POWER || led == LED_HD || led == LED_CD)
|
||||
{
|
||||
if (currprefs.kbd_led_num == led)
|
||||
{
|
||||
|
@ -764,7 +660,8 @@ void gui_led(int led, int on)
|
|||
else kbd_led_status &= ~LED_SCR;
|
||||
}
|
||||
}
|
||||
ioctl(0, KDSETLED, kbd_led_status);
|
||||
// printf("Debug: About to set KB LED status, using fd: %d\n", fd);
|
||||
ioctl(fd, KDSETLED, kbd_led_status);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue