Skip to content

Commit

Permalink
Fixed grammer and typos.
Browse files Browse the repository at this point in the history
Reduced minimum Keypress duration to 10ms as network delay will add more nontheless.
Added more mobile apps.
  • Loading branch information
uberhalit committed Feb 6, 2017
1 parent 78d87ac commit f52a9f4
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 31 deletions.
2 changes: 1 addition & 1 deletion CitraTouchControl/KeysWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CitraTouchControl"
mc:Ignorable="d"
Title="CitraTouchControl - Configurate Keys" Height="200" Width="700" Topmost="True" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow" Background="LightGray" FontSize="18" Loaded="Window_Loaded">
Title="CitraTouchControl - Configure Keys" Height="200" Width="700" Topmost="True" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow" Background="LightGray" FontSize="18" Loaded="Window_Loaded">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
Expand Down
22 changes: 11 additions & 11 deletions CitraTouchControl/MenuWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CitraTouchControl"
mc:Ignorable="d"
Title="CitraTouchControl - Menu" Height="475" Width="400" Topmost="True" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow" Background="LightGray" Loaded="Window_Loaded" Closing="Window_Closing">
Title="CitraTouchControl - Menu" Height="450" Width="400" Topmost="True" WindowStartupLocation="CenterOwner" WindowStyle="ToolWindow" Background="LightGray" Loaded="Window_Loaded" Closing="Window_Closing">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
Expand All @@ -22,15 +22,15 @@
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Button x:Name="bResize" Grid.Row="0" Grid.Column="0" Content="Readjust Overlay" FontSize="24" FontWeight="Bold" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Click="bResize_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bTouch" Grid.Row="1" Grid.Column="0" Content="Enable Touch" FontSize="24" FontWeight="Bold" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Click="bTouch_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bControls" Grid.Row="2" Grid.Column="0" Content="Hide Controls" FontSize="24" FontWeight="Bold" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Click="bControls_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bTap" Grid.Row="3" Grid.Column="0" Content="Touch: Tap only" FontSize="24" FontWeight="Bold" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Grid.ColumnSpan="3" Click="bTap_Click"/>
<Button x:Name="bDPlus" Grid.Row="4" Grid.Column="0" Content="+" FontSize="24" FontWeight="Bold" Margin="10,5,5,5" BorderThickness="1" Focusable="False" Click="bDPlus_Click"/>
<Button x:Name="bDuration" Grid.Row="4" Grid.Column="1" Content="KeyPress: 50ms" FontSize="24" FontWeight="Bold" Margin="5,5,5,5" BorderThickness="1" Focusable="False" />
<Button x:Name="bDMinus" Grid.Row="4" Grid.Column="2" Content="-" FontSize="24" FontWeight="Bold" Margin="5,5,10,5" BorderThickness="1" Focusable="False" Click="bDMinus_Click" />
<Button x:Name="bKeys" Grid.Row="5" Grid.Column="0" Content="Configurate Keys" FontSize="24" FontWeight="Bold" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Click="bKeys_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bExit" Grid.Row="6" Grid.Column="0" Content="Exit CitraTouchControl" FontSize="24" FontWeight="Bold" Foreground="DarkRed" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Click="bExit_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bClose" Grid.Row="7" Grid.Column="0" Content="Close Window" FontSize="24" FontWeight="Bold" Margin="10,5,10,5" BorderThickness="1" Focusable="False" Click="bClose_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bResize" Grid.Row="0" Grid.Column="0" Content="Readjust Overlay" FontSize="24" FontWeight="Bold" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Click="bResize_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bTouch" Grid.Row="1" Grid.Column="0" Content="Enable Touch" FontSize="24" FontWeight="Bold" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Click="bTouch_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bControls" Grid.Row="2" Grid.Column="0" Content="Hide Controls" FontSize="24" FontWeight="Bold" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Click="bControls_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bTap" Grid.Row="3" Grid.Column="0" Content="Touch: Tap only" FontSize="24" FontWeight="Bold" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Grid.ColumnSpan="3" Click="bTap_Click"/>
<Button x:Name="bDPlus" Grid.Row="4" Grid.Column="0" Content="+" FontSize="24" FontWeight="Bold" Margin="10,4,5,4" BorderThickness="1" Focusable="False" Click="bDPlus_Click"/>
<Button x:Name="bDuration" Grid.Row="4" Grid.Column="1" Content="KeyPress: 50ms" FontSize="24" FontWeight="Bold" Margin="5,4,5,4" BorderThickness="1" Focusable="False" />
<Button x:Name="bDMinus" Grid.Row="4" Grid.Column="2" Content="-" FontSize="24" FontWeight="Bold" Margin="5,4,10,4" BorderThickness="1" Focusable="False" Click="bDMinus_Click" />
<Button x:Name="bKeys" Grid.Row="5" Grid.Column="0" Content="Configure Keys" FontSize="24" FontWeight="Bold" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Click="bKeys_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bExit" Grid.Row="6" Grid.Column="0" Content="Exit CitraTouchControl" FontSize="24" FontWeight="Bold" Foreground="DarkRed" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Click="bExit_Click" Grid.ColumnSpan="3"/>
<Button x:Name="bClose" Grid.Row="7" Grid.Column="0" Content="Close Window" FontSize="24" FontWeight="Bold" Margin="10,4,10,4" BorderThickness="1" Focusable="False" Click="bClose_Click" Grid.ColumnSpan="3"/>
</Grid>
</Window>
2 changes: 1 addition & 1 deletion CitraTouchControl/MenuWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ private void bDPlus_Click(object sender, RoutedEventArgs e)
/// </summary>
private void bDMinus_Click(object sender, RoutedEventArgs e)
{
if (GlobalVars.KeyPressDuration > 20)
if (GlobalVars.KeyPressDuration > 10)
GlobalVars.KeyPressDuration -= 5;
Properties.Settings.Default.KeyPressDuration = GlobalVars.KeyPressDuration;
bDuration.Content = "KeyPress: " + GlobalVars.KeyPressDuration + "ms";
Expand Down
4 changes: 2 additions & 2 deletions CitraTouchControl/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,5 @@
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
38 changes: 22 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# CitraTouchControl #

CitraTouchControl offers a multitouch able onscreen overlay for the [Nintendo 3DS Emulator Citra](https://github.com/citra-emu/citra).
CitraTouchControl offers a multi touch able onscreen overlay for the [Nintendo 3DS Emulator Citra](https://github.com/citra-emu/citra).

This is useful for remote play sessions with Citra from a mobile device or if you just don't wan't to sit in front of your PC to play.
This is useful for remote play sessions with Citra from a mobile device or if you just do not want to sit in front of your PC to play.

It will auto adjust to match Citra position and size, onscreen controls' keys can be modified and touch/controls can be toggled on and off.

![#c5f015](http://placehold.it/15/c5f015/000000?text=+) **[See it in Action](http://a.pomf.cat/rqiutm.webm)**

![CitraTouchControl](https://i.imgur.com/u38o2VN.png)
![CitraTouchControl](https://i.imgur.com/kQHSBfl.png)
## Requirements ##
* Citra-Qt build ([grab the latest bleeding edge build here](https://github.com/citra-emu/citra-bleeding-edge/releases))
* Windows PC with Aero (Windows 7 or later) which runs Citra at decent (>30) framerates
* Mobile device which can handle a massive input network-stream
* fast (>75Mbps) network connection between the host-PC and your mobile device (ideally PC->LAN->Router->5G WLAN->Mobile device)
* Mobile device that can handle a massive input network-stream
* Fast (>75Mbps) network connection between the host-PC and your mobile device (ideally PC->LAN->Router->5G WLAN->Mobile device)


## Usage ##
Expand All @@ -27,34 +27,40 @@ It will auto adjust to match Citra position and size, onscreen controls' keys ca
1. [Enable RDP on your host PC](http://www.howtogeek.com/howto/windows-vista/turn-on-remote-desktop-in-windows-vista/)
* Make sure services "TermService" and "SessionEnv" are running if you encounter any problems
2. Start Citra and CitraTouchControl, press the menu button on CitraTouchControl (bottom one) to bring up the configuration menu
1. Press "Configurate Keys" to bring up the next window and set all your controls there
1. Press "Configure Keys" to bring up the next window and set all your controls there
3. Install [Microsoft Remote Desktop Beta](https://play.google.com/store/apps/details?id=com.microsoft.rdc.android.beta) on your mobile device
4. Start it and add a new Desktop connection to your host PC
1. Insert the local IP and Windows credentials of your host PC
2. Enable "Custom display resolution" and set it to "788x1260"
3. If you want sound then set Sound to "Play sound on device" (this will require additional bandwidth)
3. If you want sound, then set Sound to "Play sound on device" (this will require additional bandwidth)
![Microsoft Remote Desktop Beta](https://i.imgur.com/0RPYSDD.png)


## Options ##
* Readjust Overlay: will get position and size of Citra again and place overlay accordingly. Use this if the overlay is off.
* Enable Touch: will make the overlay "clickthrough" (buttons will still work)
* Hide controls: will remove all controls except the menu button from the overlay. Use this in combinition with enabled touch for a stylus like experience.
* Touch: Tap only: will make all onscreen buttons "static". If you press a button it will send KeyDown and KeyUp. Holding a button will not send multiple keystrokes anymore. Use this if you encounter involuntary KeyPresses (mostly due to lag).
* Keypress: adjust the delay a Key keeps beeing pressed after you removed your finger from the button. Reduce this if you encounter involuntary KeyPresses (mostly due to lag) or increase it if buttons doesn't get recognised anymore.
* Configurate Keys: set keys for all onscreen controls (only works with a physical keyboard, will not work over RDP from a mobile device)
* Enable Touch: will make the overlay "click through" (buttons will still work)
* Hide controls: will remove all controls except the menu button from the overlay. Use this and enabled touch for a stylus like experience.
* Touch: Tap only: will make all onscreen buttons "static". If you press a button, it will send KeyDown and KeyUp. Holding a button will not send multiple keystrokes anymore. Use this if you encounter involuntary KeyPresses (mostly due to lag).
* Keypress: adjust the duration a Key keeps being pressed after you removed your finger from the button. Reduce this if you encounter involuntary KeyPresses (mostly due to lag) or increase it if buttons are not recognized anymore.
* Configure Keys: set keys for all onscreen controls (only works with a physical keyboard, will not work over RDP from a mobile device)


## Tested Remote Desktop Apps ##
| Platorm | App | Working | Information |
| Platform | App | Working | Information |
| ------------- | ------------- | ------------- | ------------- |
| Android | [Microsoft Remote Desktop Beta](https://play.google.com/store/apps/details?id=com.microsoft.rdc.android.beta) | **_Yes_** |
| Android | [AccessToGo RDP/Remote Desktop](https://play.google.com/store/apps/details?id=com.ericom.accesstogobyericom) | Yes | buggy, annoying touch-feedback, no network level auth
| Android | [Microsoft Remote Desktop](https://play.google.com/store/apps/details?id=com.microsoft.rdc.android) | no | no portrait mode |
| Android | [TeamViewer](https://play.google.com/store/apps/details?id=com.teamviewer.teamviewer.market.mobile) | no | no portrait mode, distorted sound |
| Android | [RDP Remote Desktop aFreeRDP](https://play.google.com/store/apps/details?id=com.freerdp.afreerdp) | no | no (multi-)touch |
| Android | [RDP Remote Desktop Connection](https://play.google.com/store/apps/details?id=com.thinstuff.rdc) | no | no (multi-)touch |
| Android | [aRDP Pro: Secure RDP Client](https://play.google.com/store/apps/details?id=com.iiordanov.aRDP) | no | no (multi-)touch |
| Android | [Jump Desktop (RDP & VNC)](https://play.google.com/store/apps/details?id=com.p5sys.android.jump) | no | no (multi-)touch |
| Android | [Remote Desktop Manager](https://play.google.com/store/apps/details?id=com.devolutions.remotedesktopmanager) | no | no (multi-)touch |
| Android | [GoToMyPC (Remote Desktop)](https://play.google.com/store/apps/details?id=com.citrixonline.gotomypc) | no | no (multi-)touch |
| Android | [Parallels Client (legacy)](https://play.google.com/store/apps/details?id=com.tux.client) | no | no (multi-)touch, no scaling |
| Android | [Remotix VNC RDP Remote Desktop](https://play.google.com/store/apps/details?id=com.nulana.android.remotix) | no | no (multi-)touch, slow |
| Android | [Splashtop 2 Remote Desktop](https://play.google.com/store/apps/details?id=com.splashtop.remote.pad.v2) | no | slow, no portrait mode |
| Android | [NoMachine](https://play.google.com/store/apps/details?id=com.nomachine.nxplayer) | no | slow, no portrait mode |
| Android | [Remote Desktop Client](https://play.google.com/store/apps/details?id=com.xtralogic.android.rdpclient) | no | very slow |

Expand All @@ -65,9 +71,9 @@ If you find any Remote Desktop App which is fast enough for this kind of usage a

## Limitations ##
* Due to the fact that Microsofts RDP display driver does not support OpenGL 3.3 Citra will not work if you start it over a RDP-session. Start Citra and load your game **BEFORE** you connect via RDP.
* Configurating keys only works with a physical keyboard, it will not work via Remote Desktop from a mobile device.
* Overlay only checks for a proces called "citra-qt.exe". If your build of Citra is called something else then you'll have to rename it.
* Configuring keys only works with a physical keyboard; it will not work via Remote Desktop from a mobile device.
* Overlay only checks for a process called "citra-qt.exe". If your build of Citra is called something else then you'll have to rename it.
* Overlay will not adjust itself after startup. Use the "Readjust Overlay" option in menu if you move/resize Citra later.
* Overlay will not detect a restart of Citra. You'll have to manually restart CitraTouchControl if you close and reopen Citra.
* Overlay will not detect a restart of Citra. You will have to restart CitraTouchControl manually if you close and reopen Citra.
* If Citra runs in admin mode you'll have to start CitraTouchControl as admin too.
* If your connection has lag >50ms CitraTouchControl will eventually hold KeyDown for too long which will result in recognition of multiple KeyPresses. Try the "Touch: Tap only" option in menu or reduce the KeyPress duration.

0 comments on commit f52a9f4

Please sign in to comment.