Egerek, billentyűzetek

Defining our own Keyboard Layout

The original Hungarian version of this article: https://hup.hu/node/167618

-----------------

I have two different kinds of hobbies: one is writing books, the other one is programming. Unfortunately both requires different kinds of keyboard layouts. Additionally, I prefer wireless keyboards, which have touch-pads instead of numerical keypads. Although I like to have a touch-pad on my keyboard, this way I haven’t got enough keys. The available space for keys is not even enough for the usual characters, not to mention that we’d also need a couple of modifier keys. With the help of modifier keys and the software named xbindkeys we can make shortcuts to often used programs or functions.

What makes it even harder, is that my native language is Hungarian, and our alphabet includes plenty of accented letters. When I work on a program, I use English keyboard layout, but often I need to include Hungarian text as comment, or something, so I have to switch to Hungarian, because English layout doesn’t include accented letters at all. Additionally, mathematical operation keys and punctuation mark keys are being laid out differently in both.

Gave me a lot of headaches to find a solution, I had no idea how to deal with it. My keys are marked with English letters. This is not bothering me when I write, because I already know it by heart which are the keys for the accented Hungarian letters. But it’s difficult when I program, because when my keyboard layout switched to Hungarian, special characters, which I almost never need for writing, but often use in programming, are hard to find, as the keys are marked according to English layout. (for example: []{}#$ ). I guess I’m not the only one who came across discrepancies between functional and visual layouts; whoever works on their computers in different language environments and use it for completely different purposes must run into the same problems.

Solution:

We must define our own keyboard layout. This is troublesome from two aspects: one is that it’s awfully difficult to find out how X interprets keyboard-operations. What does it do and why? I had to set myself to it many times before I started to see the light. Actually, it still has kept a few mystical hokum from me in the dark. Basically the whole thing is a confusing fuzzy mess. What it does is nothing much than sending a code to the machine each time a key is being pressed, which will be indexed by X multiple times based on different types of data tables.
And the other one is that designing an adequate keyboard layout is not an easy job.

Let me describe step-by-step my conception and the reasons behind each steps:
We have to start with the most important thing; defining the modifier keys. We can find plenty of articles in the internet on this subject, but PRACTICALLY ALL OF THEM NOT ONLY INCOMPLETE, BUT ALSO WRONG.

The situation is that modifier keys can be varied in many different ways, and basically any key can work as a modifier key, plus many keys may have the same name. There are a few really strange names, which is only the same by sight as the other modifier keys, but in reality they have exceptional role. Actually under the expression »modifier key« we mean two completely different things, and they are often merged together:

1. The modifier keys, which define what kind of character code will be generated by X out of the code sent by the keyboard.
2. The other type of modifier keys are those we call modifier, because pressing just the key itself will not result in displaying any character. Even if it’s being held while another key is struck the character remains the same, but the state of the modifier key can be queried by different programs, and based on the answer they can do something.

If the above explanation seems to be somewhat diffuse, I can tell you that reality is even worse, because in X, it’s been decided based on xmodmap tables which keys should function as what type of modifier keys...

This is hard to understand without a sample, so let’s see one:

First of all, we need to choose one of the existing layouts as a starting point. There are two different kinds; one is the Hungarian in my case, for everybody else is their own mother tongue of course, the other one is English. I chose the Hungarian to start with; I set my machine by the command

setxkbmap hu

then, I saved this layout in a file, like that:

xmodmap -pke > modmap

Our job with it will be the following:

1. We need to edit the modmap file accordingly.
2. An executable file needs to be created for modifier keys, which will run every time X is being booted.
3. To support point 2, and to acknowledge the new modmap file the  $HOME/.xinitrc file needs to be edited.

As I already mentioned, first of all we need to be clear on the role of modifier keys. If we take a look at into the modmap file, we will see lines like that:

keycode 17 = 8 parenleft multiply multiply asterisk asterisk dead_abovedot

If you see something different in your code in the line that starts with "keycode 17", don’t worry. The point is that each row starts with the word "keycode" followed by a number. The number is what the keyboard sends to the machine when we press a key.  With this explanation we only scratch the surface; there are different kinds of tricky programs designed to detect the difference between the states of the key, whether it’s being held down or released already, etc. But I don’t even want to get started on it now...

So far it’s clear that each line belongs to a keycode, but the number of parameters differ. Parameters are always separated by space, so parameters can’t contain spaces. A parameter is always a well-known character, or a one digit number, or some strange name.

One line may contain maximum 8 different parameters following the equal sign, but usually it’s less than that. Often a parameter with the same name will appear more than one places; even in the same row or in another lines.

So, as I said, there can be max. 8 fields in a row, that is 8 parameters. Each fields represent the adequate code that will be paired with the line belonging to the key if the right modifier key is simultaneously held down. These fields, or parameter positions mean the following:  

Field 1: (this is of course the first field in the left, following the equal sign, because fields are numbered from left to right): this is the place for the code, which is generated when a single key without any modifier key is being pressed.

Field 2: here comes the code that is generated when a key is struck while SHIFT is held down.

Field 3: here comes the code that is generated when a key is struck while Mode_switch is held down. Haven’t heard of this key before? Never mind, I will shed light on it later!

Field 4: here comes the code that is generated when a key is struck while Mode_switch and SHIFT are held down together.

Field 5: this code is generated when a key is struck while the key named ISO_Level3_Shift is held down. (Twisted name for a key, isn’t it?)

Field 6: the place for the code generated when a key is struck while ISO_Level3_Shift and SHIFT are held down together.

Unfortunately I couldn’t figure out how the code is generated for Field 7 and 8. I kept trying to fetch the code for hours, but the most I could manage even with extremely special adjustments was to get a hold on code Field 8. But nothing on Field 7. Additionally when I got the code for Field 8, it has changed the path for all the previous fields. From that point those could only be reached by different modifier keys. There is a certain setting though, that makes possible to reach the code of Fields 1, 2, 7 and 8, but not the ones in between, 3, 4, 5 and 6. Great...

So I decided that 6 fields should be enough, actually it makes possible plenty of variations. Please note, that probably the reason why I only was partially successful is not that I’m an idiot; actually, if I understood correctly, it’s only guaranteed to reach the code of the first four fields on most hardware and implementations. Many times the code of Fields 5 and 6 are available, because in prefabricated xmodmap files the first two fields are practically the same as the second two, in case the crackbrained user would mix SHIFT with the other modifier key. So the rarely used characters will go to Field 5 and 6, because this two fields will be available in most hardware and software. Most, but not all, and believe me, it really sucks, when you need let’s say an accented "i", but there is no way to display it, because it’s usually is hidden under "AltGr-J".

The seventh and eight fields are absolutely not guaranteed, we’d better not to count on them, as they didn’t even exist.

So the first 6 fields should do it. As we can see, there are three mysterious keys that need to be defined; the SHIFT, the ISO_Level3_Shift and the Mode_shift.

In case of the latter two defining them means, to write their strange names into a table, assigning them to the right keycode line. They can be assigned to more than one keys, in that case the given function can be reached many different ways. In case of SHIFT this is more difficult, we can’t just write SHIFT in the code, because there are two different kinds: Shift_L and Shift_R, which logically means left and right. But this fact of course could be changed, if you wanted to.

It’s important to know how to detect the code that belongs to each of your keys. For that, you need the program named xbindkeys. It must be run from commandline, like that:

xbindkeys -k

a white pop-up window will appear, and you will have to press the key, which code’s you wish to detect. You will see a message similar to this:

Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"NoCommand"
    m:0x2000 + c:108
        Mode_switch

When I pressed down ALT on the right hand side, namely AltGr the above message has been generated. What’s interesting for you from this message is only the part c:108, which means that the code for this key should go to line

keycode 108 =
       
This key will become the modifier key named Mode_switch, if we write the word "Mode_switch" in the appropriate keycode line, at least in the first field of it. It’s a must to write it in the first field, but honestly, I’m not sure whether it made any difference in the other fields. Who knows how the system interprets when a modifier key pressed down together with another modifier key? So either we write it only in the first field, or each of the fields. Important to know, that it’s optional whether how many of the eight fields we fill in. The ones towards the end might be left out.
       
I have to admit that I don’t consider myself the most resourceful or smartest person when it comes to the dilemma whether we should write a modifier key’s name in more than one fields. I’ve been experimenting with that key-problem for days, and I ran into such shockingly idiotic solutions from the part of our dear Xorg, that from now on I’m willing to give credit to all the vile things I’ve heard about them. I’m afraid this subject is pretty much hardware- and implementation dependent. (I have found hints in different kinds of descriptions to back this up). What I mean is, that it makes a difference what kind of manufacturer produced your keyboard, which version of Xorg are you using, and what is in the xorg.conf file of xorg when it boots, if it has one at all in the given distribution. The information you provide on the keyboard matters as well; you say for example, it’s a pc104, or if its a hu, than how many keys it has, and which variant, etc. This things can cause a very nasty mess. So, let me share how I did it, how it worked out for me. I publish the necessary files as well, but there is no guarantee it’ll work the same way for you, some experimentation might be necessary on your part. My description is based on the experiment I carried out on a Logitech K400 wireless keyboard.
       
Once we have finished with that key, Mode_switch, modifier key ISO_Level3_Shift needs to be assigned to a key, then Shift_L and Shift_R as well. One of the two shifts can be eliminated, if we decide on having just one.
Then we are supposed to define similarly keys named Control_L and Control_R. (these are the ones, that usually marked with "Ctrl" on your keyboard).
       
The names in the table can be divided into groups, so symbols can be named the same. Practically it works like this:

xmodmap

This line of command will come up with the following code:

        xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
       
        shift       Shift_L (0x32)
        lock
        control     Control_L (0x25)
        mod1        Alt_L (0x40),  Alt_L (0xcc)
        mod2        Hyper_L (0x4d),  Hyper_L (0xb4),  Hyper_L (0xcf)
        mod3        Super_R (0x3e),  Super_R (0x86)
        mod4        Super_L (0x85),  Super_L (0xce)
        mod5        ISO_Level3_Shift (0x42),  ISO_Level3_Shift (0x5c)
 

In my list above the symbols, which considered to be modifier keys are listed in the first column, and followed by the character code from the corresponding keycode line. For example I have a modifier key named "Control", for which belongs the code of Control_L from the keycode table, and it’s value is indicated in parentheses (0x25). This is a hexadecimal number, which value is 2*16+5, that is 32+5, that is 37. What it means, is that key Control_L has been defined in line 37 of keycode table, so line keycode 37 will control the operation of this button.
       
Here, I included this only one key in the group named "control". I could have named more than one keys "control", but I only need one. The reason why, will be reviewed later on. There are other different groups, like

        shift, lock, mod1, mod2, mod3, mod4, mod5.

Unfortunately more than that is not possible, and the group names are fix. I tried to be tricky and define a new group named mod6, but the system has shown severe reactions against it. What was I thinking?!
       
Once we have our xmodmap table filled in with all the lines that starts with keycode followed by the plenty of smart things we daydreamed of, then we can define those groups. For that, we need a script, which we can stylishly call "modkeys", and in our case it will look like that:
       
  

      #!/bin/bash
         
        xmodmap -e 'clear shift'
        xmodmap -e 'clear Lock'
        xmodmap -e 'clear control'
        xmodmap -e 'clear mod1'
        xmodmap -e 'clear mod2'
        xmodmap -e 'clear mod3'
        xmodmap -e 'clear mod4'
        xmodmap -e 'clear mod5'
        xmodmap -e 'add shift = Shift_L'
        xmodmap -e 'add control = Control_L'
        xmodmap -e 'add mod1 = Alt_L'
        xmodmap -e 'add mod2 = Hyper_L'
        xmodmap -e 'add mod3 = Super_R'
        xmodmap -e 'add mod4 = Super_L'
        xmodmap -e 'add mod5 = ISO_Level3_Shift'

      
        It does the following:

The lines including the text "clear" will clear the previous definitions of the group, if there’s any. Then with lines including "add" we can define which names of keys belong to what groups. As we could write the same name to many lines in the keycode table, this script may gather many keys by one name, let’s say Super_L in our case, into one group, which is now mod4.
       
Certain programs might suppose, that conventionally there are modifier keys named shift and control in systems, and mod1 as well, which is actually nothing but key Alt.
       
Those who paid attention so far may raise the question, why it’s good for me to have only one Shift and Ctrl, why do I give up on the rest?
       
Well, it’s because I don’t have enough keys on my keyboard. I can’t afford to make many different keys to serve the same software function. This would be senseless, unnecessary waste, as I’m right-handed, and use the left shift and ctrl only. So those keys on the right side can serve some better purpose.
       
The next modifier keys are working in my system right now:
       
        shift = this is the left-hand-side shift in my system, it’s function is the usual.
       
        control = this is the left-hand-side Ctrl in my system, it’s function is the usual.
       
        mod1 = this is the left-hand-side Alt in my system, it’s function is the usual.
       
These 3 groups above better be left alone, because programs are counting on them strongly. So all I did was to remove their right side pairs from the group.
       
Now, here come the specialities! I also have the following groups:
       
        mod2 = it’s included in the keycode table under name Hyper_L  and  assigned to the key located in the upper part of my wireless keyboard marked with a home icon. This is of course not the same as what we mean under “Home” usually, actually has nothing to do with it.
       
        mod3 = Super_R — this one is assigned to right-hand-side shift in my system.
       
        mod4 = Super_L —  that’s the left-hand-side Windows® button, makes me nauseous even to look at it. Fortunately I have found a sticker on E-bay in the right size to cover it, which is made of some kind of durable aluminum-like material and portrays a penguin… it was pretty expensive, but worth every penny, because my machine is no longer in danger of being thrown up on, and also because I’m not willing to let my keyboard to be Micro$oft’s free billboard, especially because I don’t even use their operating system!
       
        mod5 = ISO_Level3_Shift — In my system that’s the one to assigned to CapsLock...
       
        Mode_switch = that’s right-hand-side Alt, or in another word AltGr.
       
Although there is a group called "lock", I haven’t assigned anything to it; I hate if capitals are coming out endlessly, just because I pressed a key.
       
Now please take a look at my layout, and see how excellent it is! I’m full of usable, fluid modifier keys. Programs only occupy shift, ctrl and alt, rarely counting on key Windows®/Penguin. The rest is up for my own purposes. But this is not, what makes this layout so genial; it is the fact, what we may have not noticed at first sight, that Mode_switch and ISO_Level3_Shift are on completely different keys!
       
Most of the times in original xmodmap files the third and fourth fields are only the replications of the first and second. In the fifth and sixth fields there are characters that usually generated by holding down AltGr (right-hand-side-Alt). This is interesting and sad at the same time, because as we discussed it earlier, these two columns are for characters to be reached by holding down ISO_Level3_Shift. Meaning, that the makers of usual keyboard layouts are mixing together symbols ISO_Level3_Shift and Mode_switch, so practically Mode_switch will do ISO_Level3_Shift’s job. (Or maybe not, who the hell knows? Obviously there are plenty of tricks available to accomplish it.) The point is that in spite of that seemingly they use 6 columns, in reality they only use 4, because the first two are the same as the third and fourth, which is such a waste.
       
In order to change it, I had to separate the two symbols, Mode_switch and ISO_Level3_Shift. With this of course I ran the risk of getting into trouble, if I bumped into some strange hardware settings where there were no possibilities for fifth and sixth columns. But the chance of it low and in the worst case I can get back to standard settings.
       
But before I get too high, X jerks me back to reality. I have to realize that even in Linux environment all that glistens is not gold; my hands are tied when it comes to graphical content. Because let’s see basic logic, which led to this idea: modifier keys, which names start with mod will be spared for extra functions, while a separate key under the name ISO_Level3_Shift will produce the necessary characters. This way we can have one extra modifier key.
       
But it doesn’t work. However I tried, at the end my system always came up with unexpected stupid things. Once it happened that a key, which hasn’t been defined as modifier key in the xmodmap table, still functioned as it was one. (Could it be a bug?) Or key CapsLock thought, it might as well can do the job of control keys because it wanted to be more than just an ISO_Level3_Shift key, so why not? I never said to it anything like that, but obviously it knows better, smarter than I, and always has the last word! So this strange ISO_Level3_Shift thing only seems to be working correctly, if it’s appointed also as a “mod”-like modifier key.
       
Now let’s see which character goes to where, because this was our actual starting point. And I not just by any chance started with Hungarian layout; I had a purpose with it. Mainly I use that layout, but I need its accented characters only. So we will use the Hungarian layout as a basis, and change it as follows:
       
Each of the letters in fields 1. and 2. stay intact. That means, that all the letters remain the same, either just the key itself is pressed down, or together with Shift. So the access of lower and upper case letters hasn’t changed. In line keycode 44, which is for J, we write in the third field “iacute” and “Iacute” in the fourth, otherwise we won’t have the accented í and Í in their usual place. Let’s not forget that now AltGr is responsible for columns third and fourth instead of fifth and sixth. It’s recommended to write the words iacute and Iacute into columns third and fourth of letter I as well. The same way can be accessed the numbers and characters, which in Hungarian layout can be displayed by pressing down shift and the number together, but of course they are not the same as the ones marked on the English keyboard. Whatsoever, if we already got used to their original places in Hungarian layout, it’s practical to keep it this way.
       
Here comes the smartest thing! As we discussed, the fifth and sixth columns can be accessed by ISO_Level3_Shift. The fifth by pressing the key itself, the sixth by holding down Shift when strike it. And in our case this ISO_Level3_Shift key is nothing, but the CapsLock. It comes in handy for right-handed users, who mainly use their left hand on the modifier keys and use the other one for typing. So what I did was, to find the corresponding keycode line and write the English layout’s characters (signs only, the letters don’t! what for?) into the fifth column, then the characters that is marked in the upper part of the key, those that can be accessed by Shift into the sixth column. Practically that means, that if a character on my keyboard appears on the lower part of the key I can access it by holding down CapsLock, and if it’s on the upper part of a key, then Shift+CapsLock. This combination is very comfy, because the two keys, CapsLock and Shift. are adjacent, at least on my LenovoThinkPad T530 laptop and Logitech K400 wireless keyboard, so I can press both simultaneously with just one finger. This is far easier than switching between different layouts while writing a program. Or if let’s say I write a letter in Hungarian I need to remember where the question mark, or exclamation mark is hidden, because only one thing is for sure: it’s definitely not under the key that has the mark on it in the English layout. But now, it’s guaranteed that I will find every character right under the key that has the mark, I only have to hold down CapsLock, or Shift+CapsLock to access them.
       
Let me note, that at least punctuation signs are located the same in English and Hungarian layouts, so we have nothing to do with those. The special characters marked above numbers on keys can logically be accessed by Shift+CapsLock too. And because I respect logic a lot, I put them not only in their right place in the keycode table, but also into the fifth columns, so they can be accessed by only holding down CapsLock without Shift. I thought it wouldn’t make much sense, to get the numbers with CapsLock, because average users need to use numbers often, and everyone want to access them without any modifier keys. So to get the characters marked above numbers on each keys we don’t have to use Shift, we only have to hold down CapsLock, which is helpful, considering how often those characters are used in programming.
       
Now we need to save our finished table in directory $HOME after named it .myxmodmap_hu then make an .xinitrc file that includes the following lines:
       

        setxkbmap hu
        xmodmap $HOME/.myxmodmap_hu
        modkeys
        Keymap --

Line setxkbmap hu is necessary to eliminate X’s shortcomings we discussed at the beginning, which has something to do with X not knowing what kind of hardware to expect (but it’s only my guess). So unless we do something to fix this problem, our layout won’t work properly, namely the CapsLock  won’t function well as mod5.
       
The line starting with xmodmap loads up our table, and the modkeys is the script we discussed earlier, which will set the appropriate modifier keys.
       
We have one more mysterious line:
       

        Keymap --

Well, this is a little script from me that includes the followings:
       

        #!/bin/bash
       
        KEY="hu"
       
        if [[ $1 == "--" ]] ; then
        cp /_/P/Szkriptjeim/-/mysettings/aktkeymap.txt /Mount/RAM
        exit
        fi
       
        if [[ $1 != "" ]] ; then
        KEY=$1
        fi
       
        echo $KEY > /Mount/RAM/aktkeymap.txt
       
        setxkbmap hu
        xmodmap $HOME/.myxmodmap_$KEY
        modkeys
       
        exit

      

So, what does that do? I can tell you, that the above mentioned  aktkeymap.txt file’s content is only that:

       
        hu

       
Well, when this script called containing parameter -- this file will be copied in a special directory, which is located on the RAM disc, but this is not what's important. The point is, if it were called without parameters it would write parameters in the file, and set the layout based on our $HOME directory's .myxmodmap file, which name ends with the given parameter.
       
This is important now, because so far I sidestepped the question, whether what the right-hand-side Ctrl key would be used for? Well, I've separated it from modifier keys and named F22. As you probably know it, for those Hebrew, Arabic, Russian, Vietnamies or any other special characters you may want to include in your keyboard layout, you have to find file keysymdef.h, in which, you can find the corresponding names for your characters.

        (This keysymdef.h is part of Xproto, or something similarly named program package, which is part of X server.)

Each name starts with XK_ ; what you need, is the part of the name following it.
       
As we can see, in file keysymdef.h there are plenty of other "F" function key symbols, many more than just 12! I used up F22 replacing my right-hand-side Ctrl key. Originally I only have function keys up to F12, and I haven't ever seen a keyboard containing more. Now I also have F22, so I could refer to it in the program xbindkeys. The follwing code is from my own $HOME/.xbindkeysrc file:

       

        # my hu keymap
        "Keymap hu"
        F22
       
        # my eo keymap
        "Keymap eo"
        Control + F22

That means, if I press F22 (right-hand-side Ctrl), it will switch to $HOME/.myxmodmap_hu layout. If it pressed it together with Ctrl (left), then the $HOME/.myxmodmap_eo layout will be activated. Many different layouts could be defined the same way. There could be one that defined on top the following combinations:

        mod1 + F22
        mod2 + F22
        mod3 + F22
       
etc, moreover, if program

xchainkeys

installed, we have endless possibilies... That's how we can have many own keyboard layouts.
       
The one named eo is useful for Esperanto characters, because it includes it's accented letters, which can be reached by using AltGr and Shift+AltGr. I only done this to test my idea on switching between my own keyboard layouts. Doesn't make much sense anyway, because these characters could fit in the "hu" layout. But this possibility's worth a fortune for those, who need many different languages with different character sets, such as Russian, Greek, Hebrew, Korean, Japanese, Arabic, etc.

When keymap script switches to another xmodmap file, it will store the code of the name of the actual keymap. This makes possible, to display it in the status bar, so there is no need to keep guessing the active layout while we work. But this will be not the subject of this post, it is already too "offtopic".

Finally a cute little trick: characters can't only be defined in xmodmap tables by special names, but directly by their UNICODE number, like that:

        keycode  27 = r R U003C1 U003A1

 

Now, I believe nothing can hold you back from making your own keyboard layout, you can get whatever your heart desires!
       
 

Saját billentyűzetkiosztás készítése

Két hobbym van: regények írása és a programozás. Sajnos, mindkettőhöz teljesen más billentyűkiosztás a jó. Ráadásul szeretem a wireless billentyűzetet, ami pedig kicsi, nincs rajta numerikus billentyűrész (keypad), ugyanis azon a részen egy tapipad van. Aminek nagyon örülök. Viszont így túl kevés a gomb. Már a szükséges karaktereknek is kevés, holott jó lenne pár extra módosítóbillentyű is, amik segítségével és az xbindkeys progival gyorsbillentyűkre köthetnék mindenféle gyakran használt progikat és funkciókat.

Tovább súlyosbítja a helyzetet, hogy amikor programozok, akkor nem elég az ha átváltok az angol billentyűkiosztásra, mert nagyon gyakori, hogy a programírás közben be kell gépelnem valami magyar szöveget, akár kommentbe, akár valami üzenet részeként, amit a program ír majd ki. Márpedig angol kiosztáson nincsenek magyar ékezetes betűk. Emellett az olyan gyakori karakterek is mint az írásjelek vagy műveleti jelek is teljesen másutt vannak a két kiosztásban.

Sokat töprengtem, hogyan oldjam meg a dolgot. A billentyűzetem olyan, hogy alapból angol feliratú. Ez a regényírás közben nem zavar annyiból, hogy rég megszoktam, hol vannak rajta a magyar ékezetes betűk. De zavar programozás közben, mert ott gyakran épp a mindenféle speciális karakterek kellenek (amik az írás közben szinte soha, például a []{}#$ jelek), s ezek teljesen máshol vannak a magyar kiosztás szerint, mint ahova fel vannak festve.

Szerintem hasonló gondokba mindenki belefutott, aki gyakran használja a számítógépet gyökeresen eltérő funkciókra, illetve különböző nyelvi környezetekben.

A megoldás:

Saját billentyűkiosztást kell tervezni. Ez két szempontból nehéz. Egyrészt, az X billentyűzet-értelmezése bizánci bonyolultságú! Cseppet se könnyű megérteni, mit csinál és miért. Többször nekifutottam, míg valamennyire megvilágosodtam benne. Gyakorlatilag most is van bőven mindenféle rejtélyes baromsága előttem. Lényegében egy zavaros, áttekinthetetlen katyvasz. Az egész másról se szól, minthogy a billentyűzet küld a gépnek minden billentyű esetén egy kódot, s ezt aztán az X össze-vissza indexelgeti többszörösen, mindenféle táblázatok alapján. Másrészt, az se könnyű hogy megtervezzük, melyik karakter hova kerüljön.

Leírom lépésről-lépésre, én mit alkottam és miért.
A legfontosabb amivel kezdenünk kell, a módosítóbillentyűk meghatározása. Az interneten erről rengeteg cikk van, DE GYAKORLATILAG MIND NEMHOGY HIÁNYOS, DE MÉG TÉVES IS!
    A dolog ugyanis úgy áll, hogy a módosítóbillentyűknek a nevét millióféleképpen variálhatjuk, és szinte bármelyik billentyűt kinevezhetjük módosítóbillentyűnek, sőt ugyanazon névvel több billentyűt is elláthatunk — ámde van sajnos pár fura név, ami csak látszatra ugyanolyan módosítóbillentyű mint a többi, valójában kitüntetett szerepe van! Ugyanis azalatt hogy „módosítóbillentyű”, sajnos 2 teljesen külön fogalmat szoktak összemosni.

1. Azon módosítóbillentyűk, melyek meghatározzák, hogy a billentyűzet által küldött billentyűkódból az X milyen karakterkódot állítson elő.
2. Azon módosítóbillentyűk, melyeket azért nevezünk így, mert önálló lenyomásuk nem eredményez külön karaktert, sőt más billentyűvel együtt lenyomva se módosítja azon billentyű karakter-jelentését, de a programok ezen módosítóbillentyű állapotát lekérdezhetik, s ettől függően csinálnak valamit.

Ha a fenti magyarázat netán zavaros volt, elárulom hogy a valóság ennél is rosszabb, mert az X a maga xmodmap táblázata alapján dönti el azt is, melyik billentyű melyik módosítóbillentyűként értelmeztetik…

Mindez abszolút érthetetlen konkrét példa nélkül, úgyhogy vágjunk is bele.

Mindenekelőtt ki kell választani, melyik már létező kiosztásból induljunk ki. Kétféle az ami szokásosan szóbajöhet, a magyar (nem magyar anyanyelvű olvasóim esetén az ő saját anyanyelvük szerinti) vagy az angol. Én a magyarból indultam ki, beállítottam rá a gépemet a

setxkbmap hu

paranccsal, majd e kiosztást kimentettem egy fájlba, eképp:

xmodmap -pke > modmap

A feladatunk ezután a következő lesz:
1. Szerkeszteni kell e modmap fájlt megfelelően
2. Létre kell hozni egy parancsfájlt a módosítóbillentyűk számára, ami az X minden indulásakor lefut.
3. A fenti 2. pont érdekében, meg azért hogy tudomást vegyen az új modmap fájlról, szerkeszteni kell a $HOME/.xinitrc fájlt.

Mint mondtam, mindenekelőtt tisztában kell lennünk a módosítóbillentyűk szerepével. Nos, ha belenézünk a modmap fájlba, ott efféle sorokat látunk:

keycode 17 = 8 parenleft multiply multiply asterisk asterisk dead_abovedot

Ha nálad nem pont ezek a fura szavak vannak a „keycode 17 =” kezdetű sorban, cseppet se aggódj! A lényeg, hogy mindegyik sor úgy kezdődik hogy keycode, s utána van egy szám, na ez az amit a billentyűzet küld a gépnek amikor lenyomjuk a gombot. Mondjuk még ez is csak elnagyolt fogalmazás, mert vannak trükkös progik amikkel még azt is külön lehet vizsgálni, a billentyű lenyomva van-e vagy már fel is engedték, stb… de ebbe most ne menjünk bele.

Na most látható, hogy minden keycodehoz pontosan 1 darab sor tartozik, amikben azonban változó számú paraméter szerepel. A paramétereket egymástól mindig szigorúan szóköz választja el, azaz olyan paraméter nincs, ami szóközt is tartalmazhatna. A paraméter vagy egy általunk jólismert karakter, vagy egyetlen számjegy, vagy valami fura név.

Egy sorban az egyenlőségjel után legfeljebb 8 különböző paraméter szerepelhet, többnyire azonban ennél jóval kevesebb van. Gyakori, hogy ugyanazon nevű paraméter több helyen is szerepel, akár egy soron belül, akár több sorban is itt-ott.

Amint mondtam, maximum 8 mező lehetséges egy sorban, azaz 8 paraméter. Mindegyik mező azt jelenti, ahhoz a billentyűzetkódhoz aminek a soráról épp szó van, milyen konkrét karakterkód rendeltetik, amennyiben a megfelelő billentyűt olyan módosítóbillentyűvel nyomták le, amely módosítóbillentyűt e mező reprezentál. Ezen mezők, pontosabban paraméter-pozíciók a következőket jelentik:

1. mező (ez természetesen a BALOLDALI első mezőt jelenti, azt ami a baloldali egyenlőségjel után közvetlenül van jobboldalt, azaz a mezők balról jobbra számozódnak!): Ide azon karakterkód kerül, mely akkor generáltatik, ha a megfelelő billentyűt bármiféle módosítóbillentyű nélkül, önmagában nyomjuk le.

2. mező: Ide az a kód kerül, ami a SHIFT-tel való lenyomáskor keletkezik.

3. mező: Ide az a kód kerül, ami akkor keletkezik, ha a billentyűt azzal a módosítóbillentyűvel együtt nyomjuk le, aminek a neve az, hogy Mode_switch. Nem hallottál még róla?! Na sebaj, majd kicsit később felhomályosítalak felőle…!

4. mező: Ide az a kód kerül, ami a gombnak a Mode_switch és a SHIFT együttes megnyomásával keletkezik.

5. mező: Az itteni kód akkor keletkezik, ha a gombot az úgynevezett ISO_Level3_Shift nevű módosítóbillentyűvel együtt nyomjuk meg. (De szép neve van, egyem a zuzáját annak a perverznek aki ezt elnevezte…)

6. mező: Az itteni kódot az ISO_Level3_Shift és a SHIFT együttes megnyomásával csiholhatjuk ki a billcsinkből.

Sajnos, a hetedik és nyolcadik mező kódjára nem tudtam rájönni, hogy az hogyan keletkezik. Gyötörtem a gépet órákon át, és eljutottam oda, hogy bizonyos roppant speciális beállításokkal el tudtam érni, hogy kiadja a NYOLCADIK mező kódját. A hetedikét azonban nem. És a nyolcadikat is csak úgy, hogy emiatt megváltozik az összes korábbi mező elérhetősége, azokat már más módosítóbillentyűkkel lehet ezután elérni. Illetve egy másfajta beállításnál elérhető az első, a második, a hetedik és nyolcadik mező kódja, de a közbeeső 3,4,5,6 mezőké nem. Fasza…

Szóval, úgy döntöttem, megelégszem az első 6 mezővel, ez is jó sok variáció. Megjegyezném, e nem teljes eredmény nem okvetlenül azt jelenti hogy én vagyok az idióta, ugyanis ha valamit nem értettem nagyon félre, hivatalosan csak AZ ELSŐ 4 MEZŐ kódjának elérhetősége garantált minden hardweren illetve implementációban! Általában azért biztosított az ötödik és hatodik mező is, ezért is van az, hogy ha belenézel valami „gyári” xmodmap fájlba, akkor abban a második 2 mező gyakorlatilag az első két mező ismétlése, mert hátha az ökör felhasználó összecseréli a shiftet a másik módosítóbillentyűvel. A ritkábban használt többi karaktert meg az ötödik és hatodik oszlopba rakják, mert szinte biztos hogy az is létezik majd az adott hardware- és szoftverkörnyezetben. Ez azonban sajnos tényleg csak majdnem mindig van így, és nagy szívás lehet belőle, hogy egyes esetekben nem tudjuk kicsiholni a gépből az oda eldugott hosszú í betűt mondjuk… (amit szokásosan az AltGr-J alá rejtenek).

A hetedik és nyolcadik oszlop azonban már tényleg abszolút semennyire sem garantált. Arra jobb ha nem számítunk, kb olyan mintha nem is lenne.

Szóval, elégedjünk meg az első hattal. Látjuk, hogy itt három titokzatos billentyűt kell meghatároznunk, ezek a SHIFT, az ISO_Level3_Shift és a Mode_shift.

Na most ezek meghatározása az utóbbi kettő esetén úgy megy, hogy e fura neveket beírjuk a táblázatba valahová, olyan keycode sorba, amihez hozzá szeretnénk rendelni. Egyszerre több helyre is beírhatjuk őket, ezesetben többféleképp is elérhetjük az adott funkciót. A SHIFT esetében ez kissé bonyolultabb, annyiból, hogy abból nincs olyan hogy SHIFT, ezt csak én nevezem így, tehát nem azt kell beírni hogy SHIFT. Hanem ebből elvileg lehet kettőfajta is, melyek a Shift_L és Shift_R nevekre hallgatnak. Nem véletlenül, mert ezek szokásosan a baloldali illetve jobboldali Shift feliratú gombokhoz vannak rendelve. De te természetesen változtathatsz ezen, ha akarod.

Fontos tisztázni, hogy miként derítheted ki, billentyűzeted melyik gombjához miféle keycode tartozik! Ehhez neked az xbindkeys nevű progira van szükséged. Ezt el kell indítsd parancssorból, így:

xbindkeys -k

erre megjelenik egy fehér ablakocska, ekkor nyomd meg a téged érdeklő gombot, mire efféle üzenetet ír ki neked:

Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"NoCommand"
    m:0x2000 + c:108
    Mode_switch

A fenti üzenetet a jobboldali Alt gomb, más néven AltGr megnyomása után kaptam. Ebből téged a c:108 rész kell érdekeljen, ez jelenti azt, hogy e gombhoz tartozó mezőket a

keycode 108 =

kezdetű sorban kell meghatároznod.

E gombból úgy lesz egy Mode_switch nevű módosítóbillentyű, hogy a megfelelő keycode sorba beírjuk azt, hogy Mode_switch, legalábbis a legelső mezőbe okvetlenül. Oda muszáj. Őszinténszólva nem vagyok biztos benne, van-e bármi jelentősége annak, ha a többi mezőkbe is beírjuk; fene se tudja mit csinál a rendszer, hogyan értelmezi azt, ha egy módosítóbillentyűt más módosítóbillentyűvel együtt nyomunk le! A legtisztább ha vagy csak a legelső mezőbe írjuk bele, vagy mindegyikbe. Fontos tudni, hogy nem kötelező kitölteni a sor mind a nyolc mezőjét, a vége felé levőkből bárhányat el lehet hagyni. E téren hogy kifejezetten épp egy módosítóbillentyűt beírjunk-e egynél több mezőbe, bevallom nem merem magamat nagyon okosnak és az isteni bölcsesség tudorának feltüntetni, mert napok óta ezzel a billentyűkérdéssel kísérletezem, és olyan észtvesztő, meglepő, hülye logikátlanságokat tapasztaltam e téren a drága Xorg részéről, hogy bármiféle aljasságot is habozás nélkül elhiszek róla ezek után, az első szóra. Azaz, tartok tőle hogy e kérdés meglehetősen hardware- és implementációfüggő. (Erre való utalásokkal bőven találkoztam mindenféle leírásokban is amúgy). Ezalatt azt értem, hogy már maga az a tény is számít, egyrészt miféle gyártótól van a billentyűzeted, aztán az, melyik verziójú xorgot használod, sőt az is, hogy a linuxod, vagy legalábbis az X indulásakor annak xorg.conf fájljában – már ha van neki olyan egyáltalán az adott disztróban – mit mondasz neki, milyen típusú a billentyűzeted eredetileg, pld pc104, vagy ha épp hu akkor hány gombos, meg miféle „variant”, stb. Eszméletlen kavarások lehetségesek e dolgokból. Én tehát leírom hogy magam hogyan csináltam hogy nekem jó legyen, közreadom a megfelelő fájlokat is, de ne végy mérget rá hogy ez nálad istenbizony tutira jó lesz, lehet hogy kell majd vele kísérletezned. Én magam e leírást annak alapján készítettem, amit egy Logitech K400 típusú wireless billentyűzettel kísérleteztem ki.

Miután ezzel a Mode_switch-cel megvagyunk, hasonlóképp meg kell határoznunk, melyik gomb legyen az ISO_Level3_Shift módosítóbillentyű, valamint a Shift_L és Shift_R. Utóbbi kettőből bármelyiket el is hagyhatjuk, ha úgy döntünk, nekünk elég egyetlen shift gomb is.

Illik hogy meghatározzuk azt a két gombot is, melyek neve Control_L és Control_R. (Ezek ugye azok amik a billentyűzeteden általában Ctrl névvel vannak jelölve).

Na most, a táblázatban megadott mindenféle nevekből csoportokat képezhetünk, azaz egyes szimbólumoknak adhatunk közös neveket! Ez úgy megy, hogy ha én parancssorban kiadom az
xmodmap
nevű parancsot, akkor ezt írja ki nekem:

xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32)
lock
control     Control_L (0x25)
mod1        Alt_L (0x40),  Alt_L (0xcc)
mod2        Hyper_L (0x4d),  Hyper_L (0xb4),  Hyper_L (0xcf)
mod3        Super_R (0x3e),  Super_R (0x86)
mod4        Super_L (0x85),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x42),  ISO_Level3_Shift (0x5c)

E fenti kis lista első oszlopa felsorolja a rendszeremben használatos azon szimbólumokat, melyek úgynevezett „módosítóbillentyűk”-nek vannak tekintve, s utánuk fel van tüntetve, e szimbólumok mely konkrét, a keycode-sorokat tartalmazó táblázatban szereplő karakterkódokat jelentik. Például látható, hogy nálam van olyan módosítóbillentyű, melynek az a neve hogy „control”, s ehhez tartozik egy olyan kód melynek neve a keycode-táblázatban Control_L, és ott van zárójelben hogy ennek értéke (0x25). Ez egy hexadecimális szám, értéke decimálisan 2*16+5, azaz 32+5, azaz 37, tehát e Control_L billentyű a táblázat 37-es sorában lett meghatározva, az a gomb fogja ezt a controlkodást művelni, aminek a billentyűkódja 37.

Itt most csak ezt az egy billentyűt foglaltam bele abba a csoportba, aminek a neve az hogy „control”. Megtehettem volna hogy más billentyűt is kinevezek controlnak, de később ismertetendő okokból nekem elég egyetlen. Vannak más csoportok is, például olyan nevekkel hogy shift, lock, mod1, mod2, mod3, mod4, mod5. Ennél több sajnos nem lehetséges. És e csoportnevek is rögzítettek. Próbáltam trükközni, és definiálni mod6 nevű csoportot, de a rendszer hevesen tiltakozott azon nyomban, hogy mit képzelek én, nem úgy van ám az!

Na most ha már megvan a magunk xmodmapos táblázata, rendesen kitöltve a keycode kezdetű sorokat mindazzal a sok roppant okossággal amit beleálmodtunk, akkor jöhet e csoportok meghatározása, erre kell nekünk egy kis szkript. Legyen a neve mondjuk stílszerűen „modkeys”, és a tartalma az esetemben ez:

#!/bin/bash
xmodmap -e 'clear shift'
xmodmap -e 'clear Lock'
xmodmap -e 'clear control'
xmodmap -e 'clear mod1'
xmodmap -e 'clear mod2'
xmodmap -e 'clear mod3'
xmodmap -e 'clear mod4'
xmodmap -e 'clear mod5'
xmodmap -e 'add shift = Shift_L'
xmodmap -e 'add control = Control_L'
xmodmap -e 'add mod1 = Alt_L'
xmodmap -e 'add mod2 = Hyper_L'
xmodmap -e 'add mod3 = Super_R'
xmodmap -e 'add mod4 = Super_L'
xmodmap -e 'add mod5 = ISO_Level3_Shift'

Ez a következőt csinálja:

A „clear” szöveget tartalmazó sorok törlik a billentyűcsoportok esetlegesen meglevő korábbi definícióit. Majd utána az „add”-ot tartalmazó sorokban szépen sorra meghatározzuk, hogy mely csoportba mely nevű billentyűk tartozzanak. Minthogy a keycode sorokba a táblázatban ugyanazt a nevet többször is beírhattuk, ezért e fenti szkriptben egy név beírása – mondjuk a Super_L-é – egyszerre több konkrét gombot is belerakhat a megfelelő, jelen esetben a mod4 nevű csoportba.

