Name of the extra modifier (Fn/Meta/Sym/...)

Which name do you prefer?


  • Total voters
    63

pmprog

DNF (Did Not Finish)
Joined
Apr 25, 2011
Messages
4,145
Sorry to gravedig this 7-month old poll, but this is a topic that is being discussed again in some of the keyboard threads, so I thought maybe some people want to vote if they didn't already, or modify their vote based on some of the recent discussion.

I personally had "Meta", "Sym" and "Pyra" as acceptable choices, and "Pyra" as preferred one, but meanwhile I've changed my opinion: I now think "Pyra" is not a good name for the modifier, since it makes more sense to put the Pyra logo on "Super" (Windows logo key), and not have any key labeled "Pyra". So I changed my vote accordingly.
 Thank you for bringing this out.  I too had Pyra as my top choice, but now feel that Fn or Meta are better solutions and that calling this functional AltGr is simply not acceptable as AltGr has other very specific meanings.
Am I missing something? Why would either of you want "Pyra" as the modifier key, when we have a seperate Pyra button anyway? Or is that what you are referring to?

In which case, is the Pyra button going to be a modifier or a key? I don't know how you'd bring up the Pyra menu if it's a standalone modifier
 

bzar

A Commando
Joined
Sep 22, 2008
Messages
4,493
Location
Finland
Website
Visit site
If it's driver-level or hardware modifier, Fn.

If it's software third level modifier, AltGr.

Otherwise Meta.
 
Last edited by a moderator:

_wb_

Microbe
Staff member
Joined
Apr 5, 2012
Messages
5,390
Age
39
Location
Brussels, Belgium
If it's driver-level or hardware modifier, Fn.

If it's software third level modifier, AltGr.

Otherwise Meta.
Exactly. Otherwise being: a custom software modifier, which is defined at a sufficiently low level to be transparent to applications that don't know about it, but still can be detected by software that does know about it.

Sorry to gravedig this 7-month old poll, but this is a topic that is being discussed again in some of the keyboard threads, so I thought maybe some people want to vote if they didn't already, or modify their vote based on some of the recent discussion.


I personally had "Meta", "Sym" and "Pyra" as acceptable choices, and "Pyra" as preferred one, but meanwhile I've changed my opinion: I now think "Pyra" is not a good name for the modifier, since it makes more sense to put the Pyra logo on "Super" (Windows logo key), and not have any key labeled "Pyra". So I changed my vote accordingly.
 
Thank you for bringing this out.  I too had Pyra as my top choice, but now feel that Fn or Meta are better solutions and that calling this functional AltGr is simply not acceptable as AltGr has other very specific meanings.
Am I missing something? Why would either of you want "Pyra" as the modifier key, when we have a seperate Pyra button anyway? Or is that what you are referring to?


In which case, is the Pyra button going to be a modifier or a key? I don't know how you'd bring up the Pyra menu if it's a standalone modifier
In my current layout proposal, "Meta" is the modifier used to get all the missing keys (F-keys, most punctuation symbols, everything in orange-red), while "Pyra" is the key at the location of the Pandora button (below START and SELECT), and it corresponds to the Super key (Windows logo key on many keyboards). It's perfectly possible to let Super be the key that brings up a menu (when you tap it) and let it still be a modifier for additional shortcuts. That's exactly how the Super key behaves by default in Ubuntu, for example.
 

thatgui

Advanced Member
Joined
Apr 2, 2009
Messages
3,048
while "Pyra" is the key at the location of the Pandora button...the key that brings up a menu (when you tap it) and let it still be a modifier for additional shortcuts...
Wouldn't it be akwardly placed for a modifier key ?
I'd like your capability to know what is written somewhere without reading it.
It's one of my average-human-powers: extrapolation from experience (threads about keyboard layouts that I have read, titles of the ones I haven't, behavioural knowledge about - most - participants).But as you basically hit the nail on the head, I read almost all post (I am sure I missed some, as I am not sure at which point exactly I stopped) and I am at the same point as I was at the time I wrote the post you were addressing: circles. If I missed some posts that show that I am wrong, please give me hint, maybe there were some crucial ones, I just missed out on or I just wasn't getting were these posts were heading.

