# Chicken of the VNC

##
brawwwK!

### Based on VNCViewer by Helmut Maierhofer helmut.maierhofer@chello.at
Mac OS X port and cheesy name by Jason Harris support@geekspiff.com
Icon generously provided by Cale Peeples cale@dumbculture.com
http://cotvnc.sourceforge.net/

# About Chicken of the VNC

Chicken of the VNC is a VNC client for Mac OS X. A VNC client allows one to display and interact with a remote computer screen. In other words, you can use Chicken of the VNC to interact with a remote computer as though it's right next to you.

Chicken of the VNC was written by Helmut Maierhofer for OpenStep on Intel and Jason Harris (the author of this document) ported it to the Cocoa API on Mac OS X. Helmut's original version was called VNCViewer, but as there are already several VNC programs on Mac OS X with this name, I decided to save some confusion and call it by this horrible Chicken name instead.

More information about VNC can be found at the RealVNC website: http://www.realvnc.com/.

# Using Chicken of the VNC

Note: If you have used a version of Chicken of the VNC prior to 1.3, you will need to either delete your preferences (in ~/Library/Preferences/com.geekspiff.chickenofthevnc.plist), or reset the modifier key mappings in all of your stored profiles. If you wish, you may also delete the "Chicken of the VNC" folder in your preferences, as it is no longer used.

Use it just like any other VNC client - enter the address of a working VNC server (you can use host:ip notation if you wish), the display number and your password and rock'n'roll...

- Servers: You can store commonly used servers in this section. Use the + and - buttons to add and remove servers.
- Host: The host to which you wish to connect. This can be either a DNS name (like myserver.com) or an IP address. You may optionally specify a port number here by appending it with a colon (like myserver.com:5900). You must be able to "ping" the host to connect to it.
- Display: The display number for the connection. VNC server programs on Windows machines tend to default to display number 0, while older VNC servers on Mac OS X, such as OSXvnc version 0.7, tend to use display number 1. If you can't connect, you can try switching the display number between these two values. If you're having problems connecting, you should make sure that the port that corresponds to your display number is not firewalled on either your computer or on the server machine. The port number is 5900 plus the display number - in other words, display zero is port 5900, display one is port 5901, etc.
- Password: The password needed to connect to the server running at the specified host and display. If Remember Password was checked, this will be fetched from your Mac OS X Keychain after you've entered it initially.
- Remember Password: If checked, the password will be stored in your Mac OS X Keychain and remembered for later use.
- Profile: The connection profile to use when connecting to this server. See the section below for more info about connection profiles.
- View Only: If selected, your connection will not be interactive. You will be able to view the server's screen, but mouse movements, key presses and the like will not be transmitted.
- Allow Other Clients To Connect: If selected, multiple clients can connect to the same server simultaneously. Otherwise, only one client can be connected to a given server at at time.
- Fullscreen Display: If selected, the connection will initially be opened using your entire screen, rather than in a window.

You can also check RealVNC's web page for additional information on connection and configuring a VNC client.

# More About Connections

The Chicken supports server autodiscovery using Bonjour (formerly known as Rendezvous). To enable it, select the Use Bonjour item in Chicken's application menu. Servers that advertise themselves using Bonjour will automatically show up in your bookmarks window!

If you wish to connect to a server without using bookmarks, just choose New Connection from the File menu. Of course, if you decide that you want to bookmark the server, you can always check the "Save Server" button before you connect.

You can get back to the bookmarks window you saw when you launched Chicken of the VNC by selecting Open Connection from the File menu.

You can connect to a server that is behind a firewall by using a listening connection. Choose Listen for Server from the File menu and then set the VNC server up to initiate a listening connection to your client machine.

# Using Connection Profiles

You can use profiles to store settings for an individual VNC server or for a class of servers. For example, you might want to use full-color display for a server that is on your local area network, but drop down to 8-bit display for a remote machine.

You can also use profiles to specify your default encoding. VNC operates by transferring an image of the screen from the server to the client. This obviously requires lots of bandwidth. The better the encoding that you use to transfer this information, the less "lag" you'll experience while using the Chicken. Unfortunately, encodings that require less bandwidth also require more CPU utilization on both the server and client computers, so you may need to experience to find the encoding that's right for your situation.