Hagyományból egyes programok feltételezik, hogy a rendszerben létezik shift és control nevű módosítóbillentyűcsoport, sőt még olyan is hogy mod1, és ezen utóbbi mod1, ez okvetlenül azonos az Alt billentyűkkel.

Szemfüles Olvasóim biztos észrevették eddigre, hogy hiszen eszerint nekem csak egyetlen Shift és egyetlen Ctrl billentyűm van illetve lesz ami működik, miért jó nekem az hogy a többiről lemondok?

Azért, mert kevés a billcsimen a gomb. Nem engedhetem meg a luxust, hogy több fizikailag különböző gomb is ugyanazt a szoftveres funkciót lássa el, ez értelmetlen pazarlás. És tök felesleges is, mert jobbkezes vagyok, emiatt mindig úgy volt nálam hogy örökké csak a bal shiftet és bal ctrl-t használtam. Azaz a jobboldali efféle gomboknak simán definiálhatok más feladatot.

Most tehát ez úgy van nálam, hogy a rendszeremben a következő módosítóbillentyűk élnek:

shift = ez nálam a baloldali shift. Funkciója a szokásos.

control = ez is a baloldali Ctrl gomb, ennek is a megszokott a funkciója.

mod1 = ez a baloldali Alt gomb, ennek is a megszokott a funkciója.

A fenti 3 csoportot ugyanis jobb nem piszkálni, mert a mindenféle programok erősen számítanak rájuk. Itt tehát ezeknél csak annyit tettem, hogy mindegyik csoportból kiszedtem a jobboldali párjukat.

Most jönnek a nyalánkságok! Vannak ugyanis még nálam a következő csoportok:

mod2 = ez a keycode táblázatban a Hyper_L néven szerepel, és e nevet ahhoz a keycodehoz írtam be, melyet a wireless billentyűzetem tetején levő Home nevű gomb produkál, e gombra egy házacska van rajzolva. Ez természetesen nem azonos a megszokott „Home” gombbal, ami van minden billentyűzeten, semmi köze hozzá.

mod3 = Super_R — ez a jobboldali Shift feliratú gombra van mappelve nálam.

mod4 = Super_L — Na ez nálam a bal oldali Windows® gomb hogy egyem a lelkét… utálok ránézni is, szerencsére pár hónappal ezelőtt találtam (méregdrágán...) az Ebayen pingvines matricát rá való méretben, jó tartósat valami alumíniumszerű anyagból... Így most már nem fenyeget a veszély hogy véletlenül leokádom a gépemet ha a pillantásom arra a helyre vetődik. Hiába került sokba, úgy érzem megérte az árát, mert nem óhajtok a Micro$oft cég ingyenes reklámtáblája lenni a billentyűzetem által, pláne ha nem is használom az ő operációs rendszerüket!

mod5 = ISO_Level3_Shift. Na ez van nálam a CapsLock gombhoz hozzárendelve…

Mode_switch = Jobboldali Alt gomb, más néven AltGr.

Bár elvileg létezik olyan nevű csoport is hogy lock, de ahhoz nem rendeltem semmit, utálom ha megnyomok valamit aztán onnantól örökké nagybetűvel ír.

Kérlek gondolkozz most el e kiosztás nagyszerűségén! Tele vagyok jól használható, szabadon bütykölhető módosítóbillentyűkkel. A progik csak a shift, ctrl és alt gombokra számítanak, esetleg nagy ritkán a windowsrapingvinesre. A többit a magam kedve szerint használhatom. De az igazi nagy zsenialitás szerintem nem is ez e kiosztásban, hanem az, ami pedig első pillantásra talán nem is olyan szembeötlő! Ez pedig az, hogy nálam teljesen külön billentyűre került a Mode_switch és az ISO_Level3_Shift !

Ugyanis a legtöbbször az úgy van, hogy amint azt láthatod is szinte bármelyik eredeti xmodmapos fájlon, a harmadik és negyedik mező az elsőnek és másodiknak a megismétlése. Az ezutáni, ötödik és hatodik oszlopban vannak azok a karakterek, amiket szokásosan az AltGR, vagyis a jobboldali Alt lenyomásával érhetsz el. Ez amiatt érdekes és szomorú, mert mint e doksi legelején írtam, ezen ötödik és hatodik oszlop elvileg arra van, hogy ezeket az ISO_Level3_Shift lenyomásával érjük el! Vagyis ez azt jelenti, hogy szokásosan a billentyűkiosztások készítői ezen ISO_Level3_Shift szimbólumot mintegy egybemossák a Mode_switch szimbólummal, gyakorlatilag a Mode_switch látja el az ISO_Level3_Shift feladatkörét. (vagy a franc se tudja, de nem izgatom magamat emiatt. Nyilván számtalan módon elérhetik ennek megtrükközését). A lényeg, hogy ők csak látszatra használnak maguk is 6 oszlopot a táblázatból, gyakorlatilag csak 4 az amit ténylegesen használnak, hiszen az első kettővel azonos a harmadik és negyedik, és hát ez szerintem pocséklás.

Ahhoz hogy ez megváltozzék, kénytelen voltam e két szimbólumot, a Mode_switch-et és az ISO_Level3_Shift-et szigorúan különválasztani. Ennek nyilvánvalóan az a veszélye, hogy ha valami fura hardweren mégsem érhető el az ötödik és hatodik oszlop, akkor ráfaragtam. Ennek esélye azonban csekély, s akkor legfeljebb visszatérek a „szabványos” kiosztáshoz.

Persze hogy örömem ne legyen teljes, a drága X azért megköti a kezemet. (Hiába, Linux alatt sincs kolbászból a kerítés, itt se fenékig tejfel minden... legalábbis ha az embör gyermöke grafikus környezetben (is...) akar dolgozni...) Mert mi is az első logikus ötlet: ugye az, hogy a mod névkezdetű módosítóbillentyűket hagyjuk meg mindenféle extra funkcióra, s legyen egy külön billentyű ISO_Level3_Shift néven, ami majd előállítja nekünk a megfelelő karaktereket! Így eggyel több lehet a módosítóbillentyűnk!

Hát nem. Akármivel is próbálkoztam ennek érdekében, annak vége az lett, hogy a rendszerem a legváratlanabb hülyeségeket produkálta. Még olyat is akár, hogy az xmodmap esetén kiírt táblázatban nem is szerepelt módosítóbillentyűként egy billentyű, de attól még halálnyugodtan úgy működött. (Xorg bug lenne?) Vagy hogy azt gondolta a CapsLock, hogy ő ezentúl nem csak egy ISO_Level3_Shift gomb, de ellátja még a control gombok feladatát is, mert miért is ne. Hiába nem mondok neki ilyesmit, de ő jobban tudja, okosabb nálam. Szerinte az úgy a jó. Szóval ez a fura ISO_Level3_Shift micsoda úgy tűnik csak akkor müxi magát korrektül, ha egyben ki van nevezve valami mod-os módosítóbillentyűnek is.

