summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-23[Keyboard] Add GTM Pad macropad (#7123)J.Flanagan
* initial commit begin development of Grand Theft Macro Pad (2key2crawl clone) * Minor Changes Changes to readme.md Changes to config.h matrix pins Changes to gtm.h layout Changes to rules.mk * initial commit begin development of Grand Theft Macro Pad (2key2crawl clone) * Minor Changes Changes to readme.md Changes to config.h matrix pins Changes to gtm.h layout Changes to rules.mk * Update keyboards/sck/gtm/readme.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/readme.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/sck/gtm/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Changes to gtm.h Changes to layout to be correct for matrix_cols and matrix_col_pins * Minor Changes Removed rotary encoder index in keymaps per suggestion
2019-10-23Support for the upcoming 1UP Keyboards Sweet 16 rev2 (#7125)skullydazed
* Support for the upcoming 1up Keyboards Sweet 16 rev2 * Update keyboards/1upkeyboards/sweet16/rev1/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/1upkeyboards/sweet16/rev1/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/1upkeyboards/sweet16/rev2/promicro/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/1upkeyboards/sweet16/rev2/proton_c/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/1upkeyboards/sweet16/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/1upkeyboards/sweet16/rev1/rev1.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rev1/rev1.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rev1/rev1.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rev1/rev1.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rev1/rev1.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rev1/rev1.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/1upkeyboards/sweet16/rev1/rules.mk Co-Authored-By: Drashna Jaelre <drashna@live.com> * Update keyboards/1upkeyboards/sweet16/rev2/promicro/rules.mk Co-Authored-By: Drashna Jaelre <drashna@live.com> * tweak readme wording per @noroadsleft * Change rev to V * remove extraneous info.json files
2019-10-23[Keyboard] add new keyboard hnah40rgb (#7083)vuhopkep
* add new keyboard hnah40rgb * update * Update hnah40rgb.c * update
2019-10-23[Keyboard] Blackplum a.k.a IMKG68 - new 68% mechanical keyboard (#7122)Eriq M. Adams
* Add blackplum firmware blackplum firmware * Delete blackplum.c * Delete blackplum.h * Delete config.h * Delete info.json * Delete rules.mk * Delete keymap.c * Update readme.md * Delete readme.md * Add Blackplum * Add image: blackplum layout * Update readme.md * Update readme.md * remove _WINLCK layer, replaced with custom_keycodes * change #define LAYOUT_68 to #define LAYOUT_68_ansi * change DEBOUNCING_DELAY to DEBOUNCE, remove IS_COMMAND() * change keyboard_name, maintainer, url, width height * change some comments * Update readme * LAYOUTS = 68_ansi * update layout_68_ansi * Change LAYOUT_68 to LAYOUT_68_ansi Co-Authored-By: fauxpark <fauxpark@gmail.com> * Fix Bug * remove extern keymap_config_t keymap_config; * Update config.h * Update config.h * Update config.h * Update keyboards/blackplum/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update rules.mk * Update rules.mk * Update readme.md * Update readme.md
2019-10-23Support for the Clueboard California macropad (#7127)skullydazed
* Support for the Clueboard California macropad * Update keyboards/clueboard/california/config.h Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-23[Keyboard] Naked48/60 Configurator bugfix (#7131)Salicylic-acid3
Support for QMK configurator of keyboard Naked48 / 60. Related: Pull request to configurator [Keyboard] Add keyboard Naked48 / 60 # 549
2019-10-23[Keyboard] 1up60rgb: fix LAYOUT_60_iso json tree (#7126)noroadsleft
ISO Enter was out of sequence.
2019-10-23[Keymap] Updating Nordic ergo keymap (#7107)Pentti Laitinen
* Update ergodox infinity nordic_ergo keymap - Add missing important keys to base layer. - Move arrow keys around as the original position was not optimal. - Fix some code styling issues. * Fix indentation to 4 spaces * More code style fixes - Formated the methods in the nordic ergo keymap. * Fix QMK code style issues - Change layer defines to enums. - Split enums to multi-line. - Remove non required switch case.
2019-10-22Fix held key getting stuck when NKRO is toggled (#6570)just-another-jxliu
* Fix held key getting stuck when NKRO is toggled * Updated file to latest qmk version and added fix to cases MAGIC_UNHOST_NKRO & MAGIC_HOST_NKRO as well. * Revert merged quantum.c
2019-10-22[Keyboard] Owlet60 Updates (#7103)noroadsleft
* Owlet60 updates Co-Authored-By: noroadsleft <xxiinophobia@yahoo.com> * fix url in info.json
2019-10-22[Keyboard] Keyboard Naked60 Update (#7106)Salicylic-acid3
* [Keyboard] Keyboard Naked60 Update Support for SPLIT_KEYBOARD Keymap updates * Update keyboards/naked60/readme.md Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/config.h Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/rev1.h Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/rev1.h Co-Authored-By: Joel Challis <git@zvecr.com>
2019-10-22[Keymap] Add userspace and personal keymaps (#7093)Michael Guterl
* Add Planck keymap and custom keycodes to userspace * Add Preonic keymap and extract common ortho layers and keycodes * Add Leaf60 WKL keymap * Add M60-A keymap * Add Levinson keymap * Fix links in personal readmes * Use flash target * Remove duplicate definition Co-Authored-By: fauxpark <fauxpark@gmail.com> * Remove superfluous line endings * Planck and preonic encoder should have the same behavior * Use higher level API Co-Authored-By: fauxpark <fauxpark@gmail.com> * Use layouts to reduce planck/levinson duplication * Update flash instructions for levinson
2019-10-22Add ISO layout macro for KBD67 rev2 (#7113)fauxpark
2019-10-22update VID and PID for h87a (#7100)Josh Hinnebusch
2019-10-22add bdn9/eosti keymap (#7105)Reid Sox-Harris
2019-10-22Remove apostrophe from various abbreviations' plural forms (#7050)Max Rumpf
While this was historically a valid possibility, nowadays, it reads kinda weird, and the [Oxford Dictionaries Online suggests to avoid it](https://english.stackexchange.com/a/56010). Thus, I removed it everywhere I found it.
2019-10-21Cleanup rules.mk for 32U4 keyboards, I-K (#7097)fauxpark
* Cleanup rules.mk for 32U4 keyboards, I-K * Clean up ivy rules.mk
2019-10-21[Keyboard] Added layout, configured bluetooth (Hacked Motospeed handwired) ↵Deckweiss
(#7084) * Added more intuitive layout with bluetooth commands
2019-10-21[Keymap] add halvves let's split keymap (#7063)halvves
* add halvves let's split keymap * [cr] - review requests from @fauxpark * cleanup spacing, add transparent for spaces in util layer * [cr] - use new core funcs / @fauxpark & @drashna * enable EE_HANDS * [cr] - switch to definable mask for layer state (@drashna)
2019-10-21[Keymap] Ergodox EZ and dactyl-manuform keymaps for rishka (#7051)Adam Perlman
* Setup keymaps and userspace for Rishka * Creates a keymap for Ergodox Ez, bdn9 and Dactyl Manuform 5x6 * Update bdn9 config with suggested change * Add pragma to other header files * Apply suggestions from code review Co-Authored-By: fauxpark <fauxpark@gmail.com> * Updates from review from fauxpark * Updates from review Swap to keyboard_post_init, layer_state_t and use layer state for encoder * Updates from review Swap to keyboard_post_init, layer_state_t and use layer state for encoder * Add missing change from review
2019-10-22Add a short explanation to Zadig the troubleshooting section (#7110)kuchosauronad0
* Add a short explanation to the troubleshooting section While translating I noticed that the troubleshooting section could use a little bit more explanation. @Yanfali was so kind to chime in on this on discord and explained that this was ment for people who accidently forget to put their board in bootloader mode, so I added this as a possible common mistake. Also fixed the spelling of Msys2 to MSYS2 and Halfkay to HalfKay as these are the official spellings they use themselves. * Update driver_installation_zadig.md * Update driver_installation_zadig.md English is hard. * Update docs/driver_installation_zadig.md Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update docs/driver_installation_zadig.md Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-21[Keyboard] 40percentclub 4 pack macropad keyboard (#7088)Arda Kılıçdağı
* 4 pack macropad layout added * Update keyboards/40percentclub/4pack/keymaps/default/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/40percentclub/4pack/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/40percentclub/4pack/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/40percentclub/4pack/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update keyboards/40percentclub/4pack/readme.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * remove unnecessary comments, remove firmware impact numbers, align comments * remove unnecessary readme paragraphs * pinout changed with direct pins instead of matrix * typo fixed on led method name * leds are now handled by backlight feture, led.c removed, info.json added, flash instructions updated
2019-10-21[Keymap] Personal layout for the Wonderland (#7095)Rys Sommefeldt
2019-10-22Change V60 Polestar RGB timer to 3 (#7099)fauxpark
2019-10-22Naked60 Configurator bugfix (#7108)noroadsleft
* remove extra commas * fix label for comma key * switch to debug linting (one key per line)
2019-10-20[Keyboard] Use GPIO macros for E6 LED in Planck and Preonic default keymaps ↵fauxpark
(#7098)
2019-10-20[Keymap] catrielmuller keymap for the dztech/dz65rgb (#7015)Catriel Müller
* Catriel Müller - Dz65rgb personal keymap * - Removed backslashes - Changed IS_LED_ON to IS_HOST_LED_ON - Removed empty unused hooks
2019-10-20Cleanup rules.mk for 32U4 keyboards, H (#7030)fauxpark
* Cleanup rules.mk for 32U4 keyboards, H * Change some boards incorrectly assumed to be halfkay
2019-10-20[Keymap] updates to madhatter keymap - project keyboard alice pcb (#7092)Sid Carter
* change arrows keys around * move arrows and layer tap * mouse keys and other mods * add readme and add media keys too
2019-10-20[Keyboard] Keyboard Naked48 Update (#7085)Salicylic-acid3
* Keyboard Naked48 Update Support for SPLIT_KEYBOARD Readme updates Keymap updates Support for RGB matrix (salicylic keymap) * Keymap Update Change KC_NO to KC_TRANSPARENT. Update the old part.
2019-10-20[Keymap] Assorted personal keymap and layout updates (#7082)Jonathan Rascher
* Enable PERMISSIVE_HOLD and TAPPING_FORCE_HOLD * Fix indentation in userspace * Shuffle around more Lily58 symbol keys * Reformat KBD67 keymap and KLE images * Fix Lily58 lower layer image * Reformat Quefrency keymap and KLE images * Fix KBD67 KLE images... again * Add KLE links for Quefrency * Reformat 60% layouts and KLE images * Move Super key back to right half of Lily58 * Move Lily58 ins/del out of the way of numbers * Fix bottom row of Lily58 KLE image
2019-10-20[Keymap] Romain's Preonic layout (#7067)Romain Gehrig
* Add customized preonic layout * Add a README detailing a bit the differences from the default preonic layout * Apply suggestions from code review Co-Authored-By: fauxpark <fauxpark@gmail.com> * Remove unnecessary end-of-line backslashes * Import fix for startup sound (thanks @drashna) * Remove unnecessary layers and keycodes * Bring back the _QWERTY layer code Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
2019-10-20[Keymap] add iris/eosti keymap (#7056)Reid Sox-Harris
2019-10-20[Keymap] Ergodash keymap for yet-another-developer (#7046)Yet Another Developer
* Initialize ergodash rev 1 keymap ./util/new_keymap.sh ergodash/rev1 yet-another-developer * Add user space configurations referenced from drashna * Start community layout for ergodash in ortho_5x14 * Remove unused layers * Add userspace layers * Add Userspace gitignore Hide Secrets * Remove userspace unused drashna features * Scrap default keymap and follow drashna's template * Add code referenced from kuchosauronad0 * Make sure that the author is named Developer * Replace middle keys del and bksp with curly brace * Reduce ONESHOT_TIMEOUT from 3sec to 2sec * Remove adjust key AG_SWAP * Disable UNICODEMAP_ENABLE, remove code causing build fail * Increase TAPPING_TERM to 240 Reason: Because Space is also LOWER, space sometimes not registering. PS: I dont want to #define RETRO_TAPPING yet * Update KC_MAKE to use :flash * Remove TAP_ONCE, use tap_code Signed-off-by: Developer <anotherdeveloper@icloud.com> * Remove redundant code implementation of keyboard_post_init_user https://github.com/qmk/qmk_firmware/pull/7046 users/yet-another-developer/leader.c ``` static bool has_ran_yet; if (!has_ran_yet) { has_ran_yet = true; startup_user(); ``` Comment for lines +11 – +14 @drashna: Not needed anymore. You can use keyboard_post_init_user now. Signed-off-by: Developer <anotherdeveloper@icloud.com>
2019-10-20Fix detection of ModemManager (#7076)Harry Wada
2019-10-20Add pok3r-like keymap for dz60. (#7078)Alan Berndt
* Add pok3r-like keymap for dz60. * Replace KC_TRNS with underscores
2019-10-18[Keyboard] update encoder function, info.json data (#7035)vuhopkep
* update encoder function, info.json data * Update rules.mk
2019-10-18[Keymap] Tominabox1 userspace creation (#7014)tominabox1
* rebaselined the whole fork and added cool matrix animations * Updated dfu bootloader rules, oleds working on test map * Moving test branch into main moving my _test branch files into the main since the repo is now in the dev branch, don't see any reason to keep separate folders. * Update keymap.c Adding DOT to number layer * added LED sleeping * working on getting matrix rgb to sleep upon usb suspend uploading to github for qmk staff help * Added master sleep on usb suspend Unfortunately the sleep function does not work on the slave side so will probably revert this change later * bringing hhkb config up to current with other tominabox1 configs * Update config.h since master side is the only one that sleeps, going to disable this for now. * testing oled stuff * Update rules.mk * tinkering with oled still * Finally fixed custom image with corne doug * Adding keymap to dimple instead of screwing up the upstream references. * Changed oled image to peepo ggers * working on oled sleep * Update keymap.c * fixes oled wake/sleep issues * Adding :b: and BEPIS macros * Update .gitignore * Cleaning up and improving documentation * Update keymap.c * Adding my minivan keymap * Fixed error on keymap * fixed OLEDs not turning on and moved tapping term to the keymap file * Changed tapping term from 200 to 250 * Revised Fkey layers, arrows, question mark locations * Update keymap.c * tweaked tapping term and types on CRKBD, revised layout on HHKB * Update keymap.c * general code cleanup, keymap displays * Set up userspace for common keymap elements * tapping term stuff for shift * testing * Fixed new tapdance for accessing number and fkey layers * Update tominabox1.h * stuff * fixing function calls for userspace * cleaning up crkbd config and moving stuff to userspace * finally fixed oled lightup issues * cleaning up a few maps and rules * Removing permissive hold and returning spacefn to all boards. * Settting up wrapper keymaps for Dimple, Minivan, and Corne Wrappers * small tweaks * Update wrappers.h * finishing wrappers on Minivan and Dimple * Revised tapping term definition Providing additional tapping term config for CRKBD only. * Code cleanup and documentation * Update readme.md * Update readme.md * Wrapers and continued code cleanup and documentation * moved oled py scripts to user folder * completed wrapper implementation of CRKBD * added matrix startup mode - not working yet pending upstream changes * removed unused code in tominabox1.c * Fixing custom keycodes and tap dance indices fixed custom keycodes and tap dance indices Adding beginning of dimple RGB matrix definition changed oled on corne to scrolling matrix thing Added copy pasta * Secondary layer tweaks Swapping hands of numbers and symbols as well as tweaking tapping terms accordingly * Update tominabox1.c Continued refinement of tapping term to support better right hand symbol access. * Fixes from pr 7014 Removed gitignore data from qmk master Reverted changes to Drashna's crkbd keymap Accepted changes to crkbd keymap Added ignore to hhkb keymap - I think I need this because Teensy. Will revisit another time * Removing hhkb keymap for rework * Adding back hhkb keymap Re-adding hhkb folder with ignores * Reverting changes to Dimple default totally did not intend to modify these * Update keymap.c Reverting changes to Drashna's corne map * Accepting recommended changes * Reduced tap hold caps delay moved bootmagic enable to general usage Revised tapping terms Removed unused keycode defs * bootmagic * Update rules.mk * Fixed permissions (support 7014) and bootmagic addition Fixed permissions on Drashna's keymap and Dimple default keymap files. Adding bootmagic to my crkbd config. * Fixing permissions
2019-10-18Remove build option firmware size impacts (#6947)Amber Holly
* Update rules.mk template to remove build option size impacts * Add rules.mk cleaning script * Update all rules.mk files to remove build option firmware size impact messages * Remove references to feature filesize in documentation * Revert "Update all rules.mk files to remove build option firmware size impact messages" This reverts commit 7cfe70976bcc223bf47c960b2e6af8596df80a32. * Fix regex in cleanup script and exclude keymaps/ directories * Update quantum/template/avr/rules.mk Fixed missing tabs/spaces. Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-18[Keymap] Mekberg kbd6x keymap (#7061)Endemoniada
* First draft of my layout * Improved layout and cleanup of files * Update keymap and add rules * Add keymap.h with permissive_hold setting * Rename keymap.h to correct name config.h * Add next/prev and special lock key to Fn layer * Use correct modifier in MY_LOCK command * Removed unnecessary filler defines * Add build instructions to README * Move RGB controls to more logical up/down key positions, move next/prev controls, remove del from Fn layer * Fix wrong placeholders and fix up formatting * Remove unused code * Clarify comments on custom defines * Update keyboards/kbdfans/kbd6x/keymaps/mekberg/rules.mk Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-10-18[Keymap] Initial commit of KL1RL keyboard layout (#7060)KL1RL
* Inital commit * Add changes suggest by fauxpark. Tested for normal function
2019-10-18Add python-pip as package dependency for archlinux (#7041)Yang Li
2019-10-18[Keymap] Custom Planck layout for the Planck (#7036)Andy Smith
* Version 1 of keymappings * Adding updated keymappings * Adding hash/pound symbol to layer * Removing broken macros * Adding to readme. Amending value of pound sign * Changing language in readme * Addressing PR comments. Removing unneeded code, corrected syntax * Removing commented out code and fixing white space issues * Small clean up to readme
2019-10-18[Docs] Fix incorrect spacing on Coding Conventions page (#7058)Drashna Jaelre
2019-10-18Caps lock indicator moved from keymap (#7070)Yan-Fa Li
- to keyboard so it works in configurator
2019-10-18Add a via compatible keymap (#7062)Yan-Fa Li
* Add a via compatible keymap * Disable VIA on default for configurator - use the via keymap if you want via support * Move wilba dep to keymap avoid breaking community - moves via specific includes into the _via keymap - fixes configurator builds
2019-10-17SPLIT - Remove NO_USB_STARTUP_CHECK requirement for usb detection (#7053)Joel Challis
* Avoid NO_USB_STARTUP_CHECK - Disable USB as checks seem to enable it somehow * Update quantum/split_common/split_util.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Also remove NO_USB_STARTUP_CHECK from vitamins_included/rev1
2019-10-17[Keyboard] Move vitamins included rev1 to split_common (#7052)Mikkel Jeppesen
* Initial work to move to split_common * Fixed serial pin
2019-10-17Move tmk_core/common/backlight to quantum/backlight (#6710)Joel Challis
* Move tmk_core/common/backlight to quantum/backlight * Add guards to backlight inclusion * Add guards to backlight inclusion * Update backlight guards on clueboard/60 * Use full paths to avoid vpath issues
2019-10-16[Keymap] Drashna's Hardware Features Experimentations (#6920)Drashna Jaelre
* Change RGBLight pin for Planck Light Move it to A0, so that the SPI? pins are available for BT hackery * Add QMK DFU bootloader info * Add Solenoid * Disable annoying white LED on bottom * Enable Solenoid on Corne * Remove bounds for animations * Increase debounce for Ergodox EZ to reduce repeat key issues * Set swap hands key to be a hold-tap key This way, it's not ANNOYING and doesn't swap the hands inteniontally * Move MT Alt in Corne keymap * Re-Add fine tuned control of secrets * Squash mods to single row * Add LRA settings to haptic feedback settings for Rev6 * Fix issue with non-Planck EZ keymaps * Add 40 Percent Nano with Analog Joystick * Add Collide39 keymap * Fix OLED printing to be more flavorful * Fix up Iris GamePad and come cleanup * Expand OLED char map further * Add modded characters to keylogger * Here be dragons Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Fix up rules for community layouts * Some more OLED tweaks * Add mod mask check function * Change QMK DFU Audio pin to be correct * Use manual STM config instead of CTPC for Collide 39