The different encodings are (in rough order of efficiency)

- ZRLE
- Tight
- Zlib
- ZlibHex
- Hextile
- CoRRE
- RRE
- Raw

- Profiles: A list of profiles that are available to use for your connections. Add a new profile by typing its name below the list and pressing New. Remove a profile other than the default one by selecting it and pressing the Delete button. The information in the remainder of the window belongs to the selected profile.
- Encodings: The encoding to use for the connection. Encodings are described above. You can drag encodings to change your preferred encoding - the top one is tried first, and subsequent ones are tried until one is found that is supported by your server. To disable an encoding, uncheck it. CopyRect Encoding is an optimization that's useful in some situations. If you're connecting to a very old server, you may wish to turn it off, but we haven't run across any situations where it isn't supported.

If you are one of those cursed with a single button mouse, you have many mouse button emulation options.

You can emulate a button click by holding down a modifier key while clicking your single button mouse using the Modifier Click emulation option. For example, you can use this to imitate the familiar control-click paradigm used on your Macintosh.

The Multi-Tap option lets you emulate a button click by tapping a particular modifier key quickly. For example, you can right-click at the current mouse position by tapping the Command key twice quickly.

The Tap and Click option lets you emulate a button click by tappinga modifier key a single time and then clicking the mouse. This is the behavior that was in previous versions of Chicken of the VNC, so you may already be accustomed to it. Once you've tapped the modifier key, the mouse cursor will change to indicate that a mouse click will be emulated. You can cancel emulation by waiting for it to timeout, or by pressing the Escape key on your keyboard.

If you don't wish to use mouse button emulation, you can set the No Emulation option.

If you are lucky enough to have a two or three button mouse, you don't need to worry about emulation as Chicken of the VNC supports up to three mouse buttons, as well as scroll-wheels on compatible servers.

- Modifiers: You can use this section to map the modifier keys on your Macintosh keyboard to keys commonly used on other operating systems. This allows you to use the Alt key on a Windows server or the Meta key on a Unix server, for example.

- Color: You can use this section to select the color resolution you wish to use with your remote servers. Since VNC is a bandwidth-intensive protocol, you may obtain better responsiveness by reducing your color resolution. Let Server Decide uses the native color resolution of the server.

# Full Screen Display

The Chicken can be toggled in and out of full screen display by pressing the keyboard combination command-option-control-`. The 'command' key is also known as the 'Apple' key. The back-quote (`) is the character immediately to the left of the number '1' on American keyboards.

If this key combination interferes with your work, or is not convenient on international keyboards, it can be changed in the Keyboard tab of the Preferences.

While in full screen mode, you cannot interact with the Dock or with any other programs running locally on your Macintosh. If the remote screen is larger than your local screen, the display will 'auto-scroll' when the mouse is close the edge of the screen. The scrolling speed and the presence of scrollbars can be adjusted in the Fullscreen tab of the Preferences.

# I Get Strange Characters When I Type

Different operating systems interpret keystrokes to mean different things. Although standardization is in the works, not all servers are fully standardized.

Older versions of Chicken of the VNC tried to account for this difficulty by interrupting your VNC session to ask you to type certain keystrokes. As of Chicken of the VNC version 1.3, this process became automated.

# How 'Bout Command-Option-Escape, Control-Alt-Delete and Other Strange Combos?

You can force-quit applications on a remote Macintosh by sending the CMD-OPT-ESC keystroke from the Connection menu's Special Keys submenu.

Likewise, Windows machines commonly use the CTRL-ALT-DEL keystroke. You can send this keystroke by choosing Send Ctrl-Alt-Del from the Connection menu's Special Keys submenu. If you'd prefer to type the keystroke, you can do this by simply hitting the keys that map to it. In the default configuration, this is CTRL-CMD-DEL (the CMD key is also referred to as the Apple key).

On machines that don't have a DEL key (such as recent PowerBooks and iBooks), you can use the function key and the ordinary delete key. In the default configuration, you would use CTRL-CMD-FN-DELETE.

Similarly, to send Alt-F4 on a laptop (where F4 is mapped to sound volume), you can use CMD-FN-F4.

You can see additional uses for the Function key on Apple's Laptop Technical Pages.

The Connection menu's Special Keys submenu has several other commonly used keystrokes that are not found on Macintosh keyboards.

# Command Line Usage

You can use Chicken by calling it from the command line. To do this, you should 'cd' to the location of Chicken of the VNC. Then, do the following:

`cd Chicken\ of\ the\ VNC.app/Contents/MacOS/
./Chicken\ of\ the\ VNC`

To get help on command line invocation, add "--help" to the invocation.

# Preferences

- Performance: Use the sliders to adjust how often your connections ask the server for updates. Generally, you want the frontmost connection to update as often as possible, while other connections can be less responsive. To force a connection to never update unless requested by choosing Refresh from the Window menu, set the slider to Only Update Manually.

- Autoscroll Speed: Controls how quickly your fullscreen connection scrolls when the mouse is moved to the edge of your screen.
- Display Scrollbars While in Fullscreen Mode: Controls whether scrollbars are displayed for fullscreen connections. They aren't necessary, since you can use the Autoscroll feature, but sometimes its nice to have an explicit scrollbar.
- Display Warning Before Entering Fullscreen Mode: Controls whether a warning panel is displayed before entering fullscreen mode. Since the only way to get back out of fullscreen mode is by knowing the keyboard command, the warning is an important reminder. If you're sure you know the keyboard command, you can use this to disable the warning.

- Keyboard Equivalents: Use this section to change the keyboard equivalents for various menu commands for different connection scenarios. The popup menu controls the scenario. Non-Connection Window is the scenario in which a window other than a VNC connection is the frontmost window. In other words, something like the Connection dialog or the preferences window is frontmost. Windowed Connection is the scenario in which a VNC connection in a window is frontmost. Fullscreen Connection is the scenario in which Fullscreen Mode is active. You can change the keyboard equivalent used to move in and out of Fullscreen Mode by changing it in both the Windowed Connection and Fullscreen Connection scenarios.
- Keyboard Equivalent Table: Change a keyboard equivalent by navigating to the desired menu command and double-clicking the Shortcut next to it. Press the keyboard equivalent you wish to use, or press Space on your keyboard to remove an equivalent.
- Restore Defaults: Use this to restore the default keyboard equivalents. These are the standard keyboard equivalents when a non-connection window is frontmost, and no keyboard equivalents other than to switch in and out of Fullscreen Mode whenever a connection is frontmost.

# Known Problems

- It is not possible to auto-scroll diagonally in full-screen mode, only horizontally or vertically.
- Window size may be incorrect after switching out of fullscreen mode.
- A server window smaller than the client screen is not centered in fullscreen mode.

# Source Code

Because this program is distributed under the GNU license, source code is available for it. If you're interested in contributing to Chicken of the VNC, it is hosted collaboratively on SourceForge. The address is http://cotvnc.sourceforge.net/.

# Version History

Version 2.0b4 (January 18, 2006)
  - - Chicken of the VNC is now a universal binary.
  - - Resolved an issue that caused an "ZLibHex unknown subencoding" error when using ZRLE encoding to connect to an UltraVNC server.
  - - Resolved an issue that caused pasting text to work incorrectly if the text contained repeating characters.
  - - Bonjour server discovery now works properly when the server uses a non-standard port or display number.
  - - Clicking an inactive connection window no longer passes that click through to the server.
Version 2.0b3 (August 22, 2005)
  - New Features
      - - Reimplemented mouse button emulation and added new options to either turn off emulation for a particular mouse button, emulate when holding a modifier key and clicking the left button, emulate when tapping a modifier key multiple times, or emulate when tapping a modifier key quickly and then clicking the left button.
      - - Added VNC view-only mode, used for watching a server without interacting with it.
      - - Added VNC listening mode, used for connecting to a server that is behind a firewall.
      - - Added menu commands to send cmd-option-escape, Insert, Delete, Pause, Break, Print and Execute keystrokes.
      - - Added a "New Connection..." menu item allows you to connect to a server without having to use a server in the server list.
      - - It's now possible to set bookmarked connections to always open in fullscreen mode.
      - - Settings for servers discovered via Bonjour are now saved when Chicken closes.
      - - Bonjour server discovery now looks for _rfb._tcp as well as the previous _vnc._tcp.
      - - It's now possible to explicitly specify a port number rather than a display number, either via the user interface or from the command line.
      - - Added French localization courtesy of Pascal Frey.
      - - Added Italian localization courtesy of Claudio Santucci.
      - - The server list in the Open Connection panel is now displayed in alphabetical order.
      - - Chicken now handles urls of type vnc:// and rfb://.
      - - Minimized connection windows no longer show a generic VNC icon.
      - - Connection windows now remember their size and location.
      - - Dropped connections now attempt to auto-reconnect.
    Bug Fixes
      - - Resolved compatibility issues with Apple Remote Desktop 2.2.
      - - The 'F1' key is now transmitted to servers correctly.
      - - Improved handling of double and triple clicks. They now work reliably.
      - - Colors are no longer mapped improperly when using millions of colors mode.
      - - Resolved an issue that caused error messages when connecting to TightVNC.
      - - Resolved issues that caused connections to die with the message "Unknown rectangle encoding" or "Inflate error".
      - - Resolved issues with pasting text to the remote machine.
      - - Window frames are now saved properly between launches.
      - - Resolved an issue that could cause a crash when using a Logitech mouse.
      - - The Set Title and Connection Information windows are now closed properly when a connection is closed.
      - - Rendezvous is now called Bonjour in the UI to fit new Apple naming conventions.
Version 2.0b2 (August 26, 2004)
  - - Resolved a crash on startup that could occur in some situations when upgrading from 1.3.6.
  - - Resolved an issue that would prevent the creation of Connection Profiles if none had been created in an earlier version of Chicken. This manifested itself as an insistence upon connection to port 5900 of localhost.
  - - Resolved an issue that prevented connecting when no servers were present in the list, while appearing as though it would work properly. This manifested itself as a successful, but very slow connection, in which modifier keys would not work at all.
  - - Resolved an issue that caused closing a windowed connection via a customizable key equivalent to crash.
  - - Revamped the Profile Manager window to act more sensibly and be easier to use.
  - - Revamped the Preferences and removed settings that never get used.
  - - Added html documentation that's accessible from within Chicken.
  - - It's now possible to specify a profile name when launching Chicken via the command line.
  - - The "Use Rendezvous" setting is now remembered between launches.
  - - Changed the default order of encodings so that the fastest one defaults to the first one to try.
  - - Newly created servers are now created with their names immediately editable.
  - - Widened the Display text field in the connection dialog.
Version 2.0b1 (August 18, 2004)
  - - New connection manager that stores commonly used servers.
  - - Auto-discovery of servers via Rendezvous.
  - - Added keychain support.
  - - Added support for keyboard commands when connection windows are not the frontmost windows.
  - - Added support for customizable menu key equivalents.
  - - Clarified menus. rearranged them, and made them more "Mac-like".
  - - Drastically improved documentation.
  - - Added timers for mouse button emulation that help prevent accidental emulation.
  - - Added ability to specify connection options from the command line.
  - - Shift-Tab now works properly on Windows machines.
  - - Capslock now works on Windows machines.
  - - Resolved errors when connection to RealVNC using ZLibHex encoding.
  - - Resolved errors when connecting to OSXVNC using Tight encoding.
  - - Miscellaneous other encoding fixes.
  - - Tight encoding is no longer the default encoding.
  - - Widened "Port (or Display)" text field so it can hold 5 digits.
  - - Port numbers below 100 are now interpreted as a display number, instead of numbers below 10.
  - - Mouse tracking no longer breaks after exiting from full-screen mode.
  - - Resolved an issue that could cause Chicken to crash if the server connection unexpectedly died.
  - - When a server connection dies, Chicken now notifies the user with a sheet so that the user can see which connection it was.
  - - Removed the "Quit" option from the notification presented when a server has died.
  - - Changed release date in "About Chicken of the VNC" for 1.3.6 to properly reflect the year 2003.
  - - New VNC graphics in About dialog by Tobia Conforto tobix@linux.it
Version 1.3.6 (January 17, 2003)
  - - Fixed a nasty memory leak and checked all encodings to verify that none of them memory problems.
  - - Added preferences to modify the CPU performance of the frontmost connection independently of all other connections.
  - - Finally fixed Tight Encoding - previously, it only worked when the server had a small screen.
  - - More speed optimization when running under Jaguar.
  - - Redid the scheduler to fix a problem that caused excessive CPU usage.
  - - Added lots of internal error-checking.
  - - Modified many default preferences to have more reasonable values - display and preferred encodings particularly. If upgrading, you will need to restore the order of your preferred encodings.
Version 1.3.5 (January 13, 2003)
  - - More improvements to Tight Encoding
  - - JPEG encoding support in Tight Encoding (only available for expert users who install jpeglib and recompile Chicken)
  - - ZRLE encoding
  - - ZLIB encoding
  - - Added "Send Ctrl-Alt-Del" menu item
  - - Fixed several full-screen windowing bugs
  - - Added support for mouse scroll-wheels when connecting to servers that support this extension to the VNC protocol
  - - Works with OSXvnc 1.0
  - - When a connection is dropped, Chicken asks if you'd like to reconnect
  - - Presents the connection dialog when Chicken is brought frontmost and there are no open sessions
  - - Improvements to window drawing speed
  - - The Login dialog window now stores the server addresses you've connected to
Version 1.3.1 (October 24, 2002)
  - - Restored support for versions of Mac OS X lower than 10.2.
  - - Improved connection issues when using Tight encoding, although it's still not perfect.
  - - Added support for specification of a port number instead of a display number.
  - - Added native support for three-button mice.
  - - Fixed a bug that caused Chicken to crash on machines with Unsanity's FruitMenu installed.
  - - Chicken is now hosted on SourceForge.
Version 1.3 (October 8, 2002)
  - - Added a full-screen, auto-scrolling mode and associated preference settings.
  - - Connection windows no longer default to being larger than your main screen.
  - - Windows now initially appear scrolled to the top-left instead of the bottom left.
  - - You are no longer prompted to type a key without a modifier when you type special characters.
  - - Revamped the text sending engine.
  - - Arrow keys are no longer sent twice.
  - - Revamped and reorganized the profile window so that it makes more sense for Mac OS X (and follows the Aqua guidelines). Also, the profile window could now be localized if someone felt the urge to do it (it no longer uses string constants). However, this change means that previous users will either need to reset their modifier keymappings in all of their profiles, or delete their preferences.
  - - Changed the rectangle drawing options in the Preference window so that they more accurately reflect behaviour on Mac OS X.
  - - The rectangle drawing options in the Preferences window now show their current value. Previously, they always showed the default value, although they used whatever value had been set.
  - - Synced with Helmut's 1.2.5 release. This adds the ability to paste a file's path into your VNC window by dragging the corresponding file into the window (untested).
Version 1.2.3 (March 22, 2002)
  - - Initial Mac OS X release.

# Distribution and License Agreement

Chicken of the VNC is released under the GNU license.

Chicken of the VNC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

# Primary Contributors

- Jason Harris — Project manager, port to Mac OS X, various code enhancements, documentation
- Jared McIntyre — GUI additions, Rendezvous implementation, additional development
- Helmut Maierhofer — Original implementation for NeXTStep, encoding guru extraordinaire
- Kurt Werle — Development, speed and feature enhancements
- Sean Kamath — Additional development and feedback

# Contact Information

You can always get the latest versions of Chicken of the VNC, news and updates at the Source Forge web site:

http://cotvnc.sourceforge.net/

To get support on Chicken of the VNC, you can submit a support request

http://sourceforge.net/tracker/?atid=507160&group_id=64347&func=browse

To submit an idea or suggestion for Chicken of the VNC, use this address:

http://sourceforge.net/tracker/?atid=507162&group_id=64347&func=browse

Alternately, if you prefer email, you can contact:

support@geekspiff.com