Na most hogy melyik karaktert hova pakoljuk, mert ugye innen indult ki az egész. Hát kéremalássan, ugye nem véletlen indultam ki a magyar kiosztásból. Többnyire azt használom, de nekem belőle főként csak az ékezetes karakterek kellenek. Szóval az eredeti hu kiosztás az alap, ezt változtatjuk meg. Mégpedig a következőképp:

Marad minden betű a helyén ami az első és második mezőben szerepel a keycode sorokban. Ez azt jelenti hogy amit simán vagy shiftelve nyomunk le, nem változik, így ugyanúgy érhetjük el az összes kis- és nagybetűt. A J betű sorába, ami a keycode 44 sor, oda a harmadik mezőbe írjuk be hogy iacute, a negyedikbe meg hogy Iacute, különben nem lesz hosszú í és Í betűnk, ahol megszoktuk. Ne feledjük ugyanis hogy az AltGr most nem az ötödik és hatodik, hanem a harmadik és negyedik oszlopokért felelős! Célszerű ezen iacute és Iacute szavakat beírni az I betű harmadik és negyedik mezejébe is. A számjegyeket is ugyanúgy érhetjük el, és azon karaktereket is, melyek a magyar kiosztás szerint a számjegyek shiftelt megnyomására jelennek meg, s amik persze tök mások mint amik egy angol billcsi esetén e helyre fel vannak rajzolva. De ezt célszerű így hagyni, mert hátha megszoktuk ezek helyét már az eredeti magyar kiosztáson.

Na most jön a nagy okosság! Az ötödik és hatodik oszlopot ugye az ISO_Level3_Shift segítségével érhetjük el, az ötödiket e gomb, a hatodikat meg e gomb plusz a shift lenyomásával. Ezen ISO_Level3_Shift billentyű pedig jelen esetben nem más mint a CapsLock. Abszolút jól kézreáll, pláne egy jobbkezes embernek, aki a bal kezét használja a módosítóbillentyűk számára, s a jobbal gépel főleg. Én tehát azt tettem, hogy a megfelelő gombok soránál az ötödik mezőbe felvettem sorra azokat a karaktereket amik az angol billentyűzeten azon a gombon szerepelnek (a betűket nem, tehát az a-z karaktereket nem, mert minek), a hatodik oszlopba meg azokat, amik az angol billentyűzeten szintén e gombon szerepelnek de felül, amit ott tehát shifttel lehet elérni! Ez azt jelenti, hogy ha látom a billentyűzetemen (ami angol) hogy valami speciális karakter hova van rajzolva, azt simám el tudom érni, úgy, hogy ha alulra van rajzolva akkor a CapsLockkal nyomom meg, ha pedig felülre van rajzolva, akkor a Shift+CapsLockkal, s e kombináció könnyen lenyomható, akár még egyetlen ujjal is, mert közvetlenül egymás alatt van a CapsLock és a baloldali Shift. Legalábbis nálam a LenovoThinkPad T530-as laptop esetében, meg a Logitech K400-as wireless billentyűzeten. Ez messze sokkal könnyebb, mint mondjuk programírás közben váltogatni a billentyűzetkiosztást, vagy ha valami levelet írunk magyarul, akkor közben emlékezni kell rá hogy merre is van a kérdőjel vagy a felkiáltójel, vagy más akármi, mert csak abban az egyben lehetünk biztosak, hogy tutira nem ott van ahova fel van rajzolva (ha nem magyar a billentyűzetünk). Így most garantáltan minden speciális jel ott van, ahova fel van rajzolva, épp csak ezeket a CapsLock vagy a Shift + Caps­Lock segítségével érhetjük el.

Megjegyzendő, hogy legalább alul a pont és vessző karakterek ugyanott vannak az angol és magyar kiosztáson is egyaránt, így azokkal nincs gond.

Minthogy a számjegyek fölötti speckó jelek is „felülre” vannak rajzolva ugyebár, ezért ezeket is logikusan a Shift+CapsLockkal érhetjük el, be is vannak téve e helyre a táblázatba mert tiszteljük a logikát, de ugyanakkor belevettem ugyanezeket az ötödik oszlopba is, hogy shift nélkül, sima CapsLockkal is elérhetőek legyenek. Nem sok értelmét láttam ugyanis annak, hogy a sima CapsLockos nyomkodás ezen gombok esetében a számjegyeket eredményezze, mert azok oly gyakoriak, hogy azokat minden épeszű ember úgyis mindenféle módosítóbillentyű lenyomása nélkül akarja majd beütni, s így a számok fölötti jelekhez nem kell a shiftet is nyomkodni, elég egyszerűen magát a CapsLockot. E szimbólumok úgyis gyakoriak nagyon a programozásban.

Na most az eképp elkészített táblázatot mentsük el a $HOME könyvtárunkba .myxmodmap_hu néven, s készítsünk egy megfelelő .xinitrc fájlt, amiben szerepelnek a következő sorok:

setxkbmap hu
xmodmap $HOME/.myxmodmap_hu
modkeys
Keymap --

A setxkbmap hu sor amiatt kell, mert ha ezt nem adjuk ki, akkor általam ismeretlen okoknál fogva (valószínűleg valami olyasmi amit a legelején taglaltam, hogy az X nem tudja miféle hardwerre számítson, de ez csak tipp a részemről) a kiosztásunk hiányosan fog működni, azaz nem funkcionál majd jól a CapsLock mint mod5.

Az xmodmap-os sor tölti be a táblázatunkat, a modkeys pedig az a szkript amit korábban már fentebb közöltem, ami beállítja a megfelelő módosítóbillentyűket.

Hátravan még e titokzatos sor:

Keymap –

Nos ez egy kis szkript a részemről, aminek tartalma a következő:

#!/bin/bash
KEY="hu"
if [[ $1 == "--" ]] ; then
cp /_/P/Szkriptjeim/-/mysettings/aktkeymap.txt /Mount/RAM
exit
fi
if [[ $1 != "" ]] ; then
KEY=$1
fi
echo $KEY > /Mount/RAM/aktkeymap.txt
setxkbmap hu
xmodmap $HOME/.myxmodmap_$KEY
modkeys
exit

Mit is csinál ez? Elárulom, a benne megemlített aktkeymap.txt fájl tartalma mindössze ennyi:

hu

Nos e szkript ha a -- paraméterrel hívjuk meg, e fájlt átmásolja egy speckó könyvtárba, ami történetesen a ramdiszken található, de ez úgy különben nem igazán fontos. A lényeg hogy ha nem e -- paraméterrel hívjuk meg, akkor a paraméterét is beleírja e fájlba, és beállítja a $HOME könyvtárunk azon .myxmodmap fájljára a billentyűzetkiosztást, aminek a neve végén a kapott paraméter szerepel!
Ez amiatt lényeges, mert eddig elsunnyogtam azt a döntő, lényegi kérdést, mire is használom a jobboldali Ctrl billentyűmet. Nos, ezt kivettem a módosítóbillentyűk köréből, s elneveztem úgy, hogy F22. Ha ugyanis nem tudnád, azok az általad kívánt héber, arab, vietnámi, orosz vagy akármilyen más karakterek amiket be szeretnél tenni a billentyűzetkiosztásodba, azok milyen névre hallgatnak, mit írjál bele a magad xmodmap fájljába rájuk hivatkozandó, akkor keresd meg a rendszeredben a keysymdef.h fájlt, abban megtalálod. (Az Xproto vagy valami hasonló nevű progi-csomag része, ami pedig az X szerver része). Épp csak ott mindegyiknek a neve úgy kezdődik, hogy XK_, na neked a név ez után következő része kell.

Na és hát látom a keysymdef.h fájlban hogy elvileg van egy rakás további F-es funkcióbillentyű-szimbólum, nemcsak 12-ig mennek azok! Felhasználtam az F22 nevűt, s ezt tettem a jobboldali Ctrl helyére. Nekem eredetileg úgyis csak F12-ig mennek a funkcióbillentyűk, s nem is találkoztam olyan billentyűzettel, amin ennél több lett volna. Most van F22 is már nekem. Eképp e billentyűre hivatkozhatok az xbindkeys progival, s meg is tettem ezt. A magam $HOME/.xbindkeysrc fájljában szerepel e rész:

# saját hu keymap
"Keymap hu"
F22

# saját eo keymap
"Keymap eo"
Control + F22

Ez azt jelenti, hogy ha simán megnyomom ezen F22-nek kinevezett jobboldali Ctrl gombot, akkor átvált a $HOME/.myxmodmap_hu kiosztásra. Ha a (baloldali)Ctrl-lel együtt nyomom meg, akkor a $HOME/.myxmodmap_eo nevű kiosztásra vált át. Hasonlóképp még sok más kiosztást is definiálhatnék. Lehetne olyan amit rádefiniálok a következő kombinációkra:

mod1 + F22
mod2 + F22
mod3 + F22

stb, sőt ha telepítjük az xchainkeys progit is, na akkor aztán a lehetőségeink végtelenek…

Eképp tehát lehet több saját billentyűkiosztásunk is.

Az eo nevűt arra használom, hogy benne szerepelnek az eszperantó nyelv úgynevezett „kalapos” betűi is, melyeket az AltGr illetve Shift+AltGr segítségével érhetek el.

Mindez valójában csak amiatt történt hogy legyen mivel kipróbálnom, működik-e az elképzelésem a saját billentyűkiosztások közötti váltásról, sok értelme nincs, mert ugyanezen betűk simán elférnének ugyanezen helyeken a magyar (azaz hu-nak nevezett) kiosztásban is. Azonban annak aki sokat használ egyszerre több olyan nyelvet is, melyekben nagyon sok a magyarétól eltérő karakter szerepel, pld orosz, görög, héber, koreai, japán, arab, stb, annak számára e lehetőség kincset ér.

Na és amikor a Keymap szkript átvált a megfelelő xmodmap fájlra, eltárolja a beállított keymap nevének kódját. Ez arra jó, hogy valami okossággal ezt ki lehet jelezni folyamatosan a képernyő statusbarjára, hogy tudjuk mivel dolgozunk épp, ne kelljen találgatnunk. De ez egy másik cikk témája lesz majd.

Végezetül egy jó kis trükk: Nemcsak a speciális nevekkel adhatjuk meg a karaktereinket az xmodmap táblázatban is, hanem az UNICODE kódjukkal közvetlenül is, efféleképp:

keycode  27 = r R U003C1 U003A1

Ezek után azt hiszem semmiféle akadálya nem lehet annak, hogy mindenki megcsinálja a maga számára az ő szívének kedves billentyűzetkiosztást!
 

Milyen hasonló billentyűzetet?

Sziasztok!

Van egy (vagyis 2) Logitech K360-as billentyűzetem. Sokan fikázzák, én mindenesetre nagyon szeretem.

Sajnos az egyik tönkrevágódott. Egyszerűen nem veszi a shift-et meg a h betűt. (kipucoltam, a gombok meg a membrán oké, az elektronikában van valami vagy a fóliában)

Gondoltam, vehetnék valami másikat, viszont fingom nincs mi lenne a jó döntés.

Jó lenne ha valami hasonló lenne a K360-hoz. Jó lenne akkor már háttérvilágítás, nem csak a háttérnek, hanem a betűkre is. 

Fontos, hogy legyen numpad is rajta.

Ne legyen orbitálisan nagy.  Jó lenne ha beleférne a szélessége 40-42cm-be, de ebből is tudok engedni.

Ha vezeték nélküli, az nagyon jó, de a háttérvilágítás miatt esetleg ez is elengedhető.

Ja, tudom lúzer vagyok, de magyar kiosztású kellene. Logitechnél több fasza is lenne, de mind angol... (pk K800 vagy mx keys, ezekben amúgy van rendes háttérvilágítás a wireless ellenére is)

 

Köszi előre is a segítő kommenteket!

USB(2) switch: 2 host, 1 device, remote kapcsolhatosag (via USB, RS232, GPIO, barmi)

Sziasztok!

Egy targybeli eszkozt kersnek, amit zaros hataridon belul (szerdaig) be is tudnek szerezni ha van erre esely. Barkinek barmi otlet? Azert tettem ide ebbe a forum-temaba mert ez elegge hasonlit a KVM switchekhez, de ugye csak egy darab USB2-es kapcsolgatasra van szukseg. 

Amiket lattam igy hirtelen az interwebekben az olyan hogy csak mechanikusan kapcsolhato a helyszinen. Ipari celokra is talaltunk parat, de az csak ilyen Horizon 2020-as atfutassal oldhato meg (lasd: 30 munkanapos szallitas).

Elore is thx!

A

Létezik olyan billentyűzet, amelynél layout váltáskor megjelennek a karakterek a fizikai billentyűzeten?

Tehát arra gondolok, hogy az egyes billentyűkre nincsenek felfestve vagy az angol, vagy a magyar, vagy valamilyen más nyelv ékezetes karakterei, hanem Alt-Shift hatására mindig azok a karaktere jelennének meg a billentyűkön amire épp váltok. Van ilyen? Vagy nincs igény ilyesmire?

BLE keyboard csatlakozás

Egy nRF51822 alapú BLE-s billentyűzetet szeretnék építeni, de eddig nem sikerült még működésre bírnom Linux alatt.

A kontroller kódja itt található, egy elvileg működő példából lett kiindulva:
https://github.com/martonmiklos/ble_keyboard_fw

gattool-al csak akkor sikerül csatlakoznom, ha random addressinget használok:


mm@lapos:~$ gatttool -t random -b E8:83:76:AE:34:7D -I
[E8:83:76:AE:34:7D][LE]> connect
Attempting to connect to E8:83:76:AE:34:7D
Connection successful
[E8:83:76:AE:34:7D][LE]> info
Error: info: command not found
[E8:83:76:AE:34:7D][LE]>
char-desc char-read-uuid char-write-req connect exit included primary sec-level
char-read-hnd char-write-cmd characteristics disconnect help mtu quit
[E8:83:76:AE:34:7D][LE]> char
char-desc char-read-hnd char-read-uuid char-write-cmd char-write-req characteristics
[E8:83:76:AE:34:7D][LE]> characteristics
handle: 0x0002, char properties: 0x0a, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, char properties: 0x02, char value handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x000a, char properties: 0x02, char value handle: 0x000b, uuid: 00002a29-0000-1000-8000-00805f9b34fb
handle: 0x000c, char properties: 0x02, char value handle: 0x000d, uuid: 00002a50-0000-1000-8000-00805f9b34fb
handle: 0x000f, char properties: 0x12, char value handle: 0x0010, uuid: 00002a19-0000-1000-8000-00805f9b34fb
[E8:83:76:AE:34:7D][LE]> disconnect

Ez alapján akarnám a billentyűzetet élesíteni azonban nem sikerül:
https://wiki.archlinux.org/index.php/Bluetooth_keyboard#Pairing_process


mm@lapos:~$ bluetoothctl
[NEW] Controller 00:15:83:D1:A9:E6 BT 4.0 [default]
[NEW] Device 44:D3:A9:5D:02:89 44-D3-A9-5D-02-89
[NEW] Device 73:EA:BF:EA:52:2C 73-EA-BF-EA-52-2C
[NEW] Device A0:6F:AA:9E:3E:03 LG SJ5(03)
[NEW] Device E8:83:76:AE:34:7D MM-keyboard
[NEW] Device FD:04:9E:1A:C6:AE MM Plane
[NEW] Controller D0:DF:9A:3F:6F:4C Internal
[NEW] Device 94:FD:2E:02:E8:06 Jolla C
[NEW] Device 50:56:A8:00:18:42 Jolla
Agent registered
[bluetooth]#
advertise default-agent exit menu power scan system-alias version
agent devices help pair quit select trust
block disconnect info pairable remove set-alias unblock
connect discoverable list paired-devices reset-alias show untrust
[bluetooth]# menu
Missing name argument
[bluetooth]# agent KeyboardOnly
Agent is already registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# pairable on
Changing pairable on succeeded
[bluetooth]# pair E8:83:76:AE:34:7D
Attempting to pair with E8:83:76:AE:34:7D
[bluetooth]# trust E8:83:76:AE:34:7D
Changing E8:83:76:AE:34:7D trust succeeded
[bluetooth]# connet E8:83:76:AE:34:7D
Invalid command
[bluetooth]# connect E8:83:76:AE:34:7D
Attempting to connect to E8:83:76:AE:34:7D
[CHG] Device E8:83:76:AE:34:7D Connected: yes
[CHG] Device E8:83:76:AE:34:7D Connected: no
Failed to pair: org.bluez.Error.AuthenticationCanceled
Connection successful
[CHG] Device E8:83:76:AE:34:7D Connected: yes
[CHG] Device E8:83:76:AE:34:7D Connected: no
[CHG] Device E8:83:76:AE:34:7D Paired: yes
[DEL] Device 73:EA:BF:EA:52:2C 73-EA-BF-EA-52-2C
[DEL] Device 44:D3:A9:5D:02:89 44-D3-A9-5D-02-89

Mint látható a kapcsolat létrejön, majd megszakad.

A folyamat alatt a btmon ezt mutatja:

