GithubHelp home page GithubHelp logo

launch's Introduction

System76 Launch Configurable Keyboard

The System76 Launch Configurable Keyboard is designed to provide the ultimate user controlled keyboard experience, with open source mechanical and electrical design, open source firmware and associated software, and a large number of user configuration opportunities. It is registered open source hardware with OSHWA UID US001062.

Mechanical Design

Chassis Image

Open Source Chassis

The Launch chassis is licensed CC-BY-SA-4.0 and can be viewed in the chassis folder using FreeCAD.

Milled Aluminum

The chassis is milled from two solid blocks of aluminum and powder coated to provide excellent fit and finish. Each pocket, port, and hole is designed and precisely machined so that swapping switches and plugging in cables is easy and secure for the user.

Detachable Lift Bar

The included lift bar can be magnetically secured to add 15 degrees of angle to your keyboard for ergonomics.

Innovative Layout

The layout is designed to provide a large number of remapping opportunities. The default layout can be viewed here, and the extra keys included can be viewed here.

Swappable Keycaps

The keycaps are PBT material with a dye sublimation legend and XDA profile to provide excellent feel and lifespan. Extras are provided for common replacements and color preference. An included keycap puller can be used to move and replace the keycaps.

Swappable Switches

The switches are mounted in sockets that support any RGB switch with an MX compatible footprint. Examples are the Cherry MX RGB switches and the Kailh BOX switches. Switches can be removed easily at any time with the included switch puller.

Electrical Design

PCB Image

Open Source PCB

The Launch PCB is licensed GPLv3 and can be viewed in the pcb folder using KiCad.

Integrated Dock

Launch connects to a computer using the included USB-C to USB-C cable or USB-C to USB-A cable. It supports USB 3.2 Gen 2 with speeds up to 10 Gbps with either cable, provided the computer supports these speeds. It provides 2 USB-C and 2 USB-A connectors that also support USB 3.2 Gen 2, with the 10 Gbps bandwidth shared between them on demand.

Independent RGB Lighting

Each switch has an RGB LED that is independently controlled by firmware. This allows for a number of RGB LED patterns to be selected.

N-Key Rollover

The keyboard matrix uses diodes on all intersections, providing full independent scanning of each key position.

Firmware and Software

Open Source Firmware

The Launch firmware is based on QMK, licensed GPLv2, and the latest version is linked in the firmware submodule.

Open Source Software

Projects that integrate with Launch are open source software, such as the System76 Keyboard Configurator, licensed GPLv3, and fwupd, licensed LGPLv2.1.

Easy Remapping

The keyboard can be remapped at runtime using the System76 Keyboard Configurator. This utility runs on Linux, Mac OS, and Windows.

Firmware Updates

Firmware updates are supported through the fwupd project, and are distributed using the related Linux Vendor Firmware Service. Settings are stored on EEPROM and are maintained through firmware updates.

launch's People

Contributors

13r0ck avatar dlharmon avatar jackpot51 avatar jgrano avatar leviport avatar thingee avatar watchmkr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

launch's Issues

Swap PE2 and PE6

HWB#/PE2 cannot be used for the keyboard matrix, the pull-down causes keypresses

North-facing switch socket interference

Hello there!

This is just to let you know that, whether intentional or not, your board uses north facing switch sockets. This is not an issue with the included XDA profile caps, but when you switch in aftermarket caps, such as Cherry profile keycaps, interference is possible. This causes muffled sound and a bottom-out that feels mushy and uneven. Usually, north facing switch sockets are there to provide better RGB lighting when a key is "backlit" (transparent legending), but this is not the case here. This is a decently significant issue, because Cherry profile keycaps are the most popular among aftermarket keycaps. If you do a revision in the future, I recommend making your switch sockets south-facing.

[Bug] Layer LEDs stay on after pressing Fn key

Software: System76 Keyboard Configurator 1.0.0
Operating System: Windows 10 (10.0.19041 Build 19041)
Firmware Version: Launch 1.3?

Edit (2022.03.21): I've been using Pop!_OS 21.10 as my daily driver since December 2021.

My configuration is set up to turn on the LEDs for the bound keys on layers 2+. Every 13-20 presses (on average) of using the Fn key to Play/Pause the current media file, the LEDs stay on after I have let go of the Fn key. If I press the Fn key again, the LEDs turn off.

Expected Behavior: I expect the LEDs to be off when I'm not holding down the Fn key.

launch-leds-on-for-some-reason

My current configuration is below:

Launch configuration
{
  "model": "system76/launch_1",
  "version": 1,
  "map": {
    "K04": [
      "F4",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K4C": [
      "UP",
      "PGUP",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K42": [
      "X",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K44": [
      "V",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K0C": [
      "F12",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K27": [
      "U",
      "PGDN",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K03": [
      "F3",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K50": [
      "LEFT_CTRL",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K5A": [
      "DOWN",
      "PGDN",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K14": [
      "4",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K57": [
      "RIGHT_ALT",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K37": [
      "J",
      "DOWN",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K46": [
      "N",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K3B": [
      "QUOTE",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K06": [
      "F6",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K41": [
      "Z",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K21": [
      "Q",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K0A": [
      "F10",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K26": [
      "Y",
      "HOME",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K40": [
      "LEFT_SHIFT",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K52": [
      "FN",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K1D": [
      "BKSP",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K31": [
      "A",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K0B": [
      "F11",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K36": [
      "H",
      "LEFT",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K33": [
      "D",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K43": [
      "C",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K07": [
      "F7",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K2A": [
      "P",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K4B": [
      "RIGHT_SHIFT",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K54": [
      "SPACE",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K5B": [
      "RIGHT",
      "END",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K00": [
      "ESC",
      "RESET",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K0E": [
      "HOME",
      "PLAY_PAUSE",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K11": [
      "1",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K18": [
      "8",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K2C": [
      "BRACE_CLOSE",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K1B": [
      "MINUS",
      "KBD_DOWN",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K1C": [
      "EQUALS",
      "KBD_UP",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K55": [
      "SPACE",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K2E": [
      "PGDN",
      "VOLUME_DOWN",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K29": [
      "O",
      "END",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K39": [
      "L",
      "RIGHT",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K4A": [
      "SLASH",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K53": [
      "LEFT_SUPER",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K16": [
      "6",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K19": [
      "9",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K10": [
      "TICK",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K28": [
      "I",
      "PGUP",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K56": [
      "RIGHT_CTRL",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K34": [
      "F",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K35": [
      "G",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K15": [
      "5",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K32": [
      "S",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K1A": [
      "0",
      "KBD_TOGGLE",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K51": [
      "LEFT_ALT",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K2D": [
      "BACKSLASH",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K48": [
      "COMMA",
      "MEDIA_PREV",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K45": [
      "B",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K08": [
      "F8",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K0D": [
      "DEL",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K12": [
      "2",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K05": [
      "F5",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K02": [
      "F2",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K17": [
      "7",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K23": [
      "E",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K58": [
      "FN",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K59": [
      "LEFT",
      "HOME",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K38": [
      "K",
      "UP",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K13": [
      "3",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K30": [
      "CAPS",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K1E": [
      "PGUP",
      "VOLUME_UP",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K2B": [
      "BRACE_OPEN",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K3C": [
      "ENTER",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K49": [
      "PERIOD",
      "MEDIA_NEXT",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K01": [
      "F1",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K47": [
      "M",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K3A": [
      "SEMICOLON",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K20": [
      "TAB",
      "PRINT_SCREEN",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K3D": [
      "END",
      "MUTE",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K24": [
      "R",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K25": [
      "T",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K22": [
      "W",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ],
    "K09": [
      "F9",
      "ROLL_OVER",
      "ROLL_OVER",
      "ROLL_OVER"
    ]
  },
  "key_leds": {
    "K19": null,
    "K3A": null,
    "K56": null,
    "K48": null,
    "K53": null,
    "K10": null,
    "K16": null,
    "K24": null,
    "K28": null,
    "K1B": null,
    "K1D": null,
    "K5A": null,
    "K25": null,
    "K45": null,
    "K04": null,
    "K51": null,
    "K23": null,
    "K3B": null,
    "K06": null,
    "K26": null,
    "K1A": null,
    "K0A": null,
    "K34": null,
    "K52": null,
    "K36": null,
    "K2E": null,
    "K35": null,
    "K2A": null,
    "K18": null,
    "K11": null,
    "K44": null,
    "K01": null,
    "K05": null,
    "K40": null,
    "K42": null,
    "K32": null,
    "K4B": null,
    "K57": null,
    "K00": null,
    "K1E": null,
    "K17": null,
    "K2C": null,
    "K3C": null,
    "K33": null,
    "K37": null,
    "K08": null,
    "K59": null,
    "K03": null,
    "K1C": null,
    "K14": null,
    "K58": null,
    "K2B": null,
    "K39": null,
    "K47": null,
    "K20": null,
    "K09": null,
    "K30": null,
    "K0E": null,
    "K07": null,
    "K13": null,
    "K54": null,
    "K50": null,
    "K29": null,
    "K4C": null,
    "K2D": null,
    "K46": null,
    "K49": null,
    "K3D": null,
    "K43": null,
    "K15": null,
    "K0B": null,
    "K4A": null,
    "K38": null,
    "K21": null,
    "K41": null,
    "K12": null,
    "K02": null,
    "K31": null,
    "K55": null,
    "K22": null,
    "K5B": null,
    "K0C": null,
    "K27": null,
    "K0D": null
  },
  "layers": [
    {
      "mode": [
        14,
        127
      ],
      "brightness": 176,
      "color": [
        142,
        255
      ]
    },
    {
      "mode": [
        13,
        127
      ],
      "brightness": 176,
      "color": [
        142,
        255
      ]
    },
    {
      "mode": [
        13,
        127
      ],
      "brightness": 176,
      "color": [
        142,
        255
      ]
    },
    {
      "mode": [
        13,
        127
      ],
      "brightness": 176,
      "color": [
        142,
        255
      ]
    }
  ]
}
```

Firmware: Remapping key while it is held can lead to stuck key

This is easy to reproduce in the Keyboard Configurator by holding down the ctrl key (for instance) while remapping it to something else using the mouse. On releasing the key, it remains stuck, regardless of other key presses. (This state is resolved by unplugging the keyboard and plugging it back in, for an external keyboard.)

This may be easier to accidentally do with some of the new features being added to the Configurator.

QMK has clear_keyboard/clear_keyboard_but_mod/clear_keyboard_but_mods_and_keys functions, used for instance on layer switching. Not sure what is appropriate here. Also need to verify that it doesn't cause a noticeable issue with many keymap sets in a row (layout import/reset).

Feature request / bug report: Change USB-A type socket alignment

What?

From my perspective, the USB-A sockets are upside down.

Reasoning

While I was unable to (quickly) find a relevant specification entry with regards to orientation, most reference images for the socket layout have the pin connectors located at the top of the socket. The same goes for the practical application on many, if not most or even all laptops. The pin connectors are at the top.

In the current keyboard design, the connector pins are at the bottom. This would force the user to turn around the USB-A type plug in order to insert it into the socket.

Though the orientation would in many cases probably not matter, there are important benefits to have the socket the right way up.

Example

An important example is to allow for the insertion of a USB-A type security key such as promoted by the likes of Github and Google. Specifically the design of something like the Yubikey.

This would allow a user to insert the security key into the keyboard instead of the lap/desktop. This kind of key works fine on laptops because of the orientation of the USB-A type socket. However, the Launch keyboard's orientation would block a user from touching the confirmation button on the security key.

I hope you will be able to turn around the sockets... even better would be if a socket could be located on the right or left of the keyboard for easier access to the security key when you need to hit the confirmation button. ๐Ÿ˜„

1.1 V supply

Change R14 to 9.1 k to give 1.15 V.

Initial values are incorrect.

Firmware Update Issue for Launch

I'm currently on Fedora 36, And was trying to update the firmware of the Launch Keyboard. When I'm doing manual firmware update (the keyboard never flashes UNLOCK pattern since I got it half year ago even on PopOs) through the Firmware software and was giving a notification to unlock the keyboard using Fn + Esc. However, When I unlocked the keyboard, all the updates options simply disappear. (System76 Keyboard Configuration Software also lose detection of the keyboard). I'm currently flashing the keyboard using repository forked from QMK repo (not this one), if that has anything related to this problem. I also recompiled with both BOOTMAGIC on and off and resetting the keyboard via System76 Keyboard configuration software, but the same problem remains.
Below are related information of the device and the issue described above.

Before Unlock
Screenshot from 2022-08-02 01-56-43

After Unlock
Screenshot from 2022-08-02 01-57-33

request: rendered pdf schematic

I'm running kicad nightly (I think the 6.0 release should come soon) and as such have to remap a fair
amount of symbols in the schematic. It would be very helpful to this endeavor if a rendered pdf of how
it 'should' look was included in the repository in case something is not clear from the old-style symbol
names.

Multiple USB C Host Device Connections

I see that the keyboard has 3 total USB C ports including the 2 for the hub functionality. Would it be possible to repurpose those 2 extra ports to enable connections with multiple devices?

Feature/Design request: Possibility to convert from ANSI to ISO standard

Description:

It is great to hear you at system76 are producing a keyboard! From the pictures I've seem so far it looks like the keyboard will follow the ANSI (American National Standards Institute) standard. It would be great if it would be possible to "switch" to the ISO standard. It mostly affects the Enter and Shift keys. See images below.

If this is physically impossible at this stage, please consider adding this feature in the next revisions.

ISO keyboard standard:

image

ANSI layout:

image

System76 layout (looks like follows ANSI standard):

image

Split

I see that a full size is in the works (nice!). Are there any plans for a split version?

Power (USB PD)

How many watts can the keyboard handle to charge a phone for example? Does it have USB PD?

Add delay to escape key to avoid acidental reset

When working on my computer yesterday my headphones tipped over and pressed the escape key on the launch right as I plugged in the device. This was a million in one shot, but it left my keyboard in a state that seemed broken until I reset the cable a second time.

To test:
Unplug the USB-C cable from the back of the keyboard. Just as you plug the cable back in slightly tap the escape key.

Solution:
If possible adding a small delay between power and checking for the escape key press might keep the device from being reset unintentionally.

Multiple RGB effects at once?

Is it possible to configure the keyboard to have a basic "back lighting" effect, like "Spacetime", for example, and also have a "when a key is pressed" effect, such as "Splashdown" happening at the same time?

Remove reset to firmware command

This was implemented in system76/qmk_firmware@a1ab70c to make the flashing process easier.

However, this increases the risk that malicious keyboard firmware is installed without the user's consent. Therefore, remove the reset command and require the reset keycode (Fn+Esc) to be pressed, or the boot magic code (Esc while plugging in the keyboard) to reboot to the bootloader.

The risk is even higher when using an OS that does not require administrator privileges to access USB devices, such as Windows. And since we, by design so the user can customize things, do not have signed firmware - this means any application could potentially reflash the keyboard firmware.

By requiring a physical keypress to reboot the bootloader, at least the user will have to intentionally set the keyboard into this mode before firmware can be written.

Shipping to China

I'm living in China mainland, In the Checkout process, there is no China , will there be adding this country

image

Designs for the Keyboard configurator

I am not sure where else to put those designs so I am posting them here. I can move them if there is a better place for them.
Here is the link to the partially clickable prototype: https://www.figma.com/proto/YzqrbohHAbPUR5w26d6ton/Keyboard-Configurator?node-id=191%3A32666&scaling=scale-down
In this prototype you can see the dropdowns and some of the dialogs. R and Y keys can be clicked. R can be changed to P. If you click on Enter that should show the multiple select state. The idea is that the section with keys that show functions should be scrollable below the keymap. Mostly to account for the possibility that the list can get larger and to keep the keymap above in view. Green is the color that can be edited or removed to better see this functionality.

The first view is the page that should be shown if there are multiple keyboards connected. If a user has only one keyboard the app can open on the configurator view right away and show the current layout.
When the current layout is deleted show the confirmation dialog and then change the view to the next layout. The last layout can not be deleted and the Delete functionality in the menu should be disabled.
"Save without Applying" should be disabled if the user is changing the current layout. One can either Save & apply Changes or Save as at this point.

Use Ctrl + 1, Ctrl + 2, Ctrl + 3, Ctrl + 4 to switch between layers. Include those shortcuts and the shortcuts from the hamburger menu in the Keyboard Shortcuts dialog that should follow regular GNOME shortcut app dialog styling.

Share button should allow users to share the link to the Github where the configuration is stored. Sync changes button should save the configuration on Github. I am not yet quite sure what the process for this should be. This is something we would need to figure out.

The LEDs are shown with the 3px border on the inside of the key. The idea is to use this border to show the chosen pattern. The prototype has "Select layer LED pattern" dropdown but there will probably be a pattern by default for the keyboards that would have it.
If the keyboard doesn't allow any patterns the dropdown should be disabled. The same is true for the per key LED settings. If the keyboard doesn't allow per key LED settings, those controls should be disabled. Or potentially shouldn't even be displayed.

The keys in the section that shows the functions are grouped. If we add more functions we should see either what existing group they belong to or put them in a new group. Controls like Brightness can be shown with symbols to save space if we think it would still be clear to users what they mean.
The keycaps here have two sizes: 36x36px and 60x36px. Assuming the 3px border can be used to indicate selected state, there might be an additional 1px padding between this border and text.

To show the selected state of the keys on the keymap above: set background color to white, use checkmark in the left bottom corner and darken all deselected keys (I merely used the overlay. I can give exact details for what color I used and at what opacity if needed).

I am including separate mockups here below as well.
Keyboards
conf-layer1
conf-layer-key-selected-1
conf-layer1-key-pattern
conf-layer-layer-color
conf-layer1 (1)
dialog-delete
new-layout
new-layout (1)
conf-layer1-applied

Add caps lock LED indicator

I am not sure if this issue is specific to launch firmware or the QMK keyboard configurator.
Considering that keyboard has bunch of LEDs, it would be useful if the keyboard changed color when caps lock is on.

Confusing behavior of brightness keys with regard to persistance

Setting brightness with brightness keys is not persistent. But setting brightness in the Configurator is. This results in confusing behavior.

Normally brightness set by key isn't persistent:

  • Adjust brightness using key binding
  • Unplug keyboard and plug back in
  • Keyboard brightness is reset to previous value

Except if you open the configurator:

  • Adjust brightness using key binding
  • Open and close keyboard configurator, without changing anything
  • Unplug keyboard and plug back in
  • Keyboard brightness has value set earlier, since configurator send command to persist it

This isn't a huge problem. But it's an inconsistency that should probably be addressed. Not sure how we want to address it. The brightness keys could save the setting persistently. Or there could be no persistant brightness setting. Or there could be a separate persistent "default" brightness in addition to the current value.

Selma test program

Launch's Selma test program removes keymap if the operator does not press the stop button after initiating the switch test. Can we change this to a set duration that doesnt require input from the operator? The physical test takes 2 minutes.

LED Per Key Solid Configuration

The per-key solid configuration screen seemingly lacks the ability to select all keys which would be really useful for setting the base color scheme. I know you can shift + click to select multiple but that's arduous when attempting to select all keys.

Failing to flash the Launch keyboard's firmware.

Following the documentation I'll link to on the bottom. I modified the keymap.c file the way I wanted it. The problem is the instructions to send the new .hex file to the keyboard aren't working. It compiles just fine but I keep getting the ERROR: Bootloader not found. Trying again in 5s. even after unplugging the keyboard and plugging it back in while holding the ESC key. The keyboard lights don't turn on but the error persists and nothing gets uploaded to the keyboard.

https://github.com/system76/qmk_firmware/blob/master/keyboards/system76/launch_1/README.md

I realize this probably isn't the best place to post this problem but I can't find a better place. All the official social platforms to engage with the company and its community seem to be proprietary social media platforms like Facebook, Twitter, and Telegram. I don't want to be a part of those places.

Use alternative LED part

The current part makes the switch not sit correctly in the socket. The LEDs will need to be moved to the other side of the board, where they will shine through a hole.

Key matrix ESD protection

ESD protection for the key matrix was requested and is not currently implemented.

Options:
use the PUSB3FR4Z quad ESD diode as used on the USB 3.1 lines. It's $0.105 in quantity. Advantage: shorter BOM
use something like NXP PESD3V3L4UW,115. It's $0.055 in quantity. Advantage, cost, simpler package to solder.

ergonomics, split design

Wow, this looks great.... and with an ergonomical split design I would be cheering with a megaphone at how awesome this is and you are for making it. Any chance you'll make one that's ergonomically designed?

USB 4

Maybe its time for USB 4 instead of USB 3.2 or what do you think?

Solder bridging on USB7206

All three prototypes had numerous solder bridges on the USB7206.

The paste mask opening and stencil thickness was as specified in the data sheet.

Reducing the paste mask opening size by 25 ฮผm has proven helpful on past 0.4 mm QFN parts.

There could have been some paste blown from the exposed pad to the outside pads. Filled and plated vias would be ideal, but expensive. Consider opening the bottom of these vias and/or capping the tops with solder mask.

IMG_0149 resized

I2S audio is enabled by default

The hub appears as an audio device and was chosen as the default over motherboard audio. The register I2S_FEAT_SEL needs to be written to 0 (disabled). The default at reset is 3 (in and out enabled).

Where's the link to buy this one ?

In the readme there's no link to a store or form to buy this one.
Also, it doesn't say whether this keyboard is just in the design phase, or already in production.
Can you put the enough information in your readme to clarify this questions ?

  • is it on sale already ?
  • is this only a design ?
  • where are the schemas to build one ?
  • do I have to build the PCB using PCB printing services ?
  • do you have plans to sell this one ?

My keyboard does not work

My keyboard has been working perfectly for a year. Yesterday it was working fine and today it does not work, I have not hit it or dropped it. I tested it on another computer and it did not work, also I changed the USB cable and it did not work either.
The dmesg command does not show anything when I plug in/off.
Any thoughts or recommendations?

Feature Request: Toggle NKRO On/Off

Hi,

I wonder if it's possible to support the dynamic toggling of NKRO.

This is an important feature for multi-language macOS users because macOS has problems handling CAPS when NKRO is enabled.

More specifically, macOS has a feature that supports switching the input method from and to U.S. by a short press of CAPS, and a long press of CAPS will lock all input to uppercase. But when NKRO is enabled, a short press of CAPS will be interpreted(by macOS) as both a short and long press, and thus macOS will switch the input method and then lock the caps.

More discussion can be found in an issue in the upstream qmk_firmware repo: qmk/qmk_firmware#15178.

I build the firmware on my own to disable NKRO in keyboards/system76/launch_1/rules.mk, but this will also disable system76_ec_eeprom_op in keyboards/system76/system76_ec.c because eeprom_update_block/eeprom_read_block is only defined when ENABLE_NKRO = yes. Disabling system76_ec_eeprom_op will make the configurator unable to save the LED configuration(but the keymap is fine).

Based on the qmk_firmware wiki, NKRO should be able to be disabled dynamically: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work. But the Magic N command doesn't seem to work on the launch firmware.

If it is possible to support this feature?

Cheers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.