While I certainly don't think that there can't be enough discussion about a topic as long as the participants don't bother others too much - which is certainly the case here, there aren't threads popping up by the minute, the discussion are all civil, and most real participiants are trying to be constructive, its the nature of this board making it almost impossible to not see every new event in said discussion. The problem I see here is that most of the other users get somewhat disconnected from the whole keyboard layout problem, and I am beginning to wonder wether ED has a post limit (dictated by time and motivation) after which he just stops bothering about the whole thing (which is surely a lot hinger then mine, maybe even most of the users here).

If ED would have enough money, I would suggest sending a prototype Pyra with a blank keyboard to everyone that proposes a layout, which they could fill themselfs with their favourite layout. Then start a deathmatch tournament a la "the typing of the dead", with the last man standings layout beeing the final one.

Edit:

If it's driver-level or hardware modifier, Fn.
why so strict about that ?
 
Last edited by a moderator:

_wb_

Microbe
Staff member
Joined
Apr 5, 2012
Messages
5,390
Age
39
Location
Brussels, Belgium
while "Pyra" is the key at the location of the Pandora button...the key that brings up a menu (when you tap it) and let it still be a modifier for additional shortcuts...
Wouldn't it be akwardly placed for a modifier key ?
Yes and no. Roughly like the keyboard ALT and CTRL. It works, it's OK for the occasional shortcut, but for things you need very frequently, shoulder buttons are way more efficient. If we had 5 shoulder buttons, I would add Pyra/Super as a shoulder button, but we don't, and I consider Shift, Meta, Ctrl and Alt to be more important than Super.
 

_wb_

Microbe
Staff member
Joined
Apr 5, 2012
Messages
5,390
Age
39
Location
Brussels, Belgium
If it's driver-level or hardware modifier, Fn.
why so strict about that ?
As far as I know, it's by far the most de facto standard name for such a key.
Yes. it is. Here are the Wikipedia articles about Fn, AltGr, Meta and Super, by the way:

http://en.wikipedia.org/wiki/Fn_key

http://en.wikipedia.org/wiki/AltGr_key

http://en.wikipedia.org/wiki/Meta_key

http://en.wikipedia.org/wiki/Super_key_%28keyboard_button%29

Getting inspiration from this:

http://en.wikipedia.org/wiki/Space-cadet_keyboard

we could also call our modifier "Top" or "Front" (the two other types of Shift keys on a Space-cadet keyboard), or "Hyper".
 

comradekingu

Glowing ember
Joined
Apr 15, 2011
Messages
5,071
Website
portfolio.anotheragency.no
You are omitting AltGr. Meta is only important in that set of buttons if you make it double for AltGr. I dont understand adding a super instead of correcting that.

The space cadet is great for people writing perl and lisp, which is not most people.

Yes, and If we call it meta or hyper, it _cant_ also be AltGr. AltGr is third level shift. Meta however, isnt shift.

The space-cadet lacks dedicated and printed G and F-keys. Cant we implement that instead? It works for people who are advanced, its better for people who arent.

Doing away with AltGr works for neither.
 
Last edited by a moderator:

_wb_

Microbe
Staff member
Joined
Apr 5, 2012
Messages
5,390
Age
39
Location
Brussels, Belgium
You are forgetting AltGr. Meta is only important in that set of buttons if you make it double for AltGr. I dont understand adding a super instead of correcting that.

The space cadet is great for people writing perl, which is not most people.

Yes, and If we call it meta or hyper, it _cant_ also be AltGr. AltGr is third level shift.
In my view:

Fn is a hardware modifier (not detectable by software) to make the keyboard look like it has everything.

AltGr is right Alt and is a standard modifier which can be used on full keyboards as a third level shift to get additional symbols on letters, numbers and punctuation symbols. E.g. many people have € at AltGr+E or AltGr+4 or AltGr+5, ¿ and ¡ are often put at AltGr+? and !, dead diacritics at AltGr+ ` ' ~ " ^, and so on.

Our problem is that we don't have a full keyboard, not even nearly full like on a laptop. We could use an Fn modifier like on the Pandora, but then we can't put it on a shoulder button since its events cannot be detected by software. We could use an AltGr modifier, but then we have some problems:

  • If you want to use "real" AltGr on keys that already have a "Pyra-AltGr" label, or that are "Pyra-AltGr", then that's not possible.
  • Since AltGr = RAlt, you cannot really have both Alt and AltGr on the shoulder buttons and on the keyboard itself, because then you have 4 Alt keys
So I think it's better to have a Pyra-specific software modifier. I don't care much about its name, as long as it's not Fn and AltGr. It can be Meta, Hyper, Top, Front, Sym, Extra, Mod, or simply some colored symbol like ◆ ■ ▲ ●.

The advantage of calling it "Meta" and mapping it to the obscure but standard Meta modifier, is that it might require less effort to customize keyboard remapping software to know about it, because e.g. X already knows about it. "Hyper" would have the same advantage.

You can map anything to anything, so it's up to the user whether they want their extra symbols like Æ Ø Å mapped directly on available Meta keys (making a custom layout), or e.g. set their keyboard to something standard like US-International. That would (by default) make the shoulder Alt an AltGr, and US-International has e.g. Æ at AltGr+Z, £ at AltGr+$, ¶ and ° at AltGr+; :, and so on.

For example, US-International has « and » at AltGr+[ ]. In my layout proposal, [ and ] are at Meta+F and Meta+G, so if you want to get « », you would actually press AltGr+Meta+{F,G} which would be R2+L2+{F,G}.
 

rygD

Nihilistic Mystic
Joined
Feb 28, 2014
Messages
7,478
Location
Everywhere
This was a reply to comradekingu before his last post grew much larger.

I just scrapped most of what I was going to say. It isn't adding Super, it is not adding additional Alts.  As I recall he already has 2, including a right one.  It has already been pushed that "AltGr" should not be used if it will not work as a real one.  Meta in his layout will not.  He would rather have Super (as would I) than 4 Alts.  I suspect that in regions where AltGr is not widely used the 4 Alts will be confusing, and when half of them don't function as expected this will have a negative impact on users' experiences, which could result in not recommending it to other, or reduce/eliminate their personal use.  One of the driving forces behind your layout is making it easier for average users, yet you are ignoring a lot of potential average users, and trying to get others to do things your way.
 
If he doesn't need AltGr for how he wants his layout why should he include it?
 
The biggest benefit of all of the layouts that have been produced is that they are all doing things differently.  It would not be good for everyone to do the same thing and have the same weak points.  I don't understand why you can't see that.
 
Last edited by a moderator:

comradekingu

Glowing ember
Joined
Apr 15, 2011
Messages
5,071
Website
portfolio.anotheragency.no
Thread is called "Name of the extra modifier"

Alternatives include AltGr. AltGr isnt extra. AltGr is as standard as it gets.

There is nothing non-AltGr about putting an arbitrary symbol on third position on a layout, thats what makes them different, and they all do it.

There is something non-keyboard about putting symbols on letterkeys they dont belong at, and then pretending meta+ only is ok because AltGr would supposedly break something.

What exactly is the problem with 4 alt-keys?  Or, to not confuse the matter dedicated LAlt and RAlt  which some keyboards have,  and 

duplicated 2x AltGr. Dont know if the latter comes in right or left versions.

Its no more confusing than two shifts, or did i just uncover something you hadnt factored in?

Shift and AltGr works exactly "as expected". You would be wrong to think the same is true for a key called Meta doing half of what AltGr does.  Thats the part thats broken at both ends.

However if you want to make AltGr into Meta, then you have two problems.

First of all AltGr isnt Meta, second of all, Meta isnt a shiftmod.  Stop saying the word standard when what you mean isnt just not a standard, but activly breaking said standard.

Sidenote, do you know if those proposed schemes actually work on users?

ÆØÅ arent extra symbols, they are either default letters, or they arent.

I am not the one trying to get things "my way", unless you consider how a keyboard works to be mine in some sense. The highly arbitrary "wb's" way, which he doesnt defend, nor explains, is the part thats subjective.



I agree 100% with your concerns, but I am the one trying to do something about it. Please show both layouts to these average users. Then report back. In my experience, AltGr still fails, and Meta only works for otakus.

I only see rationality in arguments. "My way" is just a label. The problem isnt wb having a layout, the problem is on this particular layout, he has included a key which isnt standard, sporting functionality not seen anywhere but on toy keyboards.

His argument against implementing the standard AltGr key, that more people know how to use, and does more things, is that it conflicts with his already implemented meta. Which is as much of a circular argument as it is ironic.

Yes, you wont get F-keys with shoulders, but then again considering the nature of the argument, average users dont use, nor buy, devices with, F-keys.

You can have a perfectly functional keyboard, like the one im typing on, without super. At the point where you are adding that, but taking away AltGr, it no longer works as expected.

Wb re-designed the layout I consider to be the one i can make that is most closely aligned with the wishes of all parties in the explanation thread. I then answered to all the things i thought to be worse, and all the things i thought to have improved. We are waiting for a reply.

Its either that or implement my concerns in the matrix thread. You'd have to say no to a long list of things to stick to the same guns.

Its our layout, because we all base it off eachother and improve through feedback. And i certainly hope it can be in the end the layout of the average person.
 
Last edited by a moderator:

WizardStan

Mega GP Mania
Joined
May 24, 2008
Messages
16,733
There is nothing non-AltGr about putting an arbitrary symbol on third position on a layout, thats what makes them different, and they all do it.
Except that's not how it will be used on the Pyra, it's not how it CAN be used on the Pyra.On a desktop, when you press "AltGr"+"E", the keycodes the driver emits are "R_ALT" (alternatively Alt+Ctrl, or even ALT_GR depending on the system, apparently, but the important thing is that it produces a modifier) and "E": the character code emitted is "€" (or whatever happens to be there).

If it is accepted to use AltGr, what is the keycode output if you press "AltGr"+"2"? Is it "R_ALT" and "2"? Or is it actually " (double quote)? If the former then you are setting up a lot of potential confusion, not to mention destroying any possibility of having an "actual" AltGr. If the latter then it isn't behaving like an AltGr and your precious adherence to standards and constant complaints about "who does that" is a farce.
 

thatgui

Advanced Member
Joined
Apr 2, 2009
Messages
3,048
If it's driver-level or hardware modifier, Fn.
why so strict about that ?
As far as I know, it's by far the most de facto standard name for such a key.
Sorry I misinterpreted your comment, I thought this was aimed at the specific function, they keys which should be combined with that extra modifier, would serve. But I understand now, that you were solely writing about the implementation of the extra modifier itself.
 

_wb_

Microbe
Staff member
Joined
Apr 5, 2012
Messages
5,390
Age
39
Location
Brussels, Belgium
What exactly is the problem with 4 alt-keys?
The same problem as with having 3 shift-keys. They can't all be different and distinguished.

For example, in your layout, you have R1 and R2 both Alt (one of them an R_Alt which is AltGr, the other an L_Alt which is regular Alt), and also your SELECT is Alt (so another L_Alt) and the button at the right of the top row is AltGr (so another R_Alt) :



That means that if you're playing a game which uses the shoulder buttons, it cannot distinguish SELECT from R2, or allow you to type the symbol "+" with the keyboard AltGr, because it cannot distinguish keyboard AltGr from R1.
 

Saber

Advanced Member
Joined
Jan 23, 2012
Messages
1,303
What exactly is the problem with 4 alt-keys?
The same problem as with having 3 shift-keys. They can't all be different and distinguished.

For example, in your layout, you have R1 and R2 both Alt (one of them an R_Alt which is AltGr, the other an L_Alt which is regular Alt)...
Although I prefer the moniker Fn over AltGr, I'm not entirely sure R_Alt is AltGr, in all platforms, after reading this: http://blog.andrewbeacock.com/2007/06/getting-right-alt-key-alt-gr-to-work-in.html 

I'll leave it up to others to extrapolate whatever they can from this. 
 

comradekingu

Glowing ember
Joined
Apr 15, 2011
Messages
5,071
Website
portfolio.anotheragency.no
WizardStan, is your concern, what if the AltGr produces a symbol that isnt normally under AltGr?  What would you expect?

On my desktop, running x11 linux|gnu, when i press AltGr it produces " ISO_Level3_Shift"  

And i also have L_shift  and R_shift. They all have different keycodes.

So i have a L_alt, why couldnt i also have a R_alt?
 
Last edited by a moderator:

WizardStan

Mega GP Mania
Joined
May 24, 2008
Messages
16,733
WizardStan, is your concern, what if the AltGr produces a symbol that isnt normally under AltGr?  What would you expect?
Not at all. My concern is exactly what I expressed: if, on your keyboard, you press AltGR+2, what is the expected keycode output? Is it AltGr+2 or is it just "(double quote)?If the former you are setting up a lot of problems. If the latter then it isn't behaving like an AltGr key at all, it is behaving like an Fn key.
 

comradekingu

Glowing ember
Joined
Apr 15, 2011
Messages
5,071
Website
portfolio.anotheragency.no
I would first expect it to do small 2 like on german layout, since i am not german and small 2 is not needed, id assume it to do what it said on the key, similar to the difference between norwegian and German. (In norway its @.)

For a US user i would expect it to fail, unless US user has tried a different keyboard. I would expect it to fail for novice euro users too, all of which was why i proposed being able to type language with shift only. That wasnt as popular as instating US numberrow-symbols.

If it was called meta and had symbols on the number letters i would expect it to fail right away for all novice users, and work only for advanced ones. I would expect it to fail the hardest for people being used to AltGr-ing+ those letters and expecting a result.

This is how Shift/alt/AltGr are defined here:

in usr/include/X11/keysymdef.h

#define XK_Alt_L                         0xffe9  /* Left alt */

#define XK_Alt_R                         0xffea  /* Right alt */

 

#define XK_Kana_Shift                    0xff2e  /* Kana Shift */

#define XK_Eisu_Shift                    0xff2f  /* Alphanumeric Shift */

#define XK_Shift_L                       0xffe1  /* Left shift */

#define XK_Shift_R                       0xffe2  /* Right shift */

#define XK_Shift_Lock                    0xffe6  /* Shift lock */

#define XK_ISO_Level3_Shift              0xfe03

#define XK_ISO_Level5_Shift              0xfe11

#define XK_ISO_Group_Shift               0xff7e  /* Alias for mode_switch */

 

In xmodmap

 shift       Shift_L (0x32),  Shift_R (0x3e)

lock        Caps_Lock (0x42)

control     Control_L (0x25),  Control_R (0x69)

mod1        Alt_L (0x40),  Meta_L (0xcd)

mod2        Num_Lock (0x4d)

mod3      

mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)

mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

 

 

Might not be a good idea to call the extra modifier meta, since software may understand it as indistinguishable from Alt. Supposedly because meta came from the symbolics-keyboards and it was called meta there.

 

Edit: I think in game mode, dpad, nubs, nub buttons, the shoulders and start+select should send joystick-events.
 
Last edited by a moderator:

WizardStan

Mega GP Mania
Joined
May 24, 2008
Messages
16,733
I would first expect it to do small 2 like on german layout
Sorry, have you changed your layout? Last I saw it had double quote as the alt character on your 2 key.
edit: regardless, replace it with some other key you do have a standard ascii punctuation on, something that normally gets its own key but due to lack of space needs to be an alternate. The question still remains the same: what is the expected output on your keyboard of "alt-gr"+"that_key"? Is it the actual modifier "alt-gr" and "that_key" or is it just "alternate_key" whatever that happens to be?
 
Last edited by a moderator:

comradekingu

Glowing ember
Joined
Apr 15, 2011
Messages
5,071
Website
portfolio.anotheragency.no
When you say normally, do you mean for you on US keyboard? Because for me all the things under AltGr arent dedicated keys.  There are some duplications, but i dont think any of them are the primary keys by default.

Pressing AltGr

Pressing 2

Letting go of 2

Letting go of AltGr

KeyPress event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506240623, (-7,12), root:(864,535),

    state 0x10, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,

    XKeysymToKeycode returns keycode: 92

    XLookupString gives 0 bytes: 

    XmbLookupString gives 0 bytes: 

    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506241161, (-7,12), root:(864,535),

    state 0x90, keycode 11 (keysym 0x40, at), same_screen YES,

    XLookupString gives 1 bytes: (40) "@"

    XmbLookupString gives 1 bytes: (40) "@"

    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506241274, (-7,12), root:(864,535),

    state 0x90, keycode 11 (keysym 0x40, at), same_screen YES,

    XLookupString gives 1 bytes: (40) "@"

    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506241947, (-7,12), root:(864,535),

    state 0x90, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,

    XKeysymToKeycode returns keycode: 92

    XLookupString gives 0 bytes: 

    XFilterEvent returns: False

Edit: Curiously the letter n seems to be duplicated to AltGr+n

Pressing n

Letting go of n

KeyRelease event, serial 30, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506694933, (156,-286), root:(1027,237),

    state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,

"   XLookupString gives 1 bytes: (0d) "

    XFilterEvent returns: False

PropertyNotify event, serial 36, synthetic NO, window 0x3000001,

    atom 0x1c8 (_NET_WM_ICON_GEOMETRY), time 506694965, state PropertyNewValue

KeyPress event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506696666, (156,-286), root:(1027,237),

    state 0x10, keycode 57 (keysym 0x6e, n), same_screen YES,

    XLookupString gives 1 bytes: (6e) "n"

    XmbLookupString gives 1 bytes: (6e) "n"

    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506696725, (156,-286), root:(1027,237),

    state 0x10, keycode 57 (keysym 0x6e, n), same_screen YES,

    XLookupString gives 1 bytes: (6e) "n"

    XFilterEvent returns: False
Pressing AltGr

Pressing n

Letting go of n

Letting go of AltGr

KeyRelease event, serial 33, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506755884, (37,-283), root:(908,240),

    state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,

"   XLookupString gives 1 bytes: (0d) "

    XFilterEvent returns: False

PropertyNotify event, serial 36, synthetic NO, window 0x3000001,

    atom 0x1c8 (_NET_WM_ICON_GEOMETRY), time 506755894, state PropertyNewValue

KeyPress event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506771084, (37,-283), root:(908,240),

    state 0x10, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,

    XKeysymToKeycode returns keycode: 92

    XLookupString gives 0 bytes: 

    XmbLookupString gives 0 bytes: 

    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506773791, (37,-283), root:(908,240),

    state 0x90, keycode 57 (keysym 0x6e, n), same_screen YES,

    XLookupString gives 1 bytes: (6e) "n"

    XmbLookupString gives 1 bytes: (6e) "n"

    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506773864, (37,-283), root:(908,240),

    state 0x90, keycode 57 (keysym 0x6e, n), same_screen YES,

    XLookupString gives 1 bytes: (6e) "n"

    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x3000001,

    root 0x26e, subw 0x0, time 506775371, (37,-283), root:(908,240),

    state 0x90, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,

    XKeysymToKeycode returns keycode: 92

    XLookupString gives 0 bytes: 

    XFilterEvent returns: False
 
Last edited by a moderator:
Top