< HCI Command: LE Create Connection (0x08|0x000d) plen 25 #10 [hci1] 7.822253
Scan interval: 60.000 msec (0x0060)
Scan window: 60.000 msec (0x0060)
Filter policy: White list is not used (0x00)
Peer address type: Random (0x01)
Peer address: E8:83:76:AE:34:7D (Static)
Own address type: Public (0x00)
Min connection interval: 7.50 msec (0x0006)
Max connection interval: 15.00 msec (0x000c)
Connection latency: 20 (0x0014)
Supervision timeout: 3000 msec (0x012c)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4 #11 [hci1] 7.826173
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 #12 [hci1] 9.865108
LE Connection Complete (0x01)
Status: Success (0x00)
Handle: 39
Role: Master (0x00)
Peer address type: Random (0x01)
Peer address: E8:83:76:AE:34:7D (Static)
Connection interval: 15.00 msec (0x000c)
Connection latency: 20 (0x0014)
Supervision timeout: 3000 msec (0x012c)
Master clock accuracy: 0x00
@ MGMT Event: Device Connected (0x000b) plen 37 {0x0003} [hci1] 9.865224
LE Address: E8:83:76:AE:34:7D (Static)
Flags: 0x00000000
Data length: 24
Appearance: Mouse (0x03c2)
Flags: 0x05
LE Limited Discoverable Mode
BR/EDR Not Supported
16-bit Service UUIDs (complete): 1 entry
Human Interface Device (0x1812)
Name (complete): MM-keyboard
@ MGMT Event: Device Connected (0x000b) plen 37 {0x0002} [hci1] 9.865224
LE Address: E8:83:76:AE:34:7D (Static)
Flags: 0x00000000
Data length: 24
Appearance: Mouse (0x03c2)
Flags: 0x05
LE Limited Discoverable Mode
BR/EDR Not Supported
16-bit Service UUIDs (complete): 1 entry
Human Interface Device (0x1812)
Name (complete): MM-keyboard
@ MGMT Event: Device Connected (0x000b) plen 37 {0x0001} [hci1] 9.865224
LE Address: E8:83:76:AE:34:7D (Static)
Flags: 0x00000000
Data length: 24
Appearance: Mouse (0x03c2)
Flags: 0x05
LE Limited Discoverable Mode
BR/EDR Not Supported
16-bit Service UUIDs (complete): 1 entry
Human Interface Device (0x1812)
Name (complete): MM-keyboard
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2 #13 [hci1] 9.865401
Handle: 39
> HCI Event: Command Status (0x0f) plen 4 #14 [hci1] 9.869026
LE Read Remote Used Features (0x08|0x0016) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 12 #15 [hci1] 10.484014
LE Read Remote Used Features (0x04)
Status: Success (0x00)
Handle: 39
Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
< HCI Command: LE Start Encryption (0x08|0x0019) plen 28 #16 [hci1] 10.484145
Handle: 39
Random number: 0xff9f0b8649b6cf46
Encrypted diversifier: 0x3ffe
Long term key: e085b0c06f0bdfede3bd0238fc181ed4
> HCI Event: Command Status (0x0f) plen 4 #17 [hci1] 10.491077
LE Start Encryption (0x08|0x0019) ncmd 1
Status: Success (0x00)
> HCI Event: Encryption Change (0x08) plen 4 #18 [hci1] 10.544072
Status: PIN or Key Missing (0x06)
Handle: 39
Encryption: Disabled (0x00)
< HCI Command: Disconnect (0x01|0x0006) plen 3 #19 [hci1] 10.544177
Handle: 39
Reason: Authentication Failure (0x05)
> HCI Event: Command Status (0x0f) plen 4 #20 [hci1] 10.546048
Disconnect (0x01|0x0006) ncmd 1
Status: Success (0x00)
> HCI Event: Disconnect Complete (0x05) plen 4 #21 [hci1] 10.560070
Status: Success (0x00)
Handle: 39
Reason: Connection Terminated By Local Host (0x16)
@ MGMT Event: Device Disconnected (0x000c) plen 8 {0x0003} [hci1] 10.560120
LE Address: E8:83:76:AE:34:7D (Static)
Reason: Connection terminated due to authentication failure (0x04)
@ MGMT Event: Device Disconnected (0x000c) plen 8 {0x0002} [hci1] 10.560120
LE Address: E8:83:76:AE:34:7D (Static)
Reason: Connection terminated due to authentication failure (0x04)
@ MGMT Event: Device Disconnected (0x000c) plen 8 {0x0001} [hci1] 10.560120
LE Address: E8:83:76:AE:34:7D (Static)
Reason: Connection terminated due to authentication failure (0x04)

A billentyűzet nem indul újra a folyamat alatt, a BLE stack-et kezelő softdevicetől csak notification-t kapok arról, hogy létrejött majd megszakadt a kapcsolat.

Billentyűzet kerestetik

30 év után a marketingvezérelt piac hatására sikeresen eljutottunk odáig, hogy a használhatóság feláldozva a dizájn oltárán. Nem találok magamnak billentyűzetet, mert minden csilli-villi, csak éppen számomra használhatatlan, de hátha valaki tud ajánlani. Követelmények:
- Hagyományos 105 gombos kiosztás, nem „egymásratolt” blokkok, hogy a Ctrl helyett a balra nyilat nyomogassam. A jobb alsó sarokban a Numpad Enter legyen. (Ezúton is gratulálok a Steelseries Apex 350 tervezőgárdájának, így kell igazán elbaszni egy billentyűzetet!)
- Funkciógombok – nem Fn-nel elérve.
- Teljes vagy félmagas, normál méretű billentyűk, semmi szigetes vagy egyéb notebook-keyboard utánzat.
- Multimédia gombok (lehetőleg Fn nélkül): play/pause, previous/next, volume down/up, mute.
- Legalább 6 makrógomb a bal oldalon, amelyekre felprogramozhatók az F13-F24 billentyűk is (nem érdekel, ha hack, az Az Apex 300-on is sikerült, bár az UI nem támogatja).
- Normális háttérvilágítás, fehérnek örülnék.
- UK, esetleg HU kiosztás (legyen meg az Í helye a bal Shift mellett!).
- Lélektani határ 50e HUF, afölött valamit nagyon tudnia kell.

Régebben Logitech G15-ösöket használtam, most egy Steelseries Apex 300 halt meg, ilyesmiket keresek, ha lehet újonnan.

Lapos Enter

Sziasztok!

Most szeretném lecseréltetni a céges laptopomat egy másikra és a következő problémába futottam bele.Én eddig ilyen típusú billentyűzetet használtam: https://www.laptopszaki.hu/21933-thickbox/701979-211-gyari-uj-magyar-laptop-billentyuzet-11540-21933.jpg

Úgy látom, hogy a jelenleg kapható laptopokon azonban a megszokott Enter gomb helyett egy lapos Enter gomb található, amely felett van az Ű betű és az Í betűt a az Y mellől az Alt Gr mellé tették.

A jobb szemléltetés érdekében belinkelek erről egy képet: https://www.mysoft.hu/photosGallery/HP_250_G7_ezust/hp_250_g7_ezust_s11_original.jpg

Gondolom, hogy nektek már ismerős ez a fajta billentyűzet. Nekem viszont új, mert munkaállomások terén már jó pár éve nem követtem az eseményeket, mert csak szerverekkel foglalkoztam. Néhány hónapja láttam egy ilyen gépet az egyik haveromnál és kipróbáltam, kb. 1 órát használtam és kényelmetlen volt vele dolgozni, mert az Enter helyett sokszor Ű betűt ütöttem és az is zavart, hogy a hosszú Í nem a helyén volt.

Ezért most a laptopom kiválasztása során fontos szempontnak szerettem volna tartani, hogy ne ilyen billentyűzet legyen rajta, hanem a hagyományos, nagy Enteres és a hosszú Í is a megszokott helyén, az Y mellett legyen. Egyszerűen azért, mert 20 éve ilyen billentyűzetet használok és ezt szoktam meg és úgy gondolom, hogy a mindennapi munkám során ez nem lenne mindegy.

Sajnos azonban úgy látom, hogy a jelenleg forgalmazott laptopok közül már _egyik sem_ kapható a régi, hagyományos billentyűzettel. Nem hiszem, hogy egyedül lennék ezzel a problémával. Szerintem biztos, hogy van itt a fórumon közületek olyan, aki már szintén szembesült ezzel. A kérdésem az lenne, hogy mit lehet ilyenkor csinálni? Meg lehet-e szokni az újat? Mennyire nehéz megszokni? Ti meg tudtátok szokni? Hogyan élitek ezt meg? Szeretném, hogy ha írnátok erről.

Köszönöm!

Xbox One kontroller audio kimenet

Miután az egyik játékot sehogy nem bírtam rávenni, hogy használja a jó öreg PS3-as kontrolleremet, és mivel úgy is Windows 10 alatt játszok, gondoltam veszek egy rendes, eredeti Xbox One kontrollert, mert akkor tuti 100% támogatást élvezek és minden szuper lesz!

A kezdeti gond ott volt, hogy bluetooth 2.0-án nem megy wireless, legalább 4.0 kell neki. Ok, majd veszek egy újabb sticket. mert nyilván ezer eszközhöz jó a régi, de az MS éróltetti az újat, akkor legyen...
Addig megy USB kábelen keresztül, amivel nincs is gond, minden szép és jó.... majdnem!

Nagy örömömmel konstatáltam, hogy a kontrolleren van audio ki(-be?) menet.
Gondoltam de fasza lesz, mert akkor akármire kötve játszok vele, nem kell a fülest külön átkötözni.
Ezzel csak egy problémám van:
Miféle jack dugó megy ebbe bele? A leírását nézve 3.5mm 4 pólusú. Tehát sztereó hang, mikrofon és föld.
Sajna a fülesemen külön van jack a mikrofonnak és a hangszóróknak, így gondoltam hegesztek egy adaptert, mert 4 pólusú jackem van itthon és anya aljatom is.
Megcsináltan a kábelt és akartam ép kipróbálni, viszont a csatlakozó az istenért sem ment be végig a kontrollerbe!
A három pólusú simán bemegy.

Néztem egy 2.5mm négyest jacket, de az nyilván lötyög benne :)

Tehát WTF?
Akinek van itt ilyenje, miféle jack megy oda be? :)

Bónusz kérdés:
Megy egyáltalán az audio bluetoothon keresztül? Mert van ahol azt írják nem, van ahol meg azt, hogy megy...

UPDATE:
Vettem egy ilyen átalakítót. Ez már simán bemegy a kontrollerbe. Érdekes módon, amik nekem vannak 4 pines jackjeim, azok nem mennek bele. Bár szemmel láthatóan ugyanolyan a kettő, hajszálnyi eltérés mégis lehet, ami pont elég hogy ne férjen be teljesen.
Noh mindegy, így már elvileg jó. Gyakorlatilag mégsem, mert sehol nem látom a kontrollert mint lehetséges hangkimenet.
Próbáltam uninstallálni a kontroller driverét, de azután sem jelent meg a hang kimeneteknél.
Szóval most megint ott vagyok ahol a part szakad...

Na ezért szeretek a jó kis Commodore 64-en játszani! betöltöm a játékot, rádugom a joyt és megy bazdmeg! Ezzel meg hetek óta szívok és már nem is érdekel az a játék ami miatt vettem a kontrollert :S

"AT" (DIN) csati-ból USB

Hali,

Látott már / csinált már valaki működő "régi AT-s" (DIN-es) billentyűzetből PS/2-est?

Ahogy látom két lehetőség van:
- állítólag létezik DIN > PS/2 átalakító
- le kell kötni az AT-s billentyűzetről a kábelt és át kell rá szerelni egy PS/2-est (előtte kimérni, hogy melyik láb micsoda).

Köszi.