Bright Text Screen

Multifont, multicolour, multiresolution, programmable, interactive text screen!

DESCRIPTION

The Bright Text Screen displays readable, miltifont, multicolour, instantly updatable text within Second Life.

It doesn't rely on shared media ("web on a prim"), or ugly floating text. It uses ordinary textures on ordinary prims: so you can be sure that any resident can read it, even if they have media disabled.

And due to careful object and texture design, each prim can display FIVE characters: so even five rows of forty characters each can be displayed in only 41 prims (40 for the text, one for the frame).

You can change the number of rows and columns, and the size of the characters (and so the size of the sign), through a simple menu system. The board will rebuild itself automatically, stretching and contracting, and deleting prims, or rezzing and linking new ones, as required.

All ASCII characters can be displayed (ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz, 0123456789, and punctuation: ,:;.!?'\'+-*/^%=@#&$`~_\\|()<>[]{}) plus a wide range of symbols.

To update the screen, just type text into chat: "/9 Hello World!". Use simple tokens between braces to mix colours, such as "{r}" for red text: "/9 Welcome to the {r}Bright Text Screen!".

If you are a builder, you can also use the simple API to update the screen from your own scripts, which you can add to the screen itself, or put in your own objects. And if the screen is clicked, the key of the resident clicking, and the row and column clicked, will be reported back using the same API, allowing you to create interactive screen displays.

The screen comes with four free add-ons: useful in their own right, and as demonstrations of what the screen can do:

PRESENTER: Write a series of "pages" into a notecard - including multicolour text in multiple fonts and with clickable hotspots - and the presenter will turn them into an interactive display on your screen. Add simple instructions to process clicks and jump between pages: no scripting required. A sample presentation notecard demonstrating the features of the Bright Text Screen is included.

EREADER: Drop notecards into the reader, and their titles will be shown on the screen. Visitors may click these to read the notecards, clicking controls to turn pages forward or back, or returning to the titles list. Perfect for in-venue help and information facilities.

CHAT VIEWER: Just rez this next to your screen, and anything said in publc chat nearby will instantly appear on the screen, complete with the name of the speaker. It's like having a public, scrolling "Nearby Chat" display in-world, with each speaker assigned a different colour to make exchanges easier to follow. It's fun, and hugely encourages public interaction between residents: but it clears itself automatically when visitors leave, so no permanent messages are left.

EMAIL SIGN: Put this box next to your screen, and it will give you an email address to which you can email text to display in-world. (Don't worry - it will only read emails quoting a password you specify.) This is an in-world sign you can update even when you aren't in Second Life - even from your smartphone! (And if you are a scripter, you can use this add-on plus the llEmail() function to update your sign from an object anywhere on the grid.)

INSTRUCTIONS

UNPACKING YOUR SCREEN

Drag the object "Bright Text Screen boxed" from your Inventory onto the ground to rez it. Right-click the box, select "Open" from the pop-up menu, and click the "Copy To Inventory" button at the bottom of the "Contents" window.

This will create a new folder in your Inventory, also called "Bright Text Screen boxed". You can now delete the rezzed box, though do keep the original in your Inventory in case you need a factory fresh copy of your screen in the future.

USING YOUR SCREEN

Drag the object "Bright Text Screen" from your inventory onto the ground to rez it.

Then, in chat, say "/9 Hello", and screen will display:

    Hello
    

Now say "/9 World!". The screen will now show:

    Hello
    World!
    

As you can see, each update starts on a new line. (You can switch these automatic line breaks off - see "THE FORMAT MENU" below.)

USING COLOUR TOKENS

Try "/9 Welcome to the {r}BRIGHT{w} TEXT SCREEN!". You will see...

    Welcome to the BRIGHT TEXT SCREEN!
    

...with the word BRIGHT in red.

"{r}" switches to red, and "{w}" back to white. These are called "colour tokens".

The available tokens are:

    {w} white
    {r} red
    {b} blue
    {c} cyan
    {m} magenta
    {y} yellow
    {o} orange
    {p} pink
    

You can change the red/green/blue colour mixes associated with these tokens, or even add tokens for other colours, by editing the settings notecard inside the screen: see "DEFINING COLOURS" below.

The token "{d}" will display text following it in the "default" colour. As the screen is supplied, the default colour is white, but this can be changed: see "THE FONT MENU" below.

USING COMMAND TOKENS

Other tokens, called "command tokens", can also be inserted into text. Unlike the colour tokens, which all use lower case letters, these use upper case letters.

    {B+} BOLD ON {B-} BOLD OFF
    

These tokens enable and disable the display of bold text: so "/9 {B+}Hello{B-} World!" will display the text "Hello World!", but with the word "Hello" in bold.

    {I+} INVERSE ON {I-} INVERSE OFF
    

These tokens enable and disable the display of inverted text.

Normally, each letter is shown in white (or a bright colour) against a black background. Inversion shows letters in black against a white (or coloured) background. "/9 {I+}Hello{I-} World!" displays the word "Hello" inverted.

    {Fn} SWITCH TO FONT NUMBER n
    

Switch to the numbered font for text following the token. So for instance, "/9 {F1}Hello {F2}World!" will display the word "Hello" in font 1, and "World!" in font 2.

There are 8 fonts: 1. NK57, 2. Courier, 3. Ubuntu, 4. Unispace, 5. Overpass, 6. Effects80, 7. Anka, 8. Symbols.

The eighth font, "Symbols", has various special symbols in place of ordinary letters, digits, and punctuation. So for instance, "/9 King of {F8}S{F1} Diamonds", displays a diamond symbol in the place of the letter "S".

Different symbols are available if "bold" is enabled (see above). So "/9 Greek {F8}{B+}S{B-}{F1} Sigma" replaces "S" with the Greek capital sigma.

See the "SYMBOLS FONT" below for a list of symbols.

    {D} DEFAULT TEXT
    

This token will reset text to the default font, colour, bold, and inversion settings chosen through the screen's menu system (see "THE FONT MENU" below). It is a quick way to return to default text if you have chosen a number of styling options.

So "/9 {F3}{B+}{I+}{r}Hello{D} World!" will display "Hello" in bold, inverse, red, Ubuntu font characters, but "World!" using the defaults defined through the menu (which, unless set otherwise, are white, NK57, non-bold, non-inverse).

    {N} NEW LINE
    

Each "{N}" forces a line break in the text. "/9 Hello{N}World!" displays "Hello" on one row, and "World!" on the next.

    {W} WIPE SCREEN
    

This token clears all text from the screen. So "/9 {W}Hello World!" clears all the text, and then displays "Hello World!" on the first row.

    {Sn} DISPLAY n SPACES
    

Use this token to insert a number of spaces. "/9 {S5}Hello World!" displays " Hello World!".

(This can be particularly useful for indenting text entered using chat, as if you say "/9 Hello World!", some viewers will strip the leading spaces from your text before the screen even hears it. If this happens, replace the spaces with an "{Sn}" token.)

    {Axxx} DISPLAY ABBREVIATED TEXT xxx
    

Displays text corresponding to a particular abbreviation. For instance, "/9 {ABC}" displays the text associated with abbreviation "BC", which is "BRIGHT CORPORATION" (in multiple colours). You can define your own abbreviations in the screen's "SETTINGS" notecard (see "Creating abbreviations" below).

    {Rn} DISPLAY ON ROW n
    

Display text on the specified row, the topmost row being 1. So "/9 {R3}Hello World!" will display "Hello World!" on the third row.

    {Cn} DISPLAY FROM COLUMN n
    

This token causes text to be displayed at a certain column. For instance, "/9 {C10}Hello World!" will display "Hello World!" from the tenth column. The columns are numbered from 1.

Note that combining row and column tokens allows you to position text anywhere on the screen. For instance, "/9 {R2}{C5}Hello{R4}{C10}World!" will display the word "Hello" from the fifth column of the second row, and "World!" from the tenth column of the fourth row.

    {Pn} CHANGE PICTURE ABOVE TEXT TO NUMBER n
    

At the top of your screen is a banner or picture. When you rez your screen for the first time, this will show the word "INFORMATION", with a blue "i" symbol to its left.

You can change this picture, its aspect ratio, or even hide it altogether, using the screen's settings menus (see "THE PICTURE MENU" below), and you can add your own textures to the range of those available by adding lines to the screen's "SETTINGS" notecard (see "DEFINITING PICTURES" below).

But you can also switch between pictures while you are displaying text by embedding command tokens. "/9 {P4}Hello!" will switch to the fourth picture defined in your settings notecard, and then display "Hello!".

To switch to whichever picture was made the default through the screens settings menu, use token "{P0}".

    {Mc} CHANGE MENU BAR BELOW TEXT TO COLOUR c
    

Below your text is a thin bar with the words "Bright Text Screen" on the right. This is called the "menu bar", as you need to click it to display the screen's settings menu.

You can change the colour of this bar from the settings menu (see "THE PICTURE MENU" below), but you can also change it while you are displaying text by embedding command tokens.

Saying "/9 {g}Green is beautiful!{Mg}" will display the words "Green is beautiful!" in green - because of the colour token "{g}" - and then switch the menu bar to green - because of the command token "{Mg}".

To switch to whichever menubar colour was made the default through the screens settings menu, use token "{Md}".

    {<} {>} DISPLAY BRACES
    

If you wish to display actual "{" or "}" symbols, without having them interpreted as opening or closing tokens, use "{<}" and "{>}".

USING THE MAIN MENU

Below the screen's text area is a thin stripe showing the words "Bright Text Screen". This is the "menu bar": click it to display the screen's main menu.

A pop-up menu will appear, with information about the screen's settings at the top:

    LAYOUT: 8 rows x 40 columns
    CHARS: 15cm high x 10cm wide
    FONT: NK57 (1), white, bold OFF, inverse OFF
    FORMAT: wrap ON, break ON
    PICTURE: Info 1, ratio 8:1, white menu bar
    ACCESS: owner, chat on 9, API on -9
    * Bytes free: S1=29K, S2=32K, S3=18K
    * Runtime: S1=9s, S2=8s, S3=8s
    

Below this, the following buttons will appear:

    *** MAIN MENU ***
    (Please click a setting to change.)

    [Layout...] [Chars...] [Font...]
    [Format...] [Picture...] [Access...]
    [MAIN] [RESET] [HARD RESET]
    

The [MAIN] button appears in the bottom left of every menu - and always brings you back to this main menu. (If you're already in the main menu, it just redisplays it.)

Clicking [RESET] will pop-up a confirmation box. If you confirm you wish to reset, it will restart all the scripts in your screen, set all text styles back to their default settings, and wipe all text off the screen.

Clicking [HARD RESET] will also pop-up a confirmation box. If you confirm you wish to hard reset, it will undo any changes you have made to your screen, and return it to its factory settings.

CHANGING SETTINGS

Clicking [Layout...], [Chars...], [Font...], [Format...], [Picture...], or [Access...] will display a sub-menu allowing you to change particular aspects of your screen's operation.

Each of these sub-menus is described in detail below.

If you change any settings, a new message will appear on the menu.

    (SETTINGS CHANGED: click APPLY or CANCEL)
    

Two new buttons will also appear:

    [APPLY] [CANCEL]
    

Click [APPLY] to apply your new settings. Your board will reset and reconfigure itself.

Click [CANCEL] to abandon any changes you have made to the settings since you last clicked [APPLY].

THE LAYOUT MENU

Click the [Layout...] button on the main menu to display buttons controlling the screen's layout.

    *** LAYOUT MENU ***
    (Please click a setting to change.)

    [Rows +1] [Rows -1]
    [Rows +5] [Rows -5] [Cols +10]
    [Cols +5] [Cols -5] [Cols -10]
    

Click the [+] and [-] buttons to change the number of rows, or the number of columns (characters per row).

Note that if you change the row and column counts, when you click [APPLY], the screen will request permission to link or unlink its prims. If it needs fewer prims for the new layout, it will delink and delete the excess quite quickly. However, if it needs more prims, it will rez them and link them until it has enough. This can take several minutes if the new screen size is much larger, but only needs to be done once.

(If the process fails - because, for instance, the parcel is full and so the new prims cannot be rezzed, or because the region is lagging and so rezzing times out - the screen will give up, and you will need to rez a fresh screen to retry the process.)

THE CHARS MENU

Click the [Chars...] button on the main menu to display buttons controlling the size of the characters displayed.

    *** CHARS MENU ***
    (Please click a setting to change.)

    [Height +1cm] [Height -1cm]
    [Height +5cm] [Height -5cm] [Width +5cm]
    [Width +1cm] [Width -1cm] [Width -5cm]
    

Click the [+] and [-] buttons to adjust the width or height of individual characters. Naturally, multiplied by the number of rows and columns, these will in turn determine the overall size of your screen.

THE FONT MENU

Click the [Font...] button on the main menu to display buttons controlling the way text is styled.

    *** FONT MENU ***
    (Please click a setting to change.)

    [<Colour] [Colour>]
    [Font] [Bold] [Inverse]
    

Click [<Colour] and [Colour>] to determine the default colour of your text.

Click [Font] to choose the default font in which to display text. Each click will select the next font available, eventually cycling back to the first.

Click [Bold] to control whether text should be shown in bold by default.

Click [INVERSE] to switch the default text style between the usual light-on-dark, or inverse dark-on-light.

(Note that the font, colour, bold, and inverse settings determine how text is normally displayed: but they can be overridden by inserting tokens into your text. See "USING COLOUR TOKENS" and "USING COMMAND TOKENS" above.)

THE FORMAT MENU

Click the [Format...] button on the main menu to display buttons controlling how text should be formatted for display.

    *** FORMAT MENU ***
    (Please click a setting to change.)

    [Wrap] [Break]
    

Click [Wrap] to enable or disable automatic word wrapping. If you display text which is too wide to fit on one row, the excess will be displayed on the next row. If you have enabled wrapping, the screen will try to break the text on a space.

So if your screen was 20 columns wide, saying "/9 Welcome to the Bright Text Screen!" will display:

    Welcome to the
    Bright Text Screen!
    

But if wrapping is disabled, the screen will show:

    Welcome to the Brigh
    t Text Screen!
    

Click [Break] to enable or disable automatic line breaks after each update. So if you type in chat "/9 Hello", and then "/9 World!", with breaking enabled you will see:

    Hello
    World!
    

If you disable breaking, you will see:

    HelloWorld!
    

THE PICTURE MENU

Click the [Picture...] button on the main menu to display buttons controlling picture displayed across the top of your screen (and the menu bar at the bottom).

    *** PICTURE MENU ***
    (Please click a setting to change.)

    [Show/Hide] [<Image] [Image>]
    [Ratio 1:1] [Ratio 2:1] [Ratio 4:1]
    [Ratio 8:1] [Ratio 16:1] [Menu Bar]
    

Click [Show/Hide] to remove the banner entirely, or to restore it to view.

Click [<Image] and [Image>] to cycle through different picture textures.

Click the [Ratio] buttons to control the aspect ratio of the banner. It will always run across the full width of the screen, so these ratios adjust the banner's height. For instance, if your screen is 3m wide and you click [Ratio 4:1], the banner will be made 75cm high.

(You can add your own banner textures to the list of those available by adding their UUIDs to the screen's "SETTINGS" notecard: see "DEFINING PICTURES" below.)

THE ACCESS MENU

Click the [Access...] button on the main menu to display buttons controlling who (and what) may update your screen.

    *** ACCESS MENU ***
    (Please click a setting to change.)

    [Level] [Channels]
    [MAIN] [RESET] [HARD RESET]
    

As supplied, only you (or objects belonging to you) may update the screen: you by typing into chat, and your objects through the API.

(See "USING THE API" below for information on how the screen's Application Programming Interface allows it to be updated by objects.)

Click [Level] to cycle through three levels of access:

Owner access: only you and objects belonging to you.

Group access: only residents and objects with the same active group as the screen.

Public access: any residents or objects.

(You can restrict access to specific residents or objects by entering their UUIDs in the screen's "SETTINGS" notecard. See "RESTRICTING ACCESS TO SPECIFIED SOURCES" below.)

Click [Channels] to determine from which numbered channel the screen will accept updates. The following pop-up box will appear:

    Current channels: CHAT 9, API -9

    To set CHAR or API channel to 'n', enter...
    'CHAT n', eg. CHAT 107
    'API n', eg. API -88

    Leave blank and [Submit] to cancel.

    [                    ]
    [                    ]
    [                    ]

    [Submit] [Ignore]
    

The CHAT channel is the channel from which the screen will accept updates from residents. As shipped, the chat channel is 9, which is why you say "/9 Hello World!" to display "Hello World!" on the screen.

The API channel is the channel from which the screen will accept updates from objects. If an object, for instance, sends messages on channel -100, setting the screen's API channel to -100 will allow the screen to hear and display these messages.

(Note that while the screen will listen on both the chat and the API channels, it will only accept messages from residents on the chat channel, and only from objects on the API channel.)

You may choose any CHAT channel and any API channel, even channel 0. The only restriction is that the two channels must be different.

UPDATING THE SETTINGS NOTECARD

The screen has more settings recorded on a notecard stored inside.

To change these, right-click the screen to display its pop-up. menu, select "Open" to show its "Contents" Window, and double-click the notecard "SETTINGS".

Below, the lines of the notecard are explained. Read through them, edit as required to suit your preferences, and when ready, click the "Save" button.

DEFINING COLOURS

Add "colour" lines to define the exact tone of the colours available through tokens, or through the settings menu (see "USING COLOUR TOKENS" and "THE FONT MENU" above.)

    colour, red, 100, 20, 20
    colour, blue, 30, 30, 100
    ...
    

After "colour" appears the colour name. These should be lower case, and each must start with a different letter, as the colour tokens are one letter long.

Adding "gold" would be a problem, as the token "{g}" is already used for green, so you could use a synonym (like "auric"), or just use a prefix:

    colour au-gold, 100, 84, 0
    

The three numbers after the colour letter are percentages, representing the strengths of red, green, and blue to be mixed to create the colour.

CREATING ABBREVIATIONS

If there are pieces of text you use frequently, you can set them up as "abbrevations".

    abbrev, BC, {r}B{o}R{y}I{g}G{c}H{m}T{b} CORPORATION!{d}
    abbrev, BCS, {r}Vision, {g}Power, {b}Happiness{d}
    

These lines associate the abbreviation "BC" with the words "BRIGHT CORPORATION" dislayed in multiple colours, and "BCS" with the Bright Corporation Slogan: "Vision, Power, Happiness".

You can then display these using the tokens: "/9 Welcome to the {ABC}!" (see "USING COMMAND TOKENS" above).

DEFINING PICTURES

The range of picture textures which may be displayed at the top of your screen through the settings menu, or the "{Pn}" token, (see "THE PICTURE MENU", and "USING COMMAND TOKENS" above) is taken from "picture" lines in the settings notecard.

    picture, Info 1, 8a447fa0-2d1f-8c07-800c-6f53fa8f9675
    picture, Info 2, 3b7d33b5-4d9e-a57e-41ae-23d82f74f20e
    ...
    

You may remove any of these, or add your own. Each "picture," is followed by a name describing the texture, a comma, and the texture's UUID.

To learn the UUID of a texture, open your Inventory, right-click the texture item, and select "Copy Asset UUID". Then click the notecard where you wish to insert the UUID, and press Control-V to paste it.

RESTRICTING ACCESS TO SPECIFIED SOURCES

If you only want your screen to display text updates from particular residents or objects, add their names and UUIDs to the settings notecard like this.

    source, Torley Linden, a98f2541-04e3-46b2-b038-f82d8cf86f3f
    source, My Scripted Object, 70a31984-34ad-1bfc-b1cb-62e02f56299f
    

If you specify one or more sources, then no other residents or objects will be able to update the screen: even you. This can be useful if you don't want to accidentally update the screen by chatting on the wrong channel.

But if you want to restrict access to particular sources, while still being able to use chat to update the screen yourself, add yourself as a source.

Sources can be useful if a screen is essentially acting as a display device for a single object, and so you don't want it updated by anything or anyone else. For instance, if you are using the notecard ereader add-on (see below), you may want to define the ereader as a source, so that the screen will only be updated by that reader, and will not display updates you chat into other screens.

PLEASE NOTE: Any rules you specified through the main menu (see "Setting Access" above) will still apply. For instance, if you only allow "owner" access, then no other avatar, and no object belonging to another avatar, may update the screen - even if specified as a "source".

Also note that the names are just to help you remember which key corresponds to which avatar or object. The screen ignores them, and validates purely according to the UUID.

MAPPING CHARACTERS

The screen will only display printable characters from the ASCII character set. This includes capital letters "A-Z", lower case letters "a-z", digits "0-9", and the most common punctuation characters.

Other characters can be converted to their nearest equivalent by adding "map" lines to the settings notecard.

    map, ¦, |
    

This line maps the Unicode "broken bar" character (U+00A6) to the ASCII "vertical bar" (character 124).

If you wish, you can map a character to a string of characters.

    map, ¬, NOT
    

This will cause the Unicode "not sign" character to be replaced with the text "NOT" wherever it appears.

You can add as many mappings as you wish to each line. Just alternate the characters you are mapping from and to.

You could, for instance, combine the mappings above onto one line:

    map, ¦, |, ¬, NOT
    

(As supplied, the notecard contains mappings to convert all common accented characters to their nearest ASCII equivalent. This prevents random accented letters being ommitted, but it does mean that the accents themselves will not appear.)

USING THE API

PLEASE NOTE: The Application Programming Interface is purely for builders who wish to update the Bright Text Screen from their own scripts. If this isn't you, BY ALL MEANS SKIP THIS BIT.

But the basic API is VERY simple:

* If your object sends a chat message on your screen's API channel, the screen will display it. *

As shipped, the screen listens to channel -9 for API messages. So to update the screen from a script in another object, just add:

    llRegionSay(-9, "Hello World!");
    

You can even use the screen to display messages sent by objects which were never designed for use with the screen.

For instance, if you have a "Welcome" box - which says "Welcome Jane!" when resident Jane Doe arrives at your venue - then just setting the screen's API channel to 0, and making your "Welcome" box the only allowed source in its "SETTINGS" notecard, your screen will also say "Hello Jane!".

But if you want to add a script to the screen itself, rather than to another object, you can. Drop it into the root prim: other prims will not receive API replies and may be deleted if you change the screen layout. To update the screen from your script, simply include:

    key API_KEY = "36224882-463c-6a00-f465-ecac690b24e1";

    llMessageLinked(LINK_THIS, 0, "Hello World!", API_KEY);
    

The API_KEY is a fixed key. If it matches the value given above, the screen will read the link message, and display "Hello World!".

You may use any of the tokens described in this manual through either "llRegionSay()" or "llMessageLinked()".

    llRegionSay(-9, "This is {r}red{d} text.");
    

If you want to make sure a screen is available before your script runs, use:

    llListen(-9, "", NULL_KEY, "");
    llRegionSay(-9, "BTS-SEEK");
    

The screen will send the following reply on the same API channel.

    BTS-FOUND, 8, 40
    

The 8 is the number of rows, and the 40 the number of columns.

The screen will also send the following messages, by both chatting on the API channel, and via link message with key parameter set to the API_KEY value above:

    BTS-READY
    

This is sent when the screen has completed its reset procedure and is ready to receive commands.

    BTS-DISPLAYED, 108
    

The screen has finished displaying an update: 108 being the number of characters shown. (This may not be the same as the number of characters sent by your script, due to character mapping and the use of tokens.)

    BTS-CLICKED, a98f2541-04e3-46b2-b038-f82d8cf86f3f, 4, 36
    

The screen has been clicked on row 4, column 36.

(Note that if your API is 0, the various BTS- prefixed messages above will not be sent, to avoid spamming public chat heard by avatars. The only reason for setting the API channel to 0 is to display public chat from existing objects: if you are creating an object designed to interface with the screen, we strongly recommend you use a negatively numbered API channel.)

Bear in mind that the screen's scripts send messages to each other which don't relate to the API. If you have dropped a script into the screen with a "link_message()" event, these messages will trigger it. Be sure to check the final key parameter to see if it matches the API_KEY value to determine which messages are sent by the API, and be ready to ignore those which aren't.

For working examples of all these features of the API system in use, find the following full-perm (and so editable) items in the Bright Text Screen's folder:

    Bright Text Screen API sample drop-in 'Backwards Talker' script
    Bright Text Screen API sample external 'Clicker' object
    

SYMBOLS FONT

The 8th font set provided with the Bright Text Screen is a "Symbols" font.

The symbols are arranged in groups. Normal (not bold) symbols are:

    A-Z: common symbols
    a-z: arrows
    0-9: special punctuation
    rest: maths & fractions
    

To see them all, simply select the text below, stand by your screen, type "/9 " into chat, and hit Control+V to paste it into chat.

    {W}{D}{F1}{g}ABCDEFGHIJKLMNOPQRSTUVWXYZ
    {F8}{y}ABCDEFGHIJKLMNOPQRSTUVWXYZ
    {F1}{g}abcdefghijklmnopqrstuvwxyz
    {F8}{y}abcdefghijklmnopqrstuvwxyz
    {F1}{g}0123456789
    {F8}{y}0123456789
    {F1}{g},:;.!?'"+-*/^%=@#&$`~_\|()<>[]{<}{>}{S1}
    {F8}{y},:;.!?'"+-*/^%=@#&$`~_\|()<>[]{<}{>}{S1}{D}
    

The bold symbols are:

    Bold
    A-Z: greek upper case
    a-z: greek lower case
    0-9: shapes
    rest: currencies & miscellaneous
    

To see these, say "/9 " followed by the text below.

    {W}{D}{B+}{F1}{g}ABCDEFGHIJKLMNOPQRSTUVWXYZ
    {F8}{y}ABCDEFGHIJKLMNOPQRSTUVWXYZ
    {F1}{g}abcdefghijklmnopqrstuvwxyz
    {F8}{y}abcdefghijklmnopqrstuvwxyz
    {F1}{g}0123456789
    {F8}{y}0123456789
    {F1}{g},:;.!?'"+-*/^%=@#&$`~_\|()<>[]{<}{>}{S1}
    {F8}{y},:;.!?'"+-*/^%=@#&$`~_\|()<>[]{<}{>}{S1}{D}
    

Note that the bold symbols for A-Z and a-z correspond to the capital and lower case letters of the Greek alphabet.

The Greek letters do not appear in order: they are arranged so that each corresponds (roughly) to the letter with the equivalent sound in the Latin alphabet - a transposition sometimes known as "Greeklish". So by typing in "/9 {F8}{B+}Pop{D}" You will display word "Pop" transliterated crudely into the closest Greek letter equivalents: Capital pi, lower case omicron, lower case pi.

LIMITATIONS

While the screen has been thoroughly tested and will display text perfectly to most residents at most times, it applies complex, rapidly changing texture offsets, and SL viewers can occassionally be confused and fail to update particular characters. Usually, the very next screen update, or simply the resident using the viewer simply teleporting away and back, will fix this problem.

Similarly, if surrounded by complex textures or transparencies, viewers will sometimes show slight "bleed-through" on the screen, such as black bleed-through into inverse character cells, if they struggle to display the thin, hollowed, overlaid prim surfaces used to display the text in a graphically complicated environment. However, the effect is rare, and even when it happens, will not usually effect legibility.

Finally, if large numbers (usually hundreds) of text updates are sent to the screen faster than they can be displayed, they will be buffered, but if this continues so long that the screen can buffer no more, some updates may be lost. (These large numbers of updates can only really be generated by a script using the API, and in the rare cases it happens, can be avoided entirely by waiting for a "BTS-DISPLAYED" response after each update before sending the next.)

APPENDIX: USING ADD-ONS

Before using an add-on, make sure you have a screen rezzed. For help with setting up your screen, see the its user manual: "Bright Text Screen note".

Once your screen is ready, drag the add-on from your Bright Text Screen's folder onto the ground to rez it.

The add-on will reset, and then display the following floating text:

    Ready! Please click for menu.
    

ASSOCIATING YOUR ADD-ON WITH YOUR SCREEN

As supplied, the screen is configured to accept API messages on channel -9, and the add-ons to send messages on -9, so they will simply work together.

However, when you start an add-on, it will send out a message asking any screen in the region to respond. It will then send updates to whichever screen replies first. If you have more than one rezzed, this might be any of them.

And even if you have only one screen rezzed, it will be updated by *any* of your objects which happen to send messages on channel -9.

For both of these reasons, it is a good idea to set up a screen only to work with the add-on you wish it to work with, and the add-on to talk only to that screen. This takes two steps:

1. CONFIGURE BOTH THE SCREEN AND THE ADD-ON TO USE A CHANNEL RESERVED FOR THEM.

Click the "menu bar" at the bottom of the screen to display its main menu, click [Access...], and click [Channels] to display a pop-up box in which to enter a new channel. Choose a channel, type in (say) "API -101", and hit "Submit". Then click [Apply] to save the change and let your screen restart.

Then click the add-on to display its menu. Click [Channel], enter "-101", and click [Submit]. The add-on will restart.

2. MAKE THE ADD-ON THE ONLY TRUSTED SOURCE IN THE SCREEN'S "SETTINGS" NOTECARD.

Click the add-on to display its menu, and click [Get Key]. You will hear the following in chat:

    My key is 70a31984-34ad-1bfc-b1cb-62e02f56299f
    

Drag your cursor over the key in your chat history and hit Control+C to copy it.

Right-click the screen, click "Open" from the pop-up menu, and double-click to open the "SETTINGS" notecard.

Then add the following line, hitting Control+V to insert the key:

    source, My Add-on, 70a31984-34ad-1bfc-b1cb-62e02f56299f
    

(You can replace "My Add-on" with anything you like. If you are setting up an EREADER, for instance, to serve as a help system for visitors, you might put in "Help System".)

Finally click the [Save] button at the bottom of your "SETTINGS" notecard window, and close it. Your screen will restart.

STARTING AND STOPPING YOUR ADD-ON

When rezzed for the first time, each add-on will be STOPPED, and display floating text:

    Ready! Please click for menu.
    

Click the add-on. The menu will carry buttons to change settings, like [Channel], and a [START] button.

Click [START]. The menu and the floating text will disappear, and the add-on will begin running.

If you click the add-on while it is running, the menu will show only one button: [STOP].

Click [STOP] to reset the add-on, and regain access to its settings, or simply to temporarily suspend its work.

USING THE PRESENTER

The PRESENTER allows you to write text in a notecard for your visitors to read.

Creatively using a mix of fonts, colours, and bold and inverted text, it is possible to create attractive and eye-catching displays.

You can divide each notecard into separate "pages", which work a little like slides in traditional computer presentation packages.

And you define links, so that readers can click to jump from page to page.

The PRESENTER comes with one notecard already inside, called "Welcome!". Click the PRESENTER, and click the menu's [START] button to run this presentation: it will give you a good idea of what the PRESENTER can do. Be sure to click the screen to see how it jumps from page to page.

Then right-click the PRESENTER, click "Open" in the pop-up menu, and double click the "Welcome!" notecard to see how the presentation was created.

You will see that the text itself contains lots of tokens - {r} for red, {B+} for bold on, and so forth. These are all explained in the Bright Text Screen's manual.

But it also contains instructions to tell the PRESENTER how to display this text. They all begin with a chevron ">".

At the top of the notecard are a couple of instructions with information about the notecard as a whole:

    >ACCESS PUBLIC/GROUP/OWNER
    

In the "Welcome!" notecard, you will see the line ">ACCESS PUBLIC", which means anyone may click the screen.

Instead of "PUBLIC", you may say "GROUP", in which case only residents whose active group matches the screen's group will be allowed to click, or "OWNER", allowing only you to click.

If you don't add an ">ACCESS" line at all, access will be public.

    >CHECK EXACT/MINIMUM, ROWS rowcount, COLUMNS columncount
    

This line tells the PRESENTER what size of screen is suitable for the presentation.

If you've carefully designed your presentation to look good on a screen of a particular size, this line will prevent it being shown on screens of the wrong size.

In the "Welcome!" notecard, you will see ">CHECK EXACT, ROWS 8, COLUMNS 40". This means that presentation will only be run on a screen with exactly 8 rows and 8 columns.

You may replace "EXACT" with "MINIMUM", in which case the screen will be considered suitable if it has the specified number of rows or columns, or more.

If you don't add a ">CHECK" line to your notecard, the presentation will be shown on any screen.

    >PAGE pagename, CLEAR YES/NO
    

Each page of text begins with a ">PAGE" instruction. The first page in the "Welcome!" notecard begins ">PAGE WELCOME".

Normally, before displaying a page, the PRESENTER will clear the screen. You can add "CLEAR NO" if you wish to prevent this: so that a new page is simply appended below whatever is already on the screen.

    >LINK pagename/NEXT, ROW rownum, FROM fromcol, TO tocol
    

This instruction creates a clickable area on the screen. For instance, in the first page of the "Welcome!" notecard, you will see the instruction ">LINK CHAT, ROW 2". This means that if a resident clicks row 2 of the screen, the page "CHAT" will be displayed.

Note that the "FROM" and "TO" values are omitted. The parameters are optional. If you omit "ROW", then the link will work if clicked on any row. If "FROM" is omitted, then clicking anywhere from column 1 - the leftmost column - will work. If "TO" is omitted, then clicking any column all the way to the right of the screen will work.

Later in the "Welcome!" notecard, you will find instructions like ">LINK WELCOME". Because no rows or columns are specified, this means that clicking on any row and any column - that is, anywhere on the screen - will cause the "WELCOME" page to be displayed.

You can use the word "NEXT" in place of a page name if you simply want the next page displayed.

You can add as many links as you like to a page. If the screen is clicked, the first matching link will be followed.

You can also define links at the top of the notecard, above the first page. These will work in any page in the presentation, if a click doesn't match a link defined within that page.

If you have defined links at the top of the notecard which you wish to "hide" in a particular page, then set up links inside that page, to the page itself. So for instance, if the page is called "MYPAGE", then add ">LINK MYPAGE". This link will be triggered if anyone clicks the screen while "MYPAGE" is displayed, but as the presenter will know that "MYPAGE" is already on the screen, and so will do nothing.

    >AUTO seconds, PAGE pagename
    

You will find the instruction ">AUTO 120, PAGE WELCOME" near the top of the "Welcome!" notecard.

This means that if the screen is not clicked for 120 seconds - two minutes - the "WELCOME" page will be redisplayed. It is a handy way to return to the presentations starting page if the screen is left idle.

If the ">AUTO" instruction is within a page, it only applies while that page is displayed. But if it is before the first page, it will apply to any page which doesn't have an ">AUTO" instruction of its own.

If you wish to disable ">AUTO" within a particular page, use ">AUTO 999".

Clicking the PRESENTER displays its menu:

    Screen channel: -9
    Notecard: (1 of 1): Welcome!

    Click [START] to switch on the presenter,
    or other buttons to change settings.

    (Memory: 29K, Runtime: 1s)

    [START] [Get Key]
    [Channel] [<Notecard] [Notecard>]
    

See above for use of the [START], [Get Key], and [Channel] buttons.

Click [<Notecard] and [Notecard>] to cycle through the notecards inside the PRESENTER, to determine which to run. You may add as many notecards as you wish.

CHAT VIEWER

The chat viewer is a box which listens to all local chat, and displays it on your screen.

It's simple, but it's surprising how engaging people find this. It encourages public chat between groups of residents, and even if a resident is alone, seeing their chat on the screen feels a little like painting graffiti on a virtual wall.

Of course, it can allow some residents to say things which, perhaps, they shouldn't: and so it should be sited with caution. But the text is not permanent. In a conversation, old messages are quickly scrolled off the top of the screen. And when avatars leave and the screen is left alone, it automatically clears itself, so it is impossible for avatars to leave messages to upset later visitors.

The CHAT VIEWER's menu looks like this:

    Screen channel: -9
    Colour sequence: rgbcmyop

    Click [START] to start accepting emails,
    or other buttons to change settings.

    (Memory: 44K, Runtime: 1s)

    [START]
    [Get Key] [Channel] [Colours]
    

See above for use of the [START], [Get Key], and [Channel] buttons.

Click [Colours] to change the "colour sequence".

Each new speaker will have their chat displayed in a different colour, to make conversations easier to follow.

The colours will be assigned in the order set in this colour sequence. By default, it runs red, green, blue, cyan, magenta, yellow, orange, pink. Each colour is represented by its initial.

If you would like to change this sequence, or remove some colours, or even add new ones (providing you have defined the new colours in the screen's settings), click [Colours], and when prompted, enter your new sequence.

And if you would like all text to be shown in one colour, just type in a "sequence" one letter long. For instance, a colour sequence of "w" will display all chat in white.

EREADER

Drop a selection of notecards into the EREADER, and it will display a list of their titles on your screen.

Clicking any of these titles will fill the screen with the first page of text from the corresponding notecard.

Readers may then click "<" and ">", at the bottom of the screen to move back and forth through the notecard, reading it a page at a time, "<<" and ">>" to jump 10 pages at a time, or "[X]" to close the notecard and return to the titles list.

As supplied, the EREADER contains some sample notecards which describe how it works. Try reading these to get used to its controls.

To add your own notecards, right-click the EREADER, click "Open" in the pop-up menu", and drag notecards from your inventory into the "Contents" window. Your EREADER will restart.

Click it to see its menu:

    Screen channel: -9
    Text prefix: NONE
    Bar prefix: {F2}{B+}{I+}{o}

    Click [START] to switch on the reader,
    or other buttons to change settings.

    (Memory: 35K, Runtime: 3s)

    [START] [Get Key]
    [Channel] [Text Prefix] [Bar Prefix]
    

The [START], [Get Key], and [Channel] buttons are explained above.

The [Text prefix] and [Bar prefix] buttons can be used to set up tokens which should be sent before displaying the notecard text, and the control bar at the bottom of the screen, respectively.

As shipped, the text prefix is NONE. This means that the notecard text will be shown in whatever default font, colour, and style have been set in the screen's settings. By default, screens display text in white using font 1.

The bar prefix is originally set to "{F2}{B+}{i+}{o}", which means that the controls appear in font 2, in bold, inverted on an orange background.

(Note that the EREADER will not interpret tokens in the text in the notecards themselves: all braces ("{" and "}") will be shown simply as braces. The EREADER is designed to be a plain text reader. If you wish to mix fonts and colours, use the PRESENTER.)

EMAIL SIGN

The EMAIL SIGN allows your screen to be updated by email.

Click the EMAIL SIGN to see its menu:

    Screen channel: -9
    Password set? YES
    To address...
    f8549fb2-03e3-328b-5f22-629808bb6a34@lsl.secondlife.com

    Click [START] to start accepting emails,
    or other buttons to change settings.

    (Memory: 45K, Runtime: 5s)

    [START] [Get Key]
    [Channel] [Password] [Get Address]
    

See above for a description of the [START], [Get Key], and [Channel] buttons.

To prevent emails sent by others being displayed, you must click [Password] to set a password. When prompted, type it in, and click [Submit].

ONLY EMAILS WHICH HAVE THIS PASSWORD IN THEIR "SUBJECT" LINE WILL BE DISPLAYED.

The address to which you'll need to send your emails is shown on the menu, but if you find it easier to cut and paste from chat, click the [Get Address] button to have it said.

Then start the sign, and send your first email. It will take a little time to work its way through the net, and then some additional seconds for the EMAIL SIGN to poll for it, but usually it will be on your screen within 60 seconds.

You can use tokens in your email if you wish. Put "{r}Hello World!" in your email message to see "Hello World!" displayed in red.

Note particularly that the Second Life email system seems to strip line-breaks from the body of an email, so to start a new line, use the "{N}" token.

And note that you needn't be logged into Second Life to update the sign. You can send your email from anywhere - even your smartphone - and it will be displayed for people to read in-world.

If you are a scripter, you can also use the LSL function "llEmail()" to send text to be displayed on the screen from an object anywhere on the grid.

TIPS

* To set up multiple *synchronised* screens, just set them all to the same API channel. Then, by typing in "/9 WELCOME EVERYONE!" and pressing Control+Enter so that you "shout", all the boards within 100m of you will be updated at once.

* Personalise your screen! Take a little time to add your own picture textures, and favourite colour definitions, to your settings notecard. Show your venue's name and logo, and adjust the text colours to match.

* Use a screen to echo messages sent by your objects. Own a device which makes announcements to your visitors in chat? Set up a screen with an API channel of 0, make the device the screen's only source, and let it display the messages it sends.

* Put a screen with an email display add-on in your venue. Use it to provide basic information: and give yourself a way to communicate urgent messages if you ever need to. Can't log in to host a scheduled event? Send an email to your sign to let visitors know!

* If you run a club or social hang-out, try a screen with a chat box add-on in your venue! You'd be amazed how entertained visitors are by seeing their chat echoed colourfully on wall. It adds to the fun, and encourages conversation and engagement.

* Scripters: do you create systems in which scripts in different objects send each other chat messages to transfer information? Would you like to hear what they are saying to each other during product testing? Just set your screen's API channel to the channel they use, and it will display their messages as they are sent!

FOR MORE INFORMATION CONTACT...

Shan Bright
Chief Executive Officer