-
-
Notifications
You must be signed in to change notification settings - Fork 40.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bepo layer is qwerty not bepo. #3079
Comments
What is your OS's actual keyboard layout? If it's not qwerty, that may be why. Also, if you used this: https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_extras/keymap_bepo.h Also, have you checkout out this: https://github.com/qmk/qmk_firmware/blob/master/layouts/community/ergodox/bepo/keymap.c It may be closer to what you're looking for, actually. |
I'm on linux and my keyboard is set to qwerty. I Also use a kinesis, so that is what I'm used to doing. I used the first one. I've always suspected that was the wrong way around. The second one looks like what I need. I'll give that a shot. It looks more like what I would have expected. Thanks!! |
After looking at the code and comments it seems that a full bepo keyboard isn't really possible on a qwerty mapping. Even the Azerty mapping seems lacking. Would it be better to go with unicode so that all the characters are available ? |
I realize this has as much to do with the keyboard on the OS as anything. It's like when I switch my laptop to dvorak, then forget and try to type with my dvorak kenisis which expects an en-US os keyboard. It seems like that in order to get a real functioning bepo ergodox it needs to map to a bépo keyboard or at least an extended Latin keyboard that has all the letters I need. But then, that makes having a dvorak keyboard difficult because the normal keys and shifted keys are different. Is there a way in qmk to define what a key should do with each modifier? At least, normal, shifted, alt gre/r-alt, ctrl? Or maybe it is better to do a software keyboard, in which case a qwerty ergodox layer would be the right thing... I think. |
Yup. In fact, I've seen this a lot, actually. There isn't a good solution for ... well non-US implementations. And that has more to do with standardization, than anything else. Because most of the non-latin characters don't have their own scancode, and rely on the OS for management. Which makes KB firmware that much more difficult.
Maybe. but even that is a mine field, as each OS manages unicode different. And Windows handles it pretty poorly.
Yes. https://docs.qmk.fm/#/feature_advanced_keycodes?id=modifier-keys RALT(kc) if what you want for AltGr.
Though, I've seen a few people that well ... do this, and then have a "software layer", so that if the OS is handling this. .. they have a layer they can fall back to... rather than a nightmare. This is probably going to be a good idea for you, as well. |
Ok, so if I understand all of this,... I should probably have at least one base layer that just works with us-en, ie. qwerty. I have that now. Then, using an os layer like fr-bépo, for a bépo layer and maybe a dvorak layer. I can see how that might get messy for the other layers as well. I know about the modifiers, but say I had a key, like in bépo that I want ^ un shifted, 5 shifted, and something else for altgre all on the same key. Altgre is frequently the trigger for a modifier of some sort. So altgre-, is the cedilla mod... I could do Unicode, as I only ever do Linux. The advantage there is that I'm bypassing the key codes and can do whatever I want..It is a mess. It's been a while since I've had to mess with the xkbd stuff. It's how I made my first dvorak layout over 20 years ago. But it does seem a combination is the best bet. Envoyé depuis mon mobile Huawei-------- Message original --------Objet : Re: [qmk/qmk_firmware] bepo layer is qwerty not bepo. (#3079)De : Drashna Jaelre À : qmk/qmk_firmware Cc : Eric Gebhart ,Author
I realize this has as much to do with the keyboard on the OS as anything
Yup. In fact, I've seen this a lot, actually. There isn't a good solution for ... well non-US implementations. And that has more to do with standardization, than anything else. Because most of the non-latin characters don't have their own scancode, and rely on the OS for management. Which makes KB firmware that much more difficult.
Would it be better to go with unicode so that all the characters are available ?
Maybe. but even that is a mine field, as each OS manages unicode different. And Windows handles it pretty poorly.
Is there a way in qmk to define what a key should do with each modifier? At least, normal, shifted, alt gre/r-alt, ctrl?
Yes. https://docs.qmk.fm/#/feature_advanced_keycodes?id=modifier-keys
RALT(kc) if what you want for AltGr.
Or maybe it is better to do a software keyboard, in which case a qwerty ergodox layer would be the right thing... I think.
I think this is going to be the best bet, no matter what you do.
Though, I've seen a few people that well ... do this, and then have a "software layer", so that if the OS is handling this. .. they have a layer they can fall back to... rather than a nightmare.
This is probably going to be a good idea for you, as well.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ViewAction","target":"https://github.com/qmk/qmk_firmware/issues/3079#issuecomment-393197062","url":"https://github.com/qmk/qmk_firmware/issues/3079#issuecomment-393197062","name":"View Issue"},"description":"View this Issue on GitHub","publisher":{"@type":"Organization","name":"GitHub","url":"https://github.com"}}
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/qmk/qmk_firmware","title":"qmk/qmk_firmware","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/qmk/qmk_firmware"}},"updates":{"snippets":[{"icon":"PERSON","message":"@drashna in #3079: \u003e I realize this has as much to do with the keyboard on the OS as anything\r\n\r\nYup. In fact, I've seen this a lot, actually. There isn't a good solution for ... well non-US implementations. And that has more to do with standardization, than anything else. Because most of the non-latin characters don't have their own scancode, and rely on the OS for management. Which makes KB firmware that much more difficult. \r\n\r\n\u003eWould it be better to go with unicode so that all the characters are available ?\r\n\r\nMaybe. but even that is a mine field, as each OS manages unicode different. And Windows handles it pretty poorly. \r\n\r\n\u003eIs there a way in qmk to define what a key should do with each modifier? At least, normal, shifted, alt gre/r-alt, ctrl?\r\n\r\nYes. https://docs.qmk.fm/#/feature_advanced_keycodes?id=modifier-keys\r\n\r\nRALT(kc) if what you want for AltGr. \r\n\r\n\u003eOr maybe it is better to do a software keyboard, in which case a qwerty ergodox layer would be the right thing... I think.\r\nI think this is going to be the best bet, no matter what you do.\r\n\r\nThough, I've seen a few people that well ... do this, and then have a \"software layer\", so that if the OS is handling this. .. they have a layer they can fall back to... rather than a nightmare. \r\n\r\nThis is probably going to be a good idea for you, as well."}],"action":{"name":"View Issue","url":"#3079 (comment)"}}}
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "37567f93-e2a7-4e2a-ad37-a9160fc62647",
"title": "Re: [qmk/qmk_firmware] bepo layer is qwerty not bepo. (#3079)",
"sections": [
{
"text": "",
"activityTitle": "**Drashna Jaelre**",
"activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png",
"activitySubtitle": "@drashna",
"facts": [
]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"IssueComment\",\n\"repositoryFullName\": \"qmk/qmk_firmware\",\n\"issueId\": 3079,\n\"IssueComment\": \"{{IssueComment.value}}\"\n}"
}
]
},
{
"name": "Close issue",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"IssueClose\",\n\"repositoryFullName\": \"qmk/qmk_firmware\",\n\"issueId\": 3079\n}"
},
{
"targets": [
{
"os": "default",
"uri": "#3079 (comment)"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"MuteNotification\",\n\"threadId\": 340269160\n}"
}
],
"themeColor": "26292E"
}
|
sorry about the inclusions in that last post, I did it from my phone... So I've confirmed that the bepo layer I have works with a bepo keyboard on the OS. Of course that completely breaks my dvorak layer. So I've created a dvorak layer based on the bepo keys. That also seems to work. Is this the path you were thinking was the best route ? Now, I want to have a key which selects a different layer depending on if the current default base is on us dvorak or the fr versions dvorak or bepo what is the best way to do that ? The explanation of function_action is a bit vague. It says to use fn_actions and then says it's better not to. It's also unclear to me if the state structure is available or not. I know I can create a tap_dance_fn that receives the state, because I've done that. What I'd like is to have a key call a function with the state so I can look at the default layer and then choose the appropriate layer to invert, toggle, move. This all because I have a dvorak layer for en-us, and dvorak and bepo layers for fr-bepo. So the other layers may or may not need to be in sync with that. Sorry this is out of context for the original issue, which seems to be resolved. The keymap I was using for bepo was intended for use on top of a bepo software layer in the OS and that does indeed work. |
Is there a way to do this? MT(LM(foo, LGUI), kc) |
Yeah, it was the bath that I thought was probably going to be best.
The best way to do this is to set default layers. uint32_t default_layer_state_set_kb(uint32_t state) {
eeconfig_update_default_layer(state);
return state;
} This method has the advantage of the fact that you can just use "DF(x)" in your keymap, and it will handle everything for you. The other option is to use Both accomplish the same thing, but in different ways. For the And no, that's fine, conversation evolve. And this is still relevant to the original issue, IMO. So no problem, at all. |
No. Not without a custom keycode. both only support "basic" keycodes. Eg, codes from this list: |
yea. So I know I have to write my own. It's not clear in the doc about action_fn. Needed or not. It says to use it, then that it's better not to. I'm slowly finding the code underneath. But haven't gotten to the MOD code yet. |
Just out of curiosity, where do you see the action_fn in the docs? Also... yeah, QMK is based on TMK, and a lot of this stuff is left overs from TMK. And "we" haven't cleaned up everything. |
It's in the keymap overview. yea, I found most of what I was looking for in tmk_common. But I still don't have a solid understanding of the code yet. I'm missing the piece that connects the key/action codes and the actual code. On the other hand I think I can can get what I want with the advanced tap dance example. I'd be willing to help out. But I don't know that I know enough yet. I should look through the issues for things with the doc and whatever else I might be able to do. |
So that is just a replacement of the usual default_layer_state_set() in the action_layer.c ? correct ? So I'm just stomping on the original which does nothing but return state... |
@drashna
As an example, here is what actually works for the "1" key.
Any suggestions would be appreciated. |
OK. Never mind. It looks like I'm down to small problems. It seems altgre is not ralt so those characters don't work in bépo or my Dvorak on bépo. There are a few characters that I have no idea how to type if I could |
I seem to have everything working. The bépo layer needs some love. It doesn't fit very well. I'll do a pull request soon. |
awesome! And please do reference this issue in the PR, so others can find it. |
I have submitted pull request #3149 which creates a firmware that handles all of these questions. |
@EricGebhart Should this issue be closed now that the PR has been merged? Are there any remaining issues? |
Yes. This issue has been resolved and is well documented here and in the merge. |
I have an ergodox ez.
I flashed my own firmware over a year ago, but the bepo layer never worked.
I just redid my firmware again today, I had hoped I had figured something out, but no.
I'm using the current version of qmk.
My firmware compiles and works as expected except for my second layer.
I have a dvorak layer at 0 and a bepo layer at 1. I invoke it by changing it to the default layer, ie. DF().
But instead of bepo I get qwerty. I don't have a qwerty layer in my firmware.
I used the bepo keymap.h and mostly copied the bepo keymap into my own.
Looking at the bepo code I dont even see how it can work...
What am I missing ?
The text was updated successfully, but these errors were